Geliştirici belgelerinde tanımlandığı şekliyle Facebook Graph API’sinde, çeşitli API uç noktalarında kimlik doğrulaması yapmak için çeşitli erişim belirteçleri vardır.
- Kullanıcı Erişim Jetonu
Kullanıcı adına normalde OAuth yoluyla alınan isteklerde bulunmakfacebook.com/dialog/oauth
- Sayfa Erişim Jetonu
aracılığıyla edinilen sayfa adına talepte bulunungraph.facebook.com/pageID?fields=access_token
- Müşteri Jetonu
uygulama düzeyindeki (yönetici değil) uç noktalar için kullanılır, alfasayısal sırrın alınmasıyla elde edilirgraph.facebook.com/appID?fields=login_secret
ve formda birleştirmeappID|login_secret
- Uygulama Erişim Jetonu
Uygulama düzeyinde yönetici rolü uç noktaları için kullanılır ve bir uygulamada yönetim sağlar; belirteç normalde şu biçimdedir:appID|[alphanumeric+special characters]
Tokenların farklı sınıflandırmalarına ek olarak, bir token üçüncü taraf bir uygulamadan (örneğin, geliştiriciler.facebook.com aracılığıyla oluşturulan bir uygulama) veya iOS ve Android’deki Facebook/Instagram gibi birinci taraf bir uygulamadan gelebilir.
Instagram için belirli uç noktalara yönetim erişimi vermiş olabilecek birden fazla uygulama erişim jetonunu Instagram için almak mümkündü.
Meta birkaç yıldır üzerinde çalışıyor Engellemek“her iki yönetim mantığının da sunucu tarafında tanımlanmasını ve yerel bir uygulama olarak oluşturulmasını sağlayan bir çerçeve”. Bu çerçeve genellikle Facebook ve Instagram mağazalarında şu şekilde görülebilir: Blok uygulamaları.
Genel kurulum aşağıdaki parametrelere sahiptir: app_id
, params
Ve versioning_id
bir paket ağacında verilen yanıtla birlikte. Yukarıdaki fotoğraflarda incelemeler sayfasında bir app_id
ile ilgili com.bloks.www.bk.commerce.ratings_and_reviews.all_reviews
. Pakette Blok bileşeni ve eylemleri Base64 kodlu dizeler aracılığıyla yerleştirildi. Base64 dizelerinden birinin kodu çözüldükten sonra aşağıdaki gibi bir bölüm elde edildi:
ispy0_main_f01㙅#$&camera_rollChoose photobk.action.bloks.InflateSyncig.action.navigation.LaunchMediaPickerV2unified_rating_and_review_composerevent_nameerror_messagecomposer_typereferral_surfacead_group_idpage_idproduct_idinvoice_idcharacter_countrating_valuephoto_countprefill_ratingis_editidentity_preferencesurvey_versionseller_ig_idpurchase_sourcepurchase_source_metadatasignatureadd_photo_pressedPRODUCTpdp_all_reviews_screen3537638846322537ig_product_onsite_v090010214936182unknownbk.action.logging.LogEventcatalog_item_uploads124024574287414|Jor32q7Rh50x2LZL1Aw2F4f8bjw_f02_f03ig.action.media.UploadMediaV3COMMERCE_RATINGS_AND_REVIEWS_COMPOSER:is_image_uploading:17841401338810001bk.action.bloks.WriteGlobalConsistencyStorephoto_upload_startcom.bloks.www.bk.commerce.ratings_and_reviews.composer.media_upload.asyncparamsserver_paramsclient_input_paramscontainer_component_idrating_and_review_typeserialized_composer_contextmedia_source_typeis_local_selectedproduct{"rating_and_review_type":"product","merchant_id":90010214936182,"product_id":3537638846322537,"is_modal":false,"referral_surface":"pdp_all_reviews_screen","seeded_star_index":null,"rating_and_review_metadata":null,"extra_logging_info":null,"survey_entry_point":"product_detail_page","root_screen_id":null,"invoice_id":null}LIBRARYopaque_token_handlenext_image_index112982998200005bk.action.bloks.GetVariable2bk.action.string.JsonEncode_f04_f05current-screenbk.action.bloks.AsyncActionWithDataManifest
Dikkat edilmesi gereken bölüm
catalog_item_uploads124024574287414|Jor32q7Rh50x2LZL1Aw2F4f8bjw_f02_f03ig.action.media.UploadMediaV3
Bu değerler şu şekilde kullanılacaktır: ig.action.media.UploadMediaV3
incelemenin bir parçası olarak fotoğraf yükleme isteği olarak yapılan işlem
POST /catalog_item_uploads/D52D5D86-308F-4DA5-B353-46B58BF47BD4 HTTP/2
Host: rupload.facebook.com
Priority: u=2, i
Offset: 0
X-Entity-Type: image/jpeg
X-Entity-Length: 10234
Content-Type: application/octet-stream
X-Ig-Bandwidth-Speed-Kbps: 7623.000
Content-Length: 10234
Authorization: OAuth 124024574287414|Jor32q7Rh50x2LZL1Aw2F4f8bjw
Tanımlanan belirteç Authorization
Buradaki başlık bir müşteri jetonu değil, deneyimlerime göre bunu fark etmek için iyi bir gösterge, bir müşteri jetonunun aşağıdaki kalıba sahip olmasıdır [0-9]|[a-z0-9]*
. Yani bu bir uygulama jetonu. Tahribatsız bir çağrı graph.facebook.com/app/roles
Yoğun bir şekilde test etmeye başlarsam Instagram’a ne olacağını bilmediğim için token kullanıldı. Burada yönetici veya geliştirici erişimine sahip yaklaşık 25 Facebook kullanıcı kimliği listeleniyor; daha fazla sayfalama isteğini kontrol etmedim veya profillerin hiçbirine göz atmadım. Bazı Facebook kimliklerinin kısalığına bakınca bunların Meta çalışanları olduğu bana mantıklı geldi.
Bu noktada bir rapor gönderdim ve Whitehat Workplace’teki bir çalışana ping atarak konuya dikkat çektim ve etki yaratmak için izin istedim. Konsept kanıtı yeterliydi, artık jetona dokunmamam talimatı verildi. Herhangi bir varyantı ele aldığımdan emin olmak için, GraphQL’de bir sonraki hatayı, buna benzer olası blokları gidermek için kullandım. com.bloks.www.bk.commerce.ratings_and_reviews.composer
ve ek bir uygulama jetonu buldum. Ancak Meta bana bu uygulamayı da kontrol ettiklerini söyledi. Jetonların gömülü olduğu tüm uç noktalar birkaç saat içinde kaldırıldı.
Darbe (Meta tarafından tanımlandığı gibi)
Kötü niyetli bir kişinin birinci taraf uygulama IG erişim belirtecini almasına olanak verebilecek bir uç nokta sorunu belirlediniz. Daha fazla etkiyi önleyecek korumalarımız olsa da, raporunuz bizi savunmamızı güçlendirmeye ve kod tabanımızda gelecekte benzer sorunları önlemek için değişiklikler yapmaya yönlendirdi. Bu hatayı düzelttik ve herhangi bir kötüye kullanım kanıtı görmedik.
Zaman çizelgesi
24 Şubat 2022 @ 01:10 – Rapor gönderildi
24 Şubat 2022 @ 01:11 – İşyeri Üzerinden Meta Güvenliğine Ping Atıldı
24 Şubat 2022 @ 02:56 – Meta tarafından önceliklendirilen rapor
24 Şubat 2022 @ 05:20 – Meta tarafından düzeltme onayı
19 Mayıs 2022 – Meta tarafından verilen 30.000 ABD Doları Ödül,
6.000 $ Platin lig bonusu
2.250$ Zaman gecikmesi bonusu
50$ BountyConEdu bonusu
Meta’ya teşekkürler ve nöbetçi çalışana özel teşekkürler.
Referanslar:
https://developers.facebook.com/docs/facebook-login/guides/access-tokens
https://techcrunch.com/2021/03/10/facebook-targets-emerging-markets-with-instagram-lite-a-new-android-app-that-takes-up-just-2mb-in-170- ülkeler/