Archiwa tagu: hacking

Hakerzy URLi

Od kilku dni we wszystkich mediach szeroko komentowana jest sprawa wycieku dużej ilości CV i listów motywacyjnych z programu stażowego banku Pekao S. A. Sprawa została omówiona przez blog WebFan, AntyWeb opisał reakcję PeKaO na całą sprawę, a VaGla przeanalizował sprawę od strony odpowiedzialności – tak więc chyba nie trzeba więcej dodawać.

Przy jej okazji tej sprawy, opublikowana została wypowiedź pana Arkadiusza Mierzwy, dyrektora biura prasowego Pekao, który zapowiadał przekazanie Policji adresów IP osób, które pobierały CV. Osoby te miały by zostać pociągnięte do odpowiedzialności karnej, gdyż wykorzystali błąd informatyków i bezprawnie ściągali na swoje komputery prywatne dane z serwera banku PEKAO SA. Ten sam pan powiedział, że dane były ukryte, gdyż trzeba było przecież specjalnie wstukać określony adres.

Pomijając wszystkie inne kwestie związane z brakiem zabezpieczeń, przychodzi mi do głowy inne pytanie – czy otwarcie jakiegokolwiek URLa może być traktowane jako włamanie?

Do sprawy bezpieczeństwa można podchodzić jak pan z Pekao, dla którego katalog, do którego nie ma linku, jest zabezpieczeniem – klasyczny przykład security through obscurity. Założenie, że takie działanie zapewnia „bezpieczeństwo”, jest błędne, z wielu powodów. Pan Mierzwa doszedł do wniosku, że pomysłowość internautów doprowadziła do odkrycia „schowanych” katalogów (błędny wniosek, ale o tym później) – tak więc jeśli ktokolwiek miał w którymkolwiek momencie projektowania/konfigurowania aplikacji na myśli bezpieczeństwo, wiedziałby, że prędzej czy później ktoś spróbuje wpisać adres ze zmienionym ID, spróbuje wylistować katalog, czy poszuka katalogów „tmp”.

W podobnej atmosferze rozegrała się „afera” wycieku raportu kwartalnego spółki Intentia International, który to raport został omówiony przez agencję Reuters jeszcze przed jego oficjalnym opublikowaniem. Oczywiście raport był niezabezpieczony, a jedynie „niepodlinkowany”. Intentia oskarżyła Reutersa o stosowanie hackingu w celu wykradnięcia tajnych danych. Widać ostatnio dużo łatwiej jest zostać hakerem niż kiedyś – wystarczy zmienić „raport_kwartalny_2” na „raport_kwartalny_3” w pasku przeglądarki. Dziwne tylko, że Intentia nie wstydziła się chwalić wszystkim, że przechowuje niezabezpieczone dane.

Ale w sprawie Pekao sprawa była jeszcze prostsza. Nikt nie musiał „hakować URLi”. Glucio, osoba która odkryła sprawę i ją trochę nagłośniła, wcale nie kombinowała z adresami. Otóż Glucio, w celach rozrywkowych, szukał w Google osób o takim samym jak on nazwisku – przypadek chciał, że takie nazwisko miała jedna z osób, która przesłała swoje CV do programu stażowego Pekao. Jeśli wejście na stronę znalezioną przez wyszukiwarkę wg. przedstawicieli Pekao jest przestępstwem, to jest to świetny sposób na nielubianych znajomych i wrednych szefów. Wystarczy podrzucić takiej osobie link do jakiegoś CV, najlepiej jeszcze zakryć link przez jakiegoś skracacza URLi, i już, kłopoty „wroga” murowane.

Jakim cudem GoogleBot trafił na strony, do których podobno nie było linków? Prawdopodobnie któryś z programistów projektu miał Google Toolbar, który przekazuje dane do wyszukiwarki – co pokazuje, że musieli być świadomi, że można wyświetlić listing katalogu (na razie teorie o włamaniu pomijam jako niepotwierdzone). W jakim świetle to stawia oskarżenia pana Mierzwy? Zastosował on spychologię, ale najwyraźniej oskarżył nie tych co trzeba – powinien zapowiedzieć podanie do sądu robaka Google’a.

W takich sytuacjach pojawia się kilka pytań. Na przykład, czym wpisanie adresu http://example.com/tajne_dane/ różni się od wpisania samego http://example.com/, i trafienia tam na tajne dane, „ukryte”? W podobnych sytuacjach kilka razy słyszałem dziwne „analogie” i porównania do sytuacji, kiedy to ktoś nie zamknie drzwi od domu na klucz, a ktoś obcy skorzysta z tego i wejdzie do środka. Ciężko strony WWW ciężko traktować jak „dom” – do obejrzenia strony (a przynajmniej tej niezabezpieczonej hasłem) nie trzeba „zaproszenia”. Jeśli już bym się silił na jakieś porównanie, to prędzej bym porównał tą sytuację do prób otwierania drzwi sklepów lub biur, ale chyba wchodzenie do sklepu bez zaproszenia nie jest ani zakazane ani naganne moralnie. Ale nawet co do domów sprawa wygląda ciekawie. Otóż według prawa, aby doszło do włamania, drzwi muszą być zabezpieczone zamkiem, i to takim, który stanowi faktyczne zabezpieczenie, a nie tylko symboliczne – klamka czy dostępny od zewnątrz „haczyk” nie jest takim zabezpieczeniem:

