9:41
21/5/2010

Dziś chcielibyśmy zwrócić waszą uwagę nie na straszny błąd bezpieczeństwa, ale na malutkie potknięcie w logice biznesowej, którego skutkiem może być ujawnienie danych. I znowu, nie chodzi tu o jakieś bardzo poufne, czy “wrażliwe” dane, ale o informacje, które być może są interesujące w pewnych przypadkach. Bardziej niż potępić, w tym przypadku chcemy uczulić, przestrzec i zwrócić uwagę na pewną klasę błedów projektowych…

Wielka kumulacja w RMF-FM

Jeden z naszych cztelników, Tomasz Trzeszkowski, podesłał nam następującą analizę systemu konkursowego wykorzystywanego przez RMF:

RMF FM organizuje konkurs-loterię “Wielka kumulacja”. Aby przystąpić do loterii, słuchacze wysyłają SMSa premium. Za przystąpienie do loterii otrzymują możliwość pobrania tapety lub dzwonka na telefon — link do strony WWW, z której można pobrać dzwonek otrzymuje się w wiadomości SMS.

Adres URL dla danego numeru jest zawsze ten sam — pod wskazanym adresem można pobrać dzwonek lub tapetę każdego dnia, a nie tylko wtedy, kiedy przystąpiło się do konkursu. Link jest w postaci http://rmffm.mobi/r/xxxxxxxx, gdzie xxxxxxxx jest pewnym przekształceniem numeru telefonu.

Ponieważ ciekawiło mnie, jak projektant określił przekształcenie, dokonałem eksperymentów wysyłając SMS z różnych numerów i obserwując wyniki. Efekty? Przekształcenie jest wręcz trywialne — jest to zwykłe kodowanie (nazwałbym je liniowym lub “przesunięciem”). Nie powiem jakim, bo nie chcę słuchać RMFu z miejsca odosobnienia.

Dla dowolnego numeru potrafię wskazać link do strony WWW organizatora, skąd “ofiara mojego ataku” może pobrać otrzymane dzwonki lub tapety, oczywiście jeżeli brała udział w konkursie. Dostęp nie wymaga innych działań jak odwołania się do wskazanego URL. A na stronie jest data i czas kiedy dysponent numeru (“ofiara”) brała udział w konkursie (wysłała SMS). Mogę stwierdzić czy ktoś brał udział w konkursie, czy nie, ile razy i kiedy. Oczywiście nie jest to jakaś straszna tajemnica, ale może ktoś znajdzie zastosowanie dla tej informacji wbrew woli grającego. Przestrzegam przed pobieraniem nie zapłaconych dzwonków — może to być potraktowane jako nieautoryzowany dostęp do zasobów, ale to temat na zupełnie inny wątek.

Z technicznego punktu widzenia mamy identyfikację użytkownika, ale “system” nie realizuje uwierzytelnienia (potwierdzenia tożsamości). Aby rozwiązanie posiadało cechy uwierzytelnienia wystarczyło tak zaprojektować system, by numer przekształcić na URL w trochę bardziej złożony sposób. Można to zrealizować np. przy pomocy funkcji skrótu. Obecnie używane przez RMF kodowanie ma tą zaletę, że gwarantuje brak kolizji, a wynik funkcji skrótu skrócony do 8 znaków ASCII może wygnerować kolizję. Można zastosowane przekształcenie rozszerzyć o przestawienia, permutacje, może XOR wyniku z sekretem, tak by zaburzyć odstęp (odległość) między elementami dziedziny i przeciwdziedziny funkcji kodującej — rozwiązań wiele i dyskutować można długo…

Podsumowując, powyższy post, podobnie jak “hackowanie kart IKEA” jest sztuką dla sztuki i powstał wyłącznie w celach edukacyjnych. Dlaczego zdecydowaliśmy się na jego publikację? Dlatego, że analogiczne do RMF-owych niedociągnięć spotykamy w dużo poważniejszych webaplikacjach i systemach…

Spróbujmy się teraz wpólnie zastanowić, jak tego typu system można “ulepszyć“, zapominając na chwilę, że w przypadku RMF chodzi wyłącznie o “słitaśne tapetki i głupkowate dzwonki” ;-) Pamiętajcie też o kluczowej w tym przypadku wygodzie użytkownika…

Przeczytaj także:

14 komentarzy

Dodaj komentarz
  1. Niech w treści smsa zgłoszeniowego uczestnicy konkursu umieszczą hasło.

  2. mozna generowac hashe dla kazdej transakcji (wyslania sms-a) albo dla numeru telefonu. hash bedzie unikalny i do jego generowania nie potrzeba uzywac przeksztalcen numeru telefonu
    wtedy zgadywac mozna do woli

  3. Kodowanie powinno byc na pewno silniejsze, tak by częśc URL odpowiadająca numerowi telefonu zgłaszającego składała się z przypadkowych liter uniemożliwiających odgadnięcie sposobu kodowania. O ile tym razem chodzi o rzeczy błache (gadzety na telefon), o tyle innym razem może chodzić o rzeczy poważniejsze. Dobre nawyki w procedurach bezpieczeństwa zawsze procentuja, bo w nastepnym konkursie moze chodzić o nagrody duzo większej wartości.

    PS
    Jesli chodzi o procedury to nawet banki potrafią sie popisowo kompromitować. Mam na myśli znajdywane co jakiś czas nieprzemielone wyzucone dokumenty. Niby już nieważne, ale to jednak bank. O wiele gorsze jest wyzucenie dokumentów policyjnych. Niedawno w Szczecinie znaleziono takie dokumenty w lesie. Niby sprzed kilkunastu lat, ale ich dostanie się w niepowołane ręce mogło zagrozić np. świadkom w sprawach sprzed wielu lat. Podsumowujac dbanie o bezpieczeństwo ma znaczenie i powinno się zacząć od błachych z pozoru konkursów.

  4. a po co to w ogóle zabezpieczać? Żeby czasem różowa gimnazjalistka nie pobrała tapety z kotkiem zgadując adres? Przecież i tak albo wyśle SMS-a, albo znajdzie sobie inną darmową w internecie. Przekombinowali.

  5. Bah… Zaraz mi się przypomina afera Quiptxt Day. Nie pamiętam, czy była wspominana na łamach Niebezpiecznika, ponieważ ja akurat dowiedziałem się o niej z /b/. Podobna gafa w kwestii zabezpieczeń, jednak o O WIELE poważniejszych konsekwencjach :-)

  6. @zuezuo: Widzę, że napisać na górze i powtórzyć na dole tekstu, dlaczego on powstał to dla niektórych za mało… ;)

  7. @zuezuo: Problem nie leży w zabezpieczeniu tapety przed pobraniem przez gimnazjalistkę – problem mimo, że akademicki, leży w ujawnieniu informacji o użytkowniku. Dzisiaj nikt nie widzi problemu, że każdy może się dowiedzieć iż grasz w WK i kupiłeś tapetę, jutro mało istotne będzie czy jesteś klientem Banku. A taka informacja jest traktowana jako objęta tajemnicą bankową.
    Temat został poruszony by poruszyć myślenie ….

  8. @Piotr: ja rozumiem po co powstał ten tekst :) Odpowiadam tylko na Twoje “Spróbujmy się teraz wpólnie zastanowić, jak tego typu system można “ulepszyć“” – nijak, nie ma potrzeby :)

  9. rmf chyba tez czyta niebezpiecznik bo operacja ta juz nie jest mozliwa

  10. szacunek dobre (ps: ze tobie sie chciał główkowac )

  11. Skoro funkcja skrótu by pomogła to imo najlepiej użyć funkcji skrótu a link przed wysłaniem skrócić czymś na wzór tnij.com

  12. RMF chyba czyta niebezpiecznika ;)
    Sprawdziłem swój dzwonek, i mam taki komunikat:
    “Wpisany adres jest niepoprawny.

    Ze względów bezpieczeństwa zmieniliśmy adres, pod którym znajdziesz swoje dzwonki. Sprawdź swój nowy adres wysyłając SMS-a o treści KOLEKCJA pod darmowy numer 8065.

    W razie dalszych problemów pomoc można uzyskać:
    wysyłając maila pod adres: reklamacje@rmf.fm
    dzwoniąc pod numer infolinii: 22 48 040 84

    Pamiętaj, że za połączenie internetowe w sieci komórkowej płacisz dodatkowo. Dzwonki możesz ściągnąć także przez połączenie WiFi lub na komputer.”

    • @Jaclo: czyta, czyta. I to regularnie :)

  13. Nie ma co, wyrabiacie sobie markę… ;D

Twój komentarz

Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy. Dlaczego?

RSS dla komentarzy: