Secondo rapporti dei media , un utente malintenzionato può
- carica una libreria su una condivisione Samba e poi
- apre una named pipe il cui nome equivale al percorso locale della libreria caricata
per eseguire da remoto il codice contenuto nella libreria.
Come funziona? Si tratta di un overflow del buffer "classico"? Oppure Samba è ingannato nell'eseguire un codice di caricamento delle librerie legittimo? Se sì, come? C'è qualcosa che noi sviluppatori possiamo imparare da questo? Ho controllato le solite risorse online, ma contengono principalmente informazioni su come proteggersi se sei un utente di Samba.
Cercando di trovare la risposta, ho esaminato cerotto :
--- a/source3/rpc_server/srv_pipe.c
+++ b/source3/rpc_server/srv_pipe.c
@@ -475,6 +475,11 @@ bool is_known_pipename(const char *pipename, struct ndr_syntax_id *syntax)
{
NTSTATUS status;
+ if (strchr(pipename, '/')) {
+ DEBUG(1, ("Refusing open on pipe %s\n", pipename));
+ return false;
+ }
+
if (lp_disable_spoolss() && strequal(pipename, "spoolss")) {
DEBUG(10, ("refusing spoolss access\n"));
return false;
--
Ma, a quanto pare, la patch aggiunge solo ulteriore validazione e non mostra la "parte succosa" in cui è caricata la libreria malevola.