Bywa, że pozyskanie danych, które można uznać za poufne, nie wymaga wysiłku ani użycia specjalnych narzędzi – wystarczy podmienić kilka cyfr w linku. Trywialny błąd da się znaleźć nawet w poważnych serwisach, co udowodnili nasi Czytelnicy.
Całkiem niedawno pisaliśmy o Kamilu, który w podobny sposób znalazł dane pół miliona zamówień klientów sklepów internetowych. Wcześniej opowiedzieliśmy o błędzie w serwisie ogłoszeniowym OLX. Najnowsze rozpatrywane przez nas zgłoszenia dotyczyły Ceneo oraz systemu, którego używają niektóre firmy komunalne, z reguły wodociągowe.
Przypadek 1. Kto ile zapłacił za reklamę w Ceneo
Jak poinformował nas jeden z Czytelników (za co dziękujemy!), po zalogowaniu się do panelu na stronie shops.ceneo.pl można było uzyskać dostęp do faktur, które serwis wystawił także innym nabywcom usług reklamowych. Link umożliwiający pobranie każdej z nich miał postać:
https://shops.ceneo.pl/Subscriptions/InvoicePdf?number=YYYY%2FXXXXXXXXXX&isCorrection=False
gdzie YYYY to rok, a szereg X-ów oznaczał numer faktury. Wystarczyło podmienić ten szereg na inny i wcisnąć Enter, aktywując automatyczne ściąganie pliku, by wejść w posiadanie informacji dla nas nieprzeznaczonych. Poniżej możecie zobaczyć dwa przykładowe dokumenty pobrane w omawiany sposób.
Powiecie, że nie stało się nic strasznego, bo dane przedsiębiorców nie są chronione na takich samych zasadach, jak dane osobowe – nazwy firm, ich adresy i numery NIP znajdziemy bez problemów, korzystając z ogólnodostępnych rejestrów internetowych. To prawda, weźcie jednak pod uwagę, że prowadząc firmę, nie chcielibyście, aby ktoś bez Waszej wiedzy i zgody zapoznawał się z informacjami o płatnościach, których dokonaliście.
Na reakcję serwisu nie musieliśmy długo czekać. Odpowiadając na nasze zgłoszenie, Tomasz Jankowski z działu PR Ceneo napisał: „Przede wszystkim chcemy przeprosić za zaistniałą sytuację i zapewnić, że dane sklepów korzystających z naszych usług są bezpieczne. Błąd został już naprawiony. (…) zapewniamy, że kwestie bezpieczeństwa w Ceneo.pl są najważniejsze”.
Reakcja Ceneo była szybka i sprawna, szkoda tylko, że w ogóle doszło do popełnienia tak trywialnego błędu. Kiedyś już o tym pisaliśmy i możemy przypomnieć raz jeszcze: enumeracja parametrów jest jednym z podstawowych testów, który wielu miłośników bezpieczeństwa okazjonalnie przeprowadza w odwiedzanych przez siebie serwisach. Wypadałoby wziąć to pod uwagę, projektując swoją usługę.
Przypadek 2. Wodociągi, z których wyciekają faktury
Inny nasz Czytelnik, który przedstawił się jako ExecPcs, chciał któregoś dnia zweryfikować, ile musi zapłacić swemu dostawcy wody. Zalogował się na stronie ibo.wodociagmarecki.pl i pobrał fakturę, która znajdowała się pod adresem:
https://ibo.wodociagmarecki.pl/client/FakturaCR.aspx?idFak=XXXXXX&typ=1 (GET)
„Zaciekawił mnie parametr idFak i go zmieniłem, ikrementując (dodając) do niego +1. Ku mojemu zdziwieniu mogłem pobrać faktury innych klientów” – poinformował nas Czytelnik. Co można było na nich znaleźć? Oprócz imion i nazwisk innych użytkowników, także dane o położeniu działek (Obiekt/Posesja), loginy do kont (w kwadratowych nawiasach po słowie „Nabywca”), dane adresowe oraz informacje o nieruchomościach, których dotyczyły odczyty. Przykładową fakturę możecie zobaczyć poniżej:
ExecPcs poinformował swego dostawcę wody o znalezionym błędzie. Po 24 godzinach otrzymał lakoniczną odpowiedź, że luka została załatana. „Zweryfikowałem i rzeczywiście podatność nie była już obecna w systemie. Na pochwałę zasługuje szybki czas naprawy błędu” – napisał Czytelnik, dodając, że podczas czekania na odpowiedź naszła go pewna refleksja. Platforma wykorzystywana przez Wodociąg Marecki Sp. z o.o. jest dostarczana jako usługa (as a service). Prosty „Google dork” pozwolił sprawdzić, że używają jej także inne firmy komunalne. Czy i one są podatne na wykorzystanie tego trywialnego błędu?
Wysłaliśmy w tej sprawie dwa zapytania do twórców oprogramowania, ale zostaliśmy zignorowani. Pozostaje mieć nadzieję, że po cichu przygotują łatkę, zanim ktoś wspomnianą lukę wykorzysta. Jeśli zetknęliście się z podobnymi błędami także w innych serwisach, dajcie znać w komentarzach lub pisząc na adres redakcji – sprawdzimy, opiszemy, postaramy się przyśpieszyć ich usunięcie.
Komentarze
Tak to jest jak zatrudnia się g*wno-programistów zamiast profesjonalistów. Potem dziwić się, że można wszystko oglądać publicznie, nieodporne, na XSS, XSRF, SQL Injection, HTML Iniection i masę innych błędów.
Nie ma też pieniędzy na testy… Oby tak dalej, a będziemy wszyscy osobami publicznymi, bo takich błędów nie brakuje też w aplikacjach rządowych które stają się przymusem lub już nim są.
Wiesz jakich ludzi nie było podczas naboru na programistę w tych firmach?
-Tańszych.
Aż cieplej robi się na myśl, że w bliżej nieokreślonym „gdzieś” są Ci nie-g*wno-programiści, którzy piszą systemy całkowicie i stuprocentowo odporne na XSS, XSRF, SQL Injection, Html Injection i masę innych błędów… Kosztowni, ale eksperci.
A poważnie: czy moderacja mogłaby czasem nie przepuszczać takich niemerytorycznych, emocjonalnych komentarzy, które nie wnoszą wiele poza czyjąś frustracją?
W obu przypadkach reakcja wydaje się właściwa, błędy zostały szybko usunięte. Celem ujawniania takich incydentów powinno być podnoszenie świadomości oraz – pośrednio – jakości oprogramowania. A nie piętnowanie konkretnych przypadków.
A każdy „ekspert”, jak mu się kiedyś też palec na czymś omsknie, powinien publicznie cztery razy przepraszać, w tym samym miejscu gdzie wcześniej „eksperczył”.
To nie jest wina palca, ktory sie omsknal. To sa elementarne bledy. Polowa kodu pewnie ze Stack Exchange.
Jaja sobie robisz? To są trywialne błędy. Gdyby wzorem niektórych zawodów wprowadzić (czego osobiście nie popieram) zezwolenie na wykonywanie zawodu programisty to za takie błędy powinno się z zawodu programisty wyrzucać.
To tak jakby chirurg zapomniał zaszyć ranę i wypisał pacjenta do domu.
Ja bym jeszcze dodał że były to „zabezpieczenia” typu „głębokie ukrycie”. Wiem że paru czytelników wiesza na tej nazwie psy ale dla mnie od początku miała ona dosadny ironiczny wydźwięk i pomimo braku jej obcojęzycznych odpowiedników (ich strata) jakoś wyjątkowo mi pasuje.
Dajcie już spokój z tym „numery NIP”. :)