20 febbraio 2008

Bug nei form di login ASP

Ho scoperto, leggendo www.webmasterpoint.org, un bug nei form di login in asp per l'accesso ad una area riservata.

Infatti inserendo una certa username e password è possibile accedere in molti sistemi che prevedono appunto un controllo dell'esistenza di un utente.
Uno dei sistemi più famosi afflitto da questo bug è AdMentor in tutte le sue versioni.

Il problema sta nel fatto che inserendo come username e password il seguente codice:

'OR''='
(apice singolo, OR, apice singolo, apice singolo, uguale, apice singolo)

Ecco quindi che possiamo effettuare un semplice controllo sull'username e la password inserite che può essere simile a :

username = Request.Form("username")
If InStr(username,"=") Then
Response.redirect "errore.asp"
End If

e lo stesso controllo sulla password.
In questo modo sarà impossibile inserire qualsiasi username e password che presentano un uguale (=), carattere spesso vietato nell'uso di dati come username e password appunto.

Perchè si riesce ad entrare nel sistema? Semplice perchè in questo modo la stringa che effettua il controllo:
SELECT * FROM utenti WHERE username = '" & username & "' AND password = '" & password & "'"
che diventerà
SELECT * FROM utenti WHERE username = ''OR''='' AND password = ''OR''=''"

Problema segnalato da Luca Bigon a webmasterpoint che ha ottenuto l' "informazione ufficiale" da : SevurityFocus.
Fonte: http://www.webmasterpoint.org/asp/pratica/51.asp

2 commenti:

Anonimo ha detto...

Non si tratta di bug di ASP ma di pessima programmazione.
Si chiama SQL Injection e ne sono affetti tutti quei siti che costruiscono query SQL concatenando stringhe prese dall'input dell'utente anzichè usare i parametri.
Purtroppo ce ne sono molti di siti che soffrono di questo problema nonostante sia una delle regole base di sicurezza che si imparano nei corsi per principianti.
Questo la dice lunga sulla qualità dei programmatori di siti web (o presunti tali).
Anche riportare la notizia come bug di ASP rivela una scarsa professionalità informatica. Punto.

Sab ha detto...

Ciao, hai ragione non è un bug di asp ma un bug dei form di login fatti in asp. Ed è quello che ho scritto. Punto