Quando la sicurezza è un optional
Martedì 17 Luglio 2007 - 10:36
di Simone Carletti

Uno degli aspetti fondamentali quando si sviluppa un applicativo web è senz’altro la sicurezza.
Quando poi si interagisce con un database per creare piattaforme più o meno complesse ecco che garantire una stabilità all’applicazione non è più un accessorio ma un’esigenza.
Così, quando mi trovo davanti a situazioni come quella appena capitata non posso che rimanere allibito!
Scena: Un mio collega mi passa l’URL di un sito di un nostro cliente per pianificare la strategia SEO. Su messenger accompagna l’URL con un commento del tipo: questa non te la puoi proprio perdere! Apro messenger, carico l’URL e cosa vedo? Il CMS del cliente presenta un URL del tipo
/lista_prodotti.asp?strSQL=Select+%2A+From+PRODOTTI+Where+visibile+%3D+1
Gulp! L’intera SQL passata via querystring in bella mostra. Non ho provato ad usare uno statement DELETE o UPDATE, peggio ancora DROP, ho paura delle conseguenze.
Giusto per curiosità provo a cambiare un valore numerico con una stringa, con lo scopo di generare un innocuo errore.
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]
Il nome di colonna ‘xyz’ non è valido.
Eh sì, chiedere un controllo sull’integrità dei campi era troppo.
Si tratterà di un caso sporadico mi dico. Accedo al sito della web agency e scopro che si tratta nientemeno di un CMS! Inutile dirvi che una semplice query su Google per allinurl:strSQL=SELECT (Nb. la query è fittizia per preservare la “sicurezza” del cliente) restituisce una lista completa di tutti i clienti della web agency che attualmente usano il CMS “esplosivo”.
A questo punto, sconfortato dal vedere così tanta incapacità di programmazione e sviluppo in un colpo solo, mi viene in mente una cosa: ma saranno gli unici?
Proprio no.
Ancora una volta mi lancio su Google e cerco di individuare una semplice sintassi che mi restituisca una possibile lista di pagine con SQL passato via querystring: allinurl:sql select from where
Vi lascio immaginare, senza neppure necessità di troppa fantasia, quali danni potrebbe causare un utente un po’ più smaliziato…
Ebbene sì, la sicurezza non è un optional!
Categoria: Sicurezza | Permalink
Commenti
1
mio dio… questo significa proprio non saper fare il proprio lavoro… oppure chi la fatto non ha più speranze.
# - postato da Eduardo - 17 Luglio 2007 - 11:08
2
questa è comica! potevano a che c’erano inserire nome utente e password del db nell’url, almeno davano totalmente le chiavi a tutti.
# - postato da smal - 17 Luglio 2007 - 11:27
3
il problema è che se l’ha fatto un CMS….che bordello. Non saper programmare in maniera semplice è un danno, usare cms baggati e non saper dove mettere le mani..è la morte.
e il mondo è pieno di gente (non programmatori, o alle prime armi) che usa cms.
ciao.
# - postato da yQy - 17 Luglio 2007 - 11:28
4
Non ci credo. E’ impossibile arrivare ad un tale livello di ebetismo :|
5
Non ho parole… ma sono CMS distribuiti o CMS proprietari?
# - postato da alessandrobondi - 17 Luglio 2007 - 11:56
6
Assurdo non avevo mai visto una cosa del genere! :O
7
Per essere “trasparente”, anche il nostro Ministrero della Difesa interroga i suoi DB con strighe pubbliche… ^_^
allinurl:strSQL=SELECT marina.difesa
8
Troppo avanti.. o meglio.. “davanti” :D
9
Non è possibile…
# - postato da Giancarlo Moschitta - 17 Luglio 2007 - 13:52
10
Non ci credo ragazzi!
Il ministero della marina militare….Da pazzi!
Chissà quanto l’hanno pagato il sito….
Vabbè!
11
la cosa triste della vicenda è che questi incompetenti prenderanno qualche migliaio di euro ogni installazione di quel troiaio, mentre i poveri comuni mortali lottano per 1000 euro al mese..
# - postato da francesco - 17 Luglio 2007 - 15:02
12
piccola nota di colore: entrambi i siti buggati usano asp
saranno i prodotti microsoft a causare demenza senile nei programmatori?# - postato da francesco - 17 Luglio 2007 - 15:03
13
francesco è cosa tristemente saputa che asp e derivati non offrono granchè sul lato della sicurezza.
# - postato da smal - 17 Luglio 2007 - 16:06
14
smal,
non alimentiamo sterili prese di posizione.Lì non è ASP ma chi lo ha programmato che è tutt’altro che un programmatore attento alla sicurezza.
# - postato da Simone Carletti - 17 Luglio 2007 - 16:16
15
concordo con simone, ho un amico carissimo che programma in asp e lavora davvero molto bene, forse uno dei migliori in asp nella mia citta’..quindi nemmeno io credo sia colpa di asp, pur con i suoi limiti chiaramente.
ciao :)
# - postato da yQy - 17 Luglio 2007 - 16:51
16
Mamma che robba :(
17
questo si, ma il php consente di passare una query tramite url? non effettua controlli che lo impediscono?
# - postato da smal - 17 Luglio 2007 - 17:35
18
No, nessun controllo.
Quella di fatto è una stringa, che corrisponde ad una query.
In quanto stringa anche PHP ti consente di passarla come un qualsiasi altro linguaggio di programmazione.Se poi tu invece di passarci stringhe e parametri ci passi query SQL… allora è colpa tua non del linguaggio.
Se non erro anche phpMyAdmin passa parte di query in querystring, ma lì l’esigenza è diversa e il livello di sicurezza è differente.# - postato da Simone Carletti - 17 Luglio 2007 - 17:46
19
E’ sempre un grave errore, ma potrebbero aver fatto dei controlli per evitare query con drop o delete?
Io vorrei evitare di farmi indagare dalla marina :D
20
Scusate ragazzi, cosa c’entra ASP? Questo è opera del “cognato”, uno che ha imparato a programmare l’altro giorno e si spaccia per esperto… che tristezza, bravo Simone!! bel post
# - postato da johnnie maneiro - 18 Luglio 2007 - 00:39
21
Oddio…!!!
# - postato da Snake - 18 Luglio 2007 - 01:07
22
Pazzesco!
23
Oh…..Mamma…..
# - postato da Ratamusa - 23 Luglio 2007 - 11:31
24
Ho provato a fare una query di update sul sito della marina..ihih si sono salvati in extremis:
Microsoft JET Database Engine error ‘80004005′ Operation must use an updateable query. /gare/index.asp, line 163# - postato da Thesee - 27 Luglio 2007 - 15:07
25
ma sò pazzi?!?!?
26
Complimenti per l’articolo Simone, bella trovata quella di passare la query SQL tramite querystring… :)
# - postato da Francesco Ongaro - 13 Agosto 2007 - 18:21
27
LOL
# - postato da Carlone - 20 Febbraio 2008 - 16:04
28
Assurdo.. eppure succede







