19:30
5/9/2013

Ehraz Ahmed, Indyjski researcher opisuje na swoim blogu sposób, w jaki można było skasować dowolne konto na Facebooku. Skarży się także, że Facebook odmówił mu wypłaty nagrody pieniężnej za ten błąd w ramach inicjatywy bug bounty nagradzającej za znajdowanie dziur w Facebooku. Jego raport jest jednak mocno niespójny i podejrzany…

“I need bounty for this!”

17-latek utrzymuje, że był w stanie skasować dowolne konto na Facebooku, ale błąd odpowiedzialnie przetestował tylko i wyłącznie na kontach testowych należących do niego (zapewne mając w pamięci niedawne problemy Khalila z uzyskaniem nagrody od Facebooka, spowodowane tym, że Palestyńczyk zademonstrował błąd na koncie Marka Zuckerberga — pisaliśmy o tym w artykule “Wrzucił posta na ścianę Zuckerberga, bo zespół bezpieczeństwa Facebooka nie zrozumiał na czym polega dziura“).

Khalil, który nie był w stanie jasno opisać błędu przez co został zignorowany przez dział bezpieczeństwa Facebooka koniec końców dostał nagrodę pieniężną — nie od Facebooka a od internautów. Najwyraźniej im nie przeszkadzało, że Palestyńczyk złamał regulamin programu bug bounty…

Ehraz opublikował klip, którym najprawdopodobniej posłużył się w trakcie zgłaszania błędu facebookowi.

W oczy rzuca się adres:

http://facebook.com/ajax/whitehat/delete_test_users.php?
fb_dtsg=AQA1E-WE&selected_users[0]=[Victems Profile ID]&__user=[Attackers Profile ID]&__a=1

Ehraz utrzymuje, że za pomocą tego skryptu można było kasować dowolne konto na Facebooku, chociaż nazwa sugeruje, że skrypt ten jest używany do testowania “testowych” kont wykorzystywanych w ramach programu Whitehat.

Obecnie URL wykorzystany do kasowania kont nie istnieje, błąd zwraca także dostęp do katalogu skryptu:

Facebook nie ma tego zasobu

Facebook nie ma tego zasobu

…także Google nie zaindeksowało tego URL-a:

Google nie zaindeksowało tego skryptu

Google nie zaindeksowało tego skryptu

Facebook odmówił bo…

Facebook odmówił wypłaty nagrody, bo wedle opinii firmy przy pomocy powyższego skryptu kasować można było tylko konta “testowe” założone w ramach projektu Whitehat, a nie poprzez normalną procedurę zakładania konta na Facebooku.

Ehraz twierdzi jednak, że konto na którym demonstrował błąd było “normalne” i jako dowód podaje wyniki wyszukiwania dla swojego demonstracyjnego konta, utrzymując, że gdyby było ono założone w ramach projektu Whitehat, nie byłoby widzialne w Google.

Eraz to ściema?

Internauci natomiast sugerują, że cały wpis może być fałszywy; według nich Ehraz jest za młody jak na osiągnięcia, którymi się chwali. Kiedy zaczynaliśmy pisać ten artykuł (godz. 18.00) na blogu Eraza była zakładka “Hall of fame” z logotypami wielu firm, w których rzekomo miał znaleźć błędy — linki jednak prowadziły do nieistniejących adresów, a teraz wygląda na to, że cały dział “Hall of fame” po prostu zniknął… Ciągle można jednak zobaczyć część starych postów w cache Google — stare URL-e do innych postów, jak np. ten o XSS w Yahoo, nie działają).

Może Eraz to rzeczywiście prowokacja, a ktoś kto za tym stoi liczy, że podobnie jak w przypadku Khalila, internauci zrzucą się na nagrodę pieniężną? Chyba trzeba poczekać na oświadczenie Facebooka w tej sprawie.

PS. Kilka dni temu na jaw wyszło, że można było skasować zdjęcie dowolnego użytkownika na Facebooku. Odkrywca błędu zgarnął 12 500 USD za ten błąd.

Aktualizacja 23:20
Jest i wypowiedź inżyniera Facebooka, potwierdzająca, że błędu nie było:

This is simply a hoax. The html source shown in the video clearly says “No test user was deleted”. We’ve verified in our logs that the victim account was manually deactivated by visiting https://www.facebook.com/deactivate.php. Anyone can visit https://www.facebook.com/whitehat/accounts/ and verify that the query parameter used by this endpoint is selected_test_users not selected_users. We’ve also audited our code to verify that there’s no variant of this exploit that works against that endpoint or any other that we’ve found. In fact, the most recent code change to this endpoint was in April and was routine maintenance that had no security implications.

Aktualizacja 6.09.2013
Nasz bohater przeszedł w defensywną ofensywę — straszy nas prawnikami. Zadał sobie nawet trud tłumaczenia na j. polski :)

Ten e-mail od Ehraza Ahmeda miał nas chyba przestraszyć, nie przestraszył :)

Ten e-mail od Ehraza Ahmeda miał nas chyba przestraszyć, nie przestraszył :)