Podstawową istotą włamania jest wtargnięcie sprawcy do zamkniętego pomieszczenia, przez usunięcie przy użyciu siły fizycznej przeszkody zamykającej dostęp do danego pomieszczenia. Pomieszczenie musi być zamknięte, tj. w taki sposób zabezpieczone przed wtargnięciem osób powołanych by normalne wejście było niemożliwe.
Usunięcie takiej przeszkody jest wyraźnym obejściem woli właściciela pomieszczenia niedopuszczenia osoby trzeciej do tegoż pomieszczenia. Zaznaczyć tu należy, iż wola ta musi być w poważny sposób wyrażona. Zamknięcie pomieszczenia na zwykły haczyk, który bez większej trudności każdy może odsunąć czy też zwykłą klamkę bez użycia klucza nie może być traktowane jako zamknięcie pomieszczenia i w takich wypadkach wejścia doń sprawcy i dokonanie kradzieży nie można traktować jako włamania.

(Wyrok SN z 24 kwietnia 1958 r., IV KRN 170/58.)

Poszukiwanie niezabezpieczonych, „tajnych” katalogów, na chybił-trafił, czy też mając jakieś wskazówki, to jedna strona problemu. Druga, to „ataki”, które przeprowadza się teoretycznie na formularze (np. logowania), a poprzez błędną ich konstrukcję (tj. akceptowanie parametrów GET), możliwe jest zrobienie tego po prostu przez wpisanie odpowiedniego URLa. W ten sposób można wykonywać m. in. ataki SQL-injection. Na ten temat można znaleźć w Internecie kilka historii. Na przykład znany jest przypadek Mateusza, który odkrył błąd w oprogramowaniu pewnej firmy informatycznej (prawdopodobnie CMS, ale nie zostało to nigdzie jasno napisane), z którego korzystało wiele firm. Błąd ten pozwalał w prosty sposób uzyskać dostęp do konta dowolnego użytkownika – wystarczyło wpisać w formularzu logowania ' or 1=1 --. Jeśli dodatkowo formularz akceptował parametry GET, można było to wpisać w pasku adresu. Mateusz poinformował o błędzie firmę programistyczną oraz jej klientów, z propozycją zajęcia się poprawą tego błędu, za co dostał nagrodę w postaci aresztowania i oskarżenia o wymuszenie rozbójnicze (!). Sprawa jest długa i zawiła, została dokładnie opisana przez zainteresowanego, i ciągnie się od 1,5 roku. Rzecz w tym, że prawnicy analizujący tą sprawę, a także poproszony przez prokuraturę o opinię rzeczoznawca, doszli do wniosku, że w tym przypadku nie doszło do żadnego przestępstwa. Specjaliści doszli do wniosku, że takie zabezpieczenie to żadne zabezpieczenie (dosłownie!), więc nie można mówić o omijaniu zabezpieczenia, a co dopiero jego przełamywaniu.

Kwestia różnicy między omijaniem a przełamywaniem zabezpieczenia w kontekście systemów informatycznych jest dla mnie bardzo niejasna. Co nieco mówią na ten temat dwa cytaty:

Reasumując, o popełnieniu przestępstwa określonego w art. 267 par 1 kk decyduje sposób uzyskania zastrzeżonej informacji, nie zaś samo jej uzyskanie. Jeżeli następuje to bez przełamywania zabezpieczeń – przestępstwa nie ma. Jeżeli sprawca wykorzystuje dziurę w konfiguracji lub oprogramowaniu systemowym po to, by uzyskać znajdującą się w systemie informację – nie można mu nawet przypisać usiłowania przestępstwa, o którym mówi art. 267 par 1 kk. Jeżeli wykorzystanie słabości systemu nie wymaga od hackera ingerencji w zapis na komputerowym nośniku informacji lub korzystania ze specjalnego oprogramowania – zachowanie takie w ogóle nie jest karalne.

(dr Andrzej Adamski, „Prawo karne komputerowe” (str.53), na temat art. 267 kk)

Nie można natomiast uznać za przełamanie zabezpieczenia obejścia mechanizmów lub procedur postępowania uniemożliwiających zapoznanie się z informacją osób nieuprawnionych. Przełamanie zabezpieczenia następuje wyłącznie wówczas, gdy sprawca swoim działaniem wpływa na funkcjonowanie tego zabezpieczenia. Jeżeli istnieje taki sposób dostępu do informacji, który nie został objęty szczególnym zabezpieczeniem, to skorzystanie z tego sposobu nie stanowi realizacji znamion z art. 267 § 1, choćby nawet osobie zapoznającej się z informacjami wiadoma była wola ich zabezpieczenia przed osobami postronnymi.

(Włodzimierz Wróbel – „Komentarz do art. 267 kodeksu karnego”, „Kodeks karny. Część szczególna. Tom II. Komentarz do art. 117-277 k.k.”, Zakamycze 2006)

Z powyższych informacji wynika, że jeśli ktoś ma zbyt wyluzowane podejście do technik bezpieczeństwa, to to jest to tylko i wyłącznie jego wina jeśli coś „wycieknie”. Jeśli SQL injection, który jest już dosyć aktywnym atakiem, w pewnym, dosyć szerokim kontekście, nie może zostać uznany za przestępstwo, to co myśleć o wejściu na wyguglany adres?