Na początek krótkie wprowadzenie: "Nie można przełamać czegoś, co nie istnieje" - polski wyrok w sprawie SQL Injection. Sprawa jest stara i szczerze mówiąc to rozstrzygnięcie nie podoba mi się od chwili, gdy o nim usłyszałem. Nie chodzi mi tu o tę konkretną sprawę, ale właśnie o (...) nie można przełamać czegoś, co nie istnieje (...).
Czy słonia można zafortepianić?
W zasadzie każda podatność istnieje dlatego, że jakieś zabezpieczenie nie zostało (prawidłowo) zaimplementowane. Skoro tak, to udany atak nie jest przełamaniem zabezpieczenia, lecz wykorzystaniem faktu, że zabezpieczenie przed konkretnym atakiem w danym systemie nie istnieje. Bo niby dlaczego brak zabezpieczenia przed SQLi w formatce logowania ma być traktowany inaczej, niż brak zabezpieczenia przed wykonaniem przelewu z cudzego konta? Kiedy coś jest już przełamaniem, a kiedy jeszcze nie?
Moim zdaniem w tej historii zabezpieczenie było. Był nim mechanizm uwierzytelnienia użytkownika. Na podstawie deklarowanej i potwierdzonej tożsamości system dopuszczał (autoryzował) użytkownika do korzystania z niego. Osoby uprawnione do dostępu do systemu posiadały w nim swoje konta, pozostałe - nie i (w założeniu) nie mogły uwierzytelnić się w systemie. W wyniku istnienia podatności możliwe było uwierzytelnienie się w systemie bez znajomości hasła. I teraz można się oddać rozważaniom językowym i prawnym (prawniczych) na temat znaczeń słowa przełamanie. Zresztą długi wywód na ten temat znajduje się w przywołanym wpisie.
Wspominam o tym, ponieważ w odpowiedziach na takie pytania prędzej czy później ta historia zostanie przywołana. Cóż, nasze prawo nie jest doskonałe a i jego interpretacje mogą być różne (prawo ma to też do siebie, że ulega czasem zmianom na co w komentarzu zwrócił uwagę Gynvael). Ciekawy wpis w tym temacie popełnił Gynvael, ciekawa jest również dyskusja pod nim.
By było jasne - uważam, że nie ma usprawiedliwienia dla programistów tworzących oprogramowanie pełne dziur. To, że zgodnie z przepisami prawa "atakowanie" takiej aplikacji jest karalne, nie oznacza, że dostawca/programista może nie przywiązywać odpowiedniej wagi do zabezpieczenia aplikacji przed takimi działaniami. Aplikacje muszą być tworzone z uwzględnieniem kwestii bezpieczeństwa, a sami programiści (i nie tylko oni) w tym temacie powinno być szkoleni. Z drugiej strony nie podoba mi się próba usprawiedliwienia z wykorzystaniem niedoskonałości przepisów osób, które, nazwijmy to, dokonują nadużycia funkcjonalności różnych serwisów internetowych lub wykorzystują brak (skutecznych) zabezpieczeń.
Dlaczego przeglądanie bazy danych serwisu w sposób inny niż ten, na jaki zgodę wyrazi jego administrator/operator ma być traktowane inaczej niż, przykładowo, przeglądanie szuflad z bielizną przez osobę sprzątającą wynajętą do umycia łazienki? Bo majtki są namacalne i mają (w sensie odzieży, majtki jako takie mają historię znacznie krótszą) jakieś 170 tysięcy lat historii, a informacja nie dość, że jest nienamacalna, to jeszcze te całe komputery, sieci i Internet to jakieś nowinki są...
A tak swoją drogą to co napisałem wyżej wcale nie zawsze jest prawdą. Przecież nie w każdej społeczności/kulturze poczucie własności, "terytorialności" czy prywatności jest takie samo. Wystarczy przywołać "drobne" różnice kulturowe dotyczące odległości między rozmówcami i przyzwolenia (lub jego braku) na kontakt fizyczny z rozmówcą (patrz np. Wielkość dystansu indywidualnego).
"Tej samej karze podlega, kto bez uprawnienia uzyskuje dostęp do całości lub części systemu informatycznego"
Więc, od tego czasu nawet ominięcie zabezpieczeń które powoduje uzyskanie dostępu do systemu wydaje się być penalizowane.
Ciekawy wpis o tym popełnił Olgierd Rudak:
http://olgierd.bblog.pl/wpis,do;2;lat;za;podlaczanie;sie;do;cudzych;hotspotow,17947.html
Wyrok oczywiście miał miejsce w roku 2008 (sierpniu), natomiast sama sprawa ciągneła się od 2007.
Nowelizacja o której pisałem została wprowadzona w październiku 2008.
Tak, tak, nowelizują kodeks karny... wizerunki małoletnich, hacking, 269b... (http://prawo.vagla.pl/node/8123).
A dodany zapis, o którym wspominasz, też jest dyskusyjny. Co w przypadku, gdy Google zindeksuje jakiś URL serwisu, który normalnie wymaga uwierzytelnienia, a błąd kontroli dostępu powoduje, że można się do niego dostać "bezpośrednio"? Później ktoś szukając jakiejś informacji klika w taki link i... I w pewnym stopniu ominął zabezpieczenia, bo "normalnie" takiego URLa się nie wywołuje bezpośrednio. Podobne kwestie - dane w "głębokim ukryciu".
To jest bardzo trafne spostrzeżenie i ja podzielam tę opinię.
P.s. Trochę się rozpisałem. Nie miej mi tego za złe.
Pan Z ma pecha, bo zostaje złapany przez Policję, oskarżony i skazany za włamanie. Dlaczego nie został również skazany pan X za to, że nie kupił zamka firmy FooShmoo, którego tak łatwo wytrychem otworzyć nie można?
Nie twierdzę, że mamy uniewinniać włamywaczy, ale brać pod uwagę lekkomyślność bądź też niekompetencje "drugiej strony". A tego prawo nie przewiduje.
P.s. Mając AC i straciwszy auto w wyniku kradzieży, to nadal będzie ścigane jako przestępstwo, ale firma ubezpieczeniowa nie odda Ci nawet grosza, jeśli w aucie zostawiłeś kluczyki. To jest kara za nie stosowanie się do podstawowych zaleceń w kwestii bezpieczeństwa.
W przypadku AC takie są warunki ubezpieczenia. Możesz negocjować z firmą inne warunki ubezpieczenia, tylko wówczas składka zostanie wyliczona w oparciu o założenie, że kradzież samochodu jest zdarzeniem pewnym i będzie bardzo zbliżona do wartości samochodu. To nie jest kara, tylko wynik analizy ryzyka.
Zostawienie otwartych drzwi/okna/samochodu nie uprawnia kogokolwiek do wchodzenia do cudzego mieszkania/pojazdu. Podobnie fakt posiadania niezałatanej dziury w wykorzystywanym oprogramowaniu nie uprawnia nikogo do spenetrowania cudzego systemu.
Oczywiście możemy również odwołać się do atawistycznych instynktów naszych jaskiniowych przodków, gdzie "ofiara" była sama sobie winna bo miała za małą maczugę, albo za mało członków plemienia do pomocy
Owszem, nie upoważnia. Niemniej "niemyślenie" ofiar powinno być czynnikiem łagodzącym dla "myślących" atakujących (jakkolwiek to dziwnie brzmi).
Ba! Można też w drugą stronę. Przestańmy interesować się kwestią zabezpieczeń (jakichkolwiek) w ogóle, toć będziemy usprawiedliwieni i chronieni przez prawo. To nie my będziemy odpowiadać za wynikające z tego tytułu szkody. Złapie się sprawcę i będzie gites.
We wpisie wyraźnie napisałem, że aplikacje muszą być tworzone z myślą o bezpieczeństwie. W niektórych kulturach tabu dotyczące jakiegoś tematu jest bardzo mocne, ale nie ma co liczyć, że bezpieczeństwo w tak globalnym środowisku jak Internet może opierać się na wierze w "prawość" pozostałych użytkowników. Podobnie naiwne jest oczekiwanie, że zabronienie czegoś (penalizacja) automatycznie problem rozwiązuje (patrz: dopalacze).
Ostrożność to jedno, normy społeczne - drugie. A te w Internecie są naginane, moim zdaniem.
Bo w kontekście aplikacji webowych nie ma w ogóle mowy o zabezpieczeniach a tego typu ataki to właściwie ficzer
Oczywiście wyrok jest słuszny
bo tak na prawdę nie da się odróżnić
ataku SQLI od zwykłego odwiedzenia strony
nie da się udowodnić że kolo rozmyślnie wpisał taki adres , i nie można karać człowieka za dostęp do danych które w żaden sposób nie są oznaczone jako prywatne
zwłaszcza w sieci WWW
Bo jeśli ma tak być to równie dobrze mógłbyś
teraz powiedzieć że przełamałem twoje zabezpieczenia bo w twoich zamierzeniach ta podstrona miała być prywatna ;>
Tylko problem w tym że ja nic o tym nie wiem
No chyba że chcemy doprowadzić do sytuacji w której wszystko będziemy traktować w "publicznej sieci www" jako prywatne
i np przed odwiedzeniem jakieś strony , kliknięciem w link tzreba będzie się skonsultować (najlepiej) z prawnikiem właściciela domeny , potem firmy hostingowej
aby się upewnić czy przypadkiem nie łame jakiś zabezpieczeń
Rozumie postawę człowieka który pracuje dla banków , jest penetesterem i orbituje wokół web apsów
,but wszystko co nie jest zabronione jest
dozwolone i to jest normalne przynajmniej w kontekście www
inaczej będziemy mieli jakiś skrajny absurd
Rozwiązanie z punktu widzenia prawnika (a nie informatyka) jest zgoła inne -- oprócz suchych faktów i definicji, sprawę rozpatruje się także na poziomie intencji i motywów jakie kierowały podejrzanym. Chciał wyrządzić zło? Kierował się chęcią zarobienia na cudzej krzywdzie? etc...
Podsumowując, osoby techniczne często popełniają ten błąd, że starają się wszystko zdefiniować, wsadzić w normy lub logicznie uzasadnić. W poruszanych przez Ciebie kwestiach, tego po prostu nie da się zrobić -- lub jak wolisz, trudność jest niezerowa
Zwracam jeszcze raz uwagę na uzasadnienie wyroku cytowane w przywoływanym wpisie (trzeba przy okazji pamiętać, że brzmienie tego paragrafu uległo w międzyczasie zmianie). Znaczna jego część koncentruje się na odpowiedzi na pytanie, czy nastąpiło "przełamanie zabezpieczeń". Mało tego, jest tam nawet odwołanie do słownikowej definicji "przełamywać"!
Odnosząc się do fragmentu "co nie jest zabronione jest dozwolone" z innego komentarza - stosowanie tej zasady również może prowadzić do absurdu. Zamiast skupić się na tym, czego robić nie wolno, zbyt duża uwaga jest przywiązywana do zdefiniowania tego, JAK tego czegoś robić nie wolno.
I teraz znowu wróćmy do wspomnianego uzasadnienia, np. fragment:
"(...) Jeżeli "przechodzenie przez dziurę" 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 (...)"
Dawno temu przygotowałem przykład/wyzwanie http://threats.pl/bezpieczenstwo-aplikacji-internetowych/wyzwanie Większość osób, które je przeszła, wykorzystała do tego skrypt (czy to już jest specjalne oprogramowanie?), ale była jedna osoba, która cały atak blind SQLi wykonała RĘCZNIE(!) przy pomocy przeglądarki: http://archive.mroczna-zaloga.org/archives/616-bootcamp-viii-wyzwanie-hint-iii.html#c1117 Mało tego, inna osoba nie wykorzystała blind SQLi: http://archive.mroczna-zaloga.org/archives/787-theres-more-than-one-way-to-skin-a-cat.html i ten atak też był trywialny do przeprowadzenia przy pomocy przeglądarki, a więc "przechodzenie przez dziurę" nie wymagało ingerencji w "komputerowy nośnik informacji" (co jest komputerowym nośnikiem informacji?), nie wymagało również wykorzystania "specjalnego oprogramowania".
Ale w tym samym tekście można znaleźć fragment następujący:
"(...) Przełamanie zabezpieczenia następuje wtedy, gdy sprawca niszczy, usuwa zabezpieczenia, lub kiedy oddziałując na zabezpieczenie chwilowo niweluje jego funkcję zabezpieczającą. (...)"
W moim odczuciu atakujący oddziaływał na zabezpieczenie (mechanizm uwierzytelnienia) chwilowo niwelując jego funkcję zabezpieczającą. Zupełnie inna kwestia, że błąd należał do tych z kategorii "kretyńsko głupi" i w zasadzie równie dobrze można się było bronić "ale ja naprawdę mam hasło ' or 1=1 --, tylko w innym serwisie i tu po prostu się pomyliłem"
Oczywiście te wywody i tak mają niewielkie znaczenie, bo od tego czasu prawo się zmieniło, a w obecnej wersji są inne pułapki.
Poza tym ja wcale nie chcę wsadzić tego konkretnego "sprawcy" do więzienia
całą reszte można sobie interpretować jak się chce
Wiadomo na przykład że dla prokuratora (dla którego swoją drogą wszystko jest grą) intencje oskarżonego są jasne
Tak samo jak dla jego obrońcy a przepaść ich interpretacjami faktów jest jak stąd do Bangladeszu
i dlatego potrzebne są twarde, nie zbite dowody
a całą resztę i swoje prywatne odczucia zostawiamy przed wejściem na sale sądową