Newsgroup: it.scienza.informatica
Titolo: Leggerezza del S.O. nell'assegnamento delle porte agli utenti

Per chi non ci avesse mai pensato, propongo una riflessione circa la
possibilità di sfruttare l'assegnamento delle porte, in modo
"malevolo", da parte di un attaccante.
Il documento orginale è reperibile presso il sito
http://www.rosiello.org
 sezione bugs.
Abstract
Questo documento evidenzia la possibilità per un utente di ottenere
l'assegnamento di una porta, precedentemente usata da un altro utente,
con scopi malevoli.
I. BACKGROUND
Il problema viene affrontato attraverso un approccio pratico della
situazione, al fine di ottenere un'idea chiara dell'essenza
dell'argomento. A questo punto, questa tipologia di attacco può essere
estesa in tutti i contesti simili a quello analizzato.
Per esemplificare il tutto è stato scelto un irc bouncer o irc bot. 
Gli irc bouncer sono utilizzati come "gateway" per collegarsi sui
server irc. Vi sono molti vantaggi nell'impiegarli quali ad esempio
quello di non mostrare il proprio indirizzo ip in rete, esponendosi ad
attacchi indesiderati e quant'altro di simile.
II. DESCRIZIONE
Sfruttando le impostazioni di default degli irc bouncer (porta in
ascolto, banner, noti messaggi di risposta, etc.), è possibile
simularne l'interazione con l'utente, al fine di ottenere dati della
vittima, come ad esempio la sua password.
III. ANALISI 
I presupposti per attuare un simile attacco sono i seguenti: 
1) conoscere la porta del bouncer della vittima;
2) conoscere i messaggi di risposta del bouncer;
3) disporre di un account sulla stessa macchina della vittima;
L'attaccante potrebbe a questo punto realizzare un simulatore del
bouncer usato dalla vittima, che si porrà in ascolto sulla stessa
porta del vero bouncer. Dato che la porta risulterà occupata, in
quanto usata dal vero bouncer, il simulatore non riuscirà a partire,
ma basterà aggiungerlo in crontab per assicurarsi che "prima o poi"
partirà. Quando la macchina effettuerà un reboot (accidentale,
volontario o doloso) il programma simulatore partirà prima del vero
bouncer, registrando i dati dell'ignara vittima che penserà di
collegarsi al suo software.
IV. DETENZIONE
La maggior parte dei sistemi operativi sono vulnerabili a questa
metodologia di attacco. Infatti esso non è un bug vero e proprio. Un
intervento venne realizzato per difendere le porte del root (gli
utenti non possono eseguire una bind() per le porte <1024) ma non
quelle degli utenti.
Le principali vittime potrebbero essere gli shell provider o chi vende
servizi internet.
V. FIX
Il problema esiste perchè gli utenti possono ottenere qualsiasi porta
maggiore alla 1024.
Una possibile soluzione, proposta da Rosiello Security, è quella di
assegnare un range di porte per ogni utente, attraverso una semplice
funzione matematica.
Fixbind, di seguito trattato, non è "la soluzione" ma solo un esempio
di come sia possibile controllare la SYS_bind call per i nostri scopi.
La scelta di fermarsi all' uid<555 è una scelta di design (non essendo
un prodotto commerciale ma solo un programma d'esempio), e non sono
ben accette critiche demenziali al riguardo.
Definizione della soluzione proposta con linguaggio logico matematico
del primo ordine:
A1. base_port = first_port+(step*uid) => base_port-1 < port_range <
base_port+step
A2. assign_port(uid, port) <=> base_port-1 < port < base_port+step &&
uid < 555
Il software è reperibile presso il seguente url:
http://www.rosiello.org/archivio/fixbind.c
VI. CREDITI 
Angelo Rosiello 
ang...@rosiello.org
 
Rosiello Security
http://www.rosiello.org

ERRATA CORRIGE
Ho commesso un errore circa il titolo del post che può essere opinabile.
E' sicuramente piu' appropriato il seguente:
"Attacco shadow software ancora attuabile"