Kto promował swoje artykuły, aby dotrzeć do większej ilości czytelników, ten wie, że do rozliczenia za reklamy lub inne usługi Facebook używa wprowadzonych do naszego konta kart płatniczych, konta PayPal lub kodów promocyjnych, z których są automatycznie pobierane opłaty. Płatność kartą w sieci za usługi czy zakupy ma wiele zalet — jest to metoda bardzo bezpieczna i co bardzo ważne, transakcje wykonane kartą mogą zostać cofnięte w ramach ”chargeback”.

Pranav zgłosił błąd, który polega na wyodrębnieniu ostatnich 4 znaków karty płatniczej dodanej do metody rozliczenia. Najpierw Facebook przypisuje unikalny 15-cyfrowy losowy numer do każdej dodanej karty, która jest powiązana z kontem użytkownika na Facebooku. Taki 15-cyfrowy numer ID jest następnie używany przez Facebook do wyszukiwania danych o karcie płatniczej. Niestety atakujący korzystając z technologii stworzonej przez Facebooka (GraphQL) mógł wyodrębnić taki identyfikator i uzyskać dane o karcie kredytowej:

  • 4 ostatnie cyfry;
  • datę ważności (miesiąc i rok);
  • inne szczegółowe informacje zapisane na karcie i koncie użytkownika;
REQUEST
POST /graphql?q=node(<encoded p2p_credential_id string>)
{__typename,
id,
credit_card{
credential_id,
card_association,
number,
expire_month,
expire_year,
address {
__typename,
postal_code ,
full_address,
single_line_full_address,
street,
city,
country,
postal_code
}
},
mobile_csc_verified,
zip_verified,
web_csc_verified,
method_category,
commerce_payment_eligible,
personal_transfer_eligible,
is_default_receiving
}

Spośród dostępnych metod wyodrębnienia numeru ID, autor wymienia:

  • Poprzedni bug, który został przez niego zgłoszony w ubiegłym roku. Facebook uporał się z nim, ale jak się okazało nie do końca poprawnie.
  • Atak słownikowy na odgadnięcie identyfikatora (pierwsza cyfra musi być z przedziału 0-9, pozostałe 14 cyfr mogą mieć dowolne ułożenie od 0-9, np. 9100000000000002). Autor zaznacza, że do udowodnienia metody „siłowej” wykorzystał własne testowe konta. Wygenerowanie prawdziwych identyfikatorów łamałoby postanowienia Facebooka w ramach programu BugBounty.
  • Użytkownicy z uprawnieniami administratora, którym uusnięto prawa do zarządzania kontem, mogli nadal uzyskać ID i tak samo wyodrębnić informacje o karcie.

W przedstawionej metodzie atakujący uzyskuje informację o ostatnich 4 cyfrach karty. Pozostałe 20 cyfr mogą zostać prawidłowo wygenerowane wykorzystując algorytm Luhna, który determinuje sposób generowania numerów kart płatniczych.

AUTOR:

Adrian Ścibor

Podziel się