Artykuł oczywiście zostaje. Bez zmian. W napięciu czekamy na pozew ;)

Przeczytaj także:



62 komentarzy

Dodaj komentarz
  1. Hah! Próbowałem bawić się tym .php kiedyś :) Robiłem dokładnie to samo – nie działało. Było zabezpieczone. Gość ściemnia :)

  2. Dokładnie, ściema. Poza tym parametr “__user” jest opcjonalny ;-)

  3. Sam zgłosiłem ok. tydzień temu błąd, który polega na braku rozróżniania wielkich liter i małych w haśle można wpisywać dowolnie. Co tym samym wyklucza połowę kombinacji dla liter..

    Co ciekawsze – czyżby FB zapisywał od razu w bazie danych hasła, np. małymi znakami i tak samo przy porównywaniu zamieniał wszystkie na np. małe? Na to wygląda, bo w innym wypadku przykładowo jak wiadomo md5(‘ABC’) != md5(‘aBc’).

    I piękna odpowiedź działu Security Facebooka – akceptują takie formy hasła, bo dużo osób zgłaszało im problemy z logowaniem czego powodem był włączony Caps Lock i uważają, że nie wpływa to istotnie na bezpieczeństwo..:

    We accept three forms of the user’s password to help overcome the most common reasons that authentic logins are rejected. In addition to the original password, we also accept the password if a user inadvertently has caps lock enabled or their mobile device automatically capitalizes the first character of the password. We feel this does not significantly impact the security of the user’s password or their account.

    • Na to wychodzi :) Małe litery nie są aż takim ułatwieniem jeśli dany użytkownik nie korzysta z hasła pokroju bartek1. Hasło pokroju 2Cat5G0oN jest równie “groźne” jeśli będize zapisane tylko małymi literami, kwestia edukacji użytkowników :p

    • Rozwiązaniem byłoby przykładowo
      md5(strtolower(‘ABC’)) == md5(strtolower(‘aBc’)).
      Nie zmienia to faktu, że poszli na łatwiznę.

    • Mateusz,
      I o to właśnie chodzi. Właśnie wygląda na to że tak robią.

    • Nie tylko ignorują wielkie czy małe litery. Spróbujcie się zalogować podając swój adres email tylko do @.

    • Tak samo nie wiem dlaczego, ale z zapisanymi ciasteczkami po wpisaniu starego hasła do fb pokazuje od razu imię i nazwisko osoby, informację czy to jesteś na pewno Ty i informację o tym, że podane hasło jest błędne. Po usunięciu ciasteczek wszystko działa ok.

    • Sprawdziłem przed chwilą opcję z wpisywaniem hasła tylko z małych lub samych dużych, fb odrzuciło jako błędne hasło. Sprawdzałem także z podaniem adresu e-mail tylko do @ i wtedy włącza się asystent pomocy w odnalezieniu konta.

    • Nie wierzę. Po raz kolejny wygoda ponad bezpieczeństwo. Szkoda, że Ci “uświadomieni” także na tym cierpią.

    • It’s not a bug, it’s a feature ;)

    • No dobrze, więc jeśli FB przetrzymuje ZASZYFROWANE hasła w bazie to w jaki sposób mogli przekonwertować wszystkie hasła na małe litery nie znając hasła??? Znaczy to, że hasła w fb nie są przechowywane w bezpieczny sposób!!!

    • @trojan
      Mogli dokonywać takiej konwersji przy pierwszym poprawnym logowaniu ew. dodatkowo sprawdzić wszystkie kombinacje wielkości liter do np. 8 znaków.

    • o tym problemie to ja juz od 2 lat wiem i pisalem do FB i do roznych portali (w tym chyba do niebezpiecznika) i nikt nie zareagowal .

    • Ale sęk w tym, ze to nie błąd a feature :)
      Nie będę robił przeklejki: http://pccode.pl/a-ty-ile-masz-hasel-do-facebooka/

    • “In addition to the original password, we also accept the password if a user inadvertently has caps lock enabled or their mobile device automatically capitalizes the first character of the password.”
      Przecież to wszystko da się sprawdzić przy logowaniu, nie wiem po co mieli by trzymać wszystkie wersje w bazie.
      if(hash_z_bazy == hash(haslo) || hash_z_bazy == hash(odwroc_wszystkie_literki(haslo)) || hash_z_bazy == hash(odwroc_pierwsza_literke(haslo))
      {
      ok();
      }
      else not_ok();

    • Czyli do jednego hasha będą pasować 3 różne hasła, czyli będzie ogólnie 3 razy mniej kombinacji. Mało znacząca różnica imho. Poprawcie mnie jeśli się mylę :)

    • Zauważcie, że to NIE jest zwykłe zamienienie liter na małe. Gdyby tak było to faktycznie mogłoby zrobić różnicę ;)

  4. a mi najbardziej podoba się fb_dtsg=AQA1E-WE :))

  5. Nie koniecznie musisz podawać email przy logowaniu, wystarczy nazwa użytkownika która jest domyślnie początkiem maila do @.

    • Hmmm… biuro@domena1.pl != biuro@domena2.com != biuro@domena3.eu, więc jak rozróżniają nazwę użytkownika?

    • wtedy nazwa uzytkownika to np biuro1, biuro2 itp.. Mozna na profilu sobie sprawdzic jaka nazwa uzytkownika jest nam przypisana i FB automatycznie z maila pobieral taka nazwe. A jak sie powtarzala no to dodawali liczby

  6. A po co zgłaszać im jakiekolwiek błędy?

    • dla kasy, bo jesli chodzi o bezpieczenstwo to powinni dac robote tym ktorzy sitkują ich serwis…

    • $$

    • Żeby zarabiać na życie. 12k USD ustawiłoby Cię na jakiś czas, nieprawdaż?

    • dla hajsu?

  7. A mnie je… ten cały facebook :)

    • Ty to jesteś alternatywny, stary

  8. Palestyńczyk nie złamał żadnego regulaminu. Konta testowe są wymagane do testowania bugów, a admini FB oficjalnie poinformowali go, że to co odkrył bugiem nie było.
    Niewykluczone więc, że były to problemy językowe adminów FB.

  9. Coś nie widzę aby ktoś zauważył, że z tym CapsLock to jest nieco inny temat:
    (z resztą trolololol sprawdzał wpisywanie tylko małymi literami i mu odrzuciło hasło)

    Moim zdaniem FB sprawdza po prostu także hasło pisane w ODWRÓCONY sposób, czyli:
    ‘ABcdEF’ == ‘abCDef’

    i w moim odczuciu faktycznie nie musi to mieć ogromnego znaczenia dla bezpieczeństwa (“significantly impact the security “)

  10. Ostatni screen… Ukrywanie fragmentów za pomocą painta i to tak, by dało się odczytać po połączeniu górnego i dolnego wpisu. Not sure if idiot or troll.

    • Plausible deniability :>

    • 243/213 :D

    • dokładnie, podoba mi się jak “zaciemniony” został adres IP ;)

    • + kolejny mądrala jadący na defaultowym pasie :D

  11. Zablokował bloga (i będzie udawał, że nic się nie stało) czy zawsze wymagał uprawnień do przeglądania? :P

  12. ja bym ten post usunął. Nigdy nie wiadomo czy nie ma exploita na niebezpiecznika i będzie wam jeszcze łyso!

    • Właśnie… nie wiadomo. Idąc twoim tokiem myślenia należy usunąć wszystkie artykuły ze strony dziennika Guardian, bo GB tego nie akceptuje i jeszcze im coś zrobi… śmieszny jesteś.

    • Dodam, że artykuły są o takim Panie, który teraz tkwi w Moskwie – z telewizji więcej się dowiesz.

    • to był sarkazm…

    • @Mark
      Ty tak serio? :D

  13. ale co by nie mówić, to ukrywanie IP macie na poziomie :)

  14. Hindusi czytają niebezpiecznika? :O

  15. A propos haseł na FB to miałem kiedyś śmieszną sytuację. Miałem hasło $x i zmieniłem na $x. Wylogowałem się, próbowałem się zalogować i FB wyrzucał błąd, że korzystam ze starego hasła i muszę się zalogować korzystając z nowego. Tylko jak, skoro nowe==stare.

    A pisząc do supportu, bo dostało się bana na nie wiadomo ile (FB coś zmienił w logowaniu i Miranda logując się starym sposobem była odczytywana jako dająca nieprawidłowe hasło), człowiek czuje się jak Józef K.

  16. Jestem pod wrażeniem, jak “dokładnie” zamalowaliście dane użytkownika :)

  17. Cenzura na screenie jest poprostu epicka… xD
    Nie no na kazdym mailu zakryta 2 polowa cyfr :D
    Wgl nie widac tam 212…

    • Końcówka to nie 212. Widać dla niektórych nawet taka “cenzura” jest przeszkodą nie do przeskoczenia… ;-)

    • @PK:
      Dziękujemy za zmniejszenie potencjalnej przestrzeni przeszukiwania ;)

    • Proszę o wytłumaczenie: geolokalizacja adresu wskazuje na Indie ale tracert na Londyn. Why? :)

    • no debil…

    • Końcówka to 213, a email to contact[wstaw nazwisko Ahmeda] ofc at gmail ;)

      No, i taką ‘cenzurę’ to ja rozumiem ^^

    • Widać, że ostatnia cyfra to 3…

  18. raczej 213, 218. Końcówka jest 2 razy “zamalowana”

  19. na liscie whitehat FB koles sie mimo wszystko znalazl:
    hxxps://twitter.com/about/security

  20. bug bounty to nic innego jak podać DO czekając w okienku poczty na zwrot podatku.

  21. Wy tak z tym IP to specjalnie? admin:admin :P Jakiś ruter
    D-Linka. Dostanę ciasto?

  22. Hey, remove this post or else i bring in the cops,

    #Troll

  23. Metoda wcale nie kasuje konta tylko powoduje ze zawartość widzi tylko właściciel konta ;)

  24. contactehraz??? Troling on :):)

Odpowiadasz na komentarz KlawyMarcin

Kliknij tu, aby anulować

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: