Quando la sicurezza è un optional

Martedì 17 Luglio 2007 - 10:36

di Simone Carletti

Sicurezza

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!

Tags:

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 :|

# - postato da TaTaC - 17 Luglio 2007 - 11:47

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

# - postato da Robertes - 17 Luglio 2007 - 12:04

7

Per essere “trasparente”, anche il nostro Ministrero della Difesa interroga i suoi DB con strighe pubbliche… ^_^

allinurl:strSQL=SELECT marina.difesa

# - postato da Demetrio - 17 Luglio 2007 - 12:26

8

Troppo avanti.. o meglio.. “davanti” :D

# - postato da ZofM - 17 Luglio 2007 - 12:58

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è!

# - postato da Bizio - 17 Luglio 2007 - 14:55

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 :(

# - postato da TixXio - 17 Luglio 2007 - 17:14

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

# - postato da Robertes - 17 Luglio 2007 - 18:29

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!

# - postato da Patroclo - 18 Luglio 2007 - 09:56

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?!?!?

# - postato da Zannas - 28 Luglio 2007 - 17:19

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

# - postato da Giuseppe - 25 Maggio 2008 - 19:21

Inserisci il tuo commento:





(puoi usare i seguenti tag HTML per formattare il testo -
a href, b, i, br/, p, strong, em, ul, ol, li, blockquote, pre):

 

Anteprima del commento