Expunerea postărilor private pe Instagram prin polaris_timeline_connection
#####
Analiză tehnică completă a unei vulnerabilități server-side negate oficial
Platformă afectată: Instagram
Deținut de: Meta
Perioada descoperirii: Octombrie 2025
Durata disclosure-ului: 102 zile
Tip vulnerabilitate: Server-side authorization bypass
Impact: Acces neautorizat la conținut privat (imagini + descrieri)
Status final: Patch aplicat în tăcere, caz închis ca Not Applicable
1. Introducere
###
Acest articol documentează o vulnerabilitate reală, exploatabilă și demonstrată din infrastructura Instagram (mobile web), care a permis acces complet neautentificat la postări aparținând unor conturi setate ca private.
Deși problema a fost corectată în mod demonstrabil la scurt timp după raportare, Meta a refuzat recunoașterea existenței ei, susținând că nu a fost niciodată reproductibilă.
Articolul de față nu este o opinie, ci o reconstrucție tehnică și cronologică, bazată pe:
-
dovezi video cu hash criptografic,
-
scripturi PoC,
-
loguri de rețea,
-
commit-uri Git timestamp-ate,
-
corespondență oficială Meta.
2. Contextul descoperirii
Vulnerabilitatea a fost descoperită accidental, în timpul dezvoltării unui workflow automation tool pentru cereri HTTP.
Analizând răspunsuri HTML returnate de Instagram mobile web, am observat un comportament neobișnuit:
-
conținut media era returnat în HTML,
-
deși cererea era complet neautentificată,
-
iar profilul țintă era setat explicit ca private.
Inițial, ipotezele luate în calcul au fost:
-
cache CDN defectuos,
-
bleed de sesiune,
-
eroare locală de testare.
Toate au fost eliminate prin testare repetată și controlată.
3. Confirmarea vulnerabilității
Pentru a exclude orice posibilitate de eroare, testarea a fost repetată pe propriul meu cont privat:
-
Contul a fost setat private
-
A fost publicată o postare nouă
-
S-a așteptat propagarea normală
-
S-a trimis o cerere GET fără login, cookie, token sau sesiune
Rezultatul:
-
postarea privată era prezentă în răspuns,
-
imaginea se putea accesa direct din CDN,
-
descrierea (caption) era inclusă.
Acest pas este esențial: nu exista niciun vector de atac „extern”.
Serverul Instagram genera date private pentru utilizatori neautentificați.
4. Descriere tehnică detaliată
###
4.1 Endpoint-ul
####
GET https://www.instagram.com//
Cererea:
-
nu include cookie-uri
-
nu include token-uri
-
nu include headere de autentificare
Singura condiție era utilizarea unor headere specifice mobile (User-Agent / Accept).
4.2 Răspunsul serverului
Serverul returna HTML care conținea JSON embeduit.
În structura acestui JSON apărea obiectul:
polaris_timeline_connection
Cu următoarea structură relevantă:
{
"polaris_timeline_connection": {
"edges": [
{
"node": {
"display_url": "https://scontent.cdninstagram.com/...",
"edge_media_to_caption": {
"edges": [
{ "node": { "text": "caption privat" } }
]
}
}
}
]
}
}
####
####