vineri, 7 noiembrie 2008

Interfete Web care inghit orice!

Toata lumea stie ca daca mananci orice si oricat s-ar putea sa ai unele probleme de digestie. Interesant e ca acelasi lucru e valabil si pentru interfetele web.

V-am cam bagat in ceata, asa-i? Iata si povestea din spate:
Ieri a fost ziua 2 (si ultima) a Ciscoexpo. Pe la mijlocul zilei a fost o prezentare cu titlul "Warriors of the Net", in care un tip de la Cisco ne-a aratat diverse vulnerabilitati comune pe care le au sistemele informatice ale companiilor.
Si poate cele mai vizibile sisteme informatice sunt site-urile. Adica niste interfete web.

Sa trecem la lucruri concrete: Avem un site, hostat pe Apache, sub Linux. Ca multe alte site-uri, are un login box. Sa zicem ca in spate sta un script (in bash, perl, python, ce vreti voi) care face autentificarea. Si primeste ca parametru username-ul si parola introduse de user, astfel:

auth.sh username password;

E o solutie simpla care functioneaza. Daca vine gigel sa se autentifice cu parola webvolution, se va executa pe sistem:

auth.sh gigel webvolution;

Dupa gigel, vine si ionel, care e mai hacker de felul lui. Si introduce la username "ionel; rm -rf /;", iar la parola nimic. Ce se executa in spate?

auth.sh gigel; rm -rf /;

Bineinteles ca prima comanda va esua, dar a doua se va executa si va face prapad. Ceea ce a si vrut ionel.
Ideea e ca ionel poate sa executa orice comanda pe acel sistem. Un lucru foarte neplacut.

Din fericire, solutia e simpla. Nu e bine sa lasam interfata web sa inghita chiar orice ii da ionel. Ci sa fie un pic mai sclifosita. Sa faca mofturi cand vede caractere de tipul ";" "|" "/" etc. Si de exemplu sa accepte doar alfanumerice.
Gata. Fara politici complicate de securitate.

Asadar, verificati-va interfetele web, sa nu fie prea pofticioase la caractere cu probleme!

PS: Exemplu oferit mai sus este unul simplist, de obicei lucrurile nu sunt chiar asa evidente si usor de spart. Dar oricat de complexe ar fi, hackerii cauta sa fie intotdeauna cu un pas inainte.

5 comentarii:

Andreea spunea...

pfuaa, ce chestie... :D poate povestesti si ce-a zis tipu de la audit de securitate, cate sisteme reusesc sa sparga, si care-i prima metoda :D

Anonim spunea...

super tare, n-am mai auzit niciodata de code injection pana acum :)

razvan784 spunea...
Acest comentariu a fost eliminat de autor.
razvan784 spunea...

http://xkcd.com/327/
adică, pardon, am vrut să zic
http://xkcd.com/327/, că interfaţa asta nu ştie să autohyperlinkeze automat.

monica spunea...

sunt foarte utile informatiile pe care le-ai dat aici, si ce mi se pare cel mai important este ca le-ai explicat foarte clar si pe intelesul tuturor :)

monica