Cyber Report 53 baxış

>_ Sadəcə ID ilə dünya kubokunu “rickroll” edə bilərdim…

BobDaHacker təxəllüslü kibertəhlükəsizlik tədqiqatçısı öz hesabında paylaşdığı reporta görə sadəcə şəxsiyyət vəsiqəsi ilə FIFA-nın qeydiyyat portalı vasitəsilə, 2026 Dünya Kubokunun bütün canlı yayım infrastrukturuna - RTMP streamlərinə, kommentator sistemlərinə və hətta matç idarəetmə panelinə icazəsiz giriş əldə etmək mümkün olub.

#Broken Access Control
>_ Sadəcə ID ilə dünya kubokunu “rickroll” edə bilərdim…
Photo by My Profit Tutor on Unsplash

Bəzən ən böyük fəlakətlər ən sadə səbəblərdən baş verir. Problemlər heç vaxt qapını döymür, amma bu dəfəki problem açıq qapıdan içəri girib. BobDaHacker təxəllüslü kibertəhlükəsizlik tədqiqatçısı öz hesabında paylaşdığı reporta görə sadəcə şəxsiyyət vəsiqəsi ilə FIFA-nın qeydiyyat portalı vasitəsilə, 2026 Dünya Kubokunun bütün canlı yayım infrastrukturuna - RTMP streamlərinə, kommentator sistemlərinə və hətta matç idarəetmə panelinə icazəsiz giriş əldə etmək mümkün olub. Ən pisi isə odur ki, bunu FIFA-ya bildirib, təhlükəsizliyin təmin olunması ilə tamam başqa bir macəraya çevrilib.

//Qeydiyyatdan adminə gedən yol

Hər şey FIFA-nın agent platformasından (agents.fifa.org) başlayır. Bu portal futbol agenti olmaq istəyən hər kəsin sadəcə şəxsiyyət vəsiqəsini yükləyərək qeydiyyatdan keçə biləcəyi bir platformadır. Tədqiqatçımız da agent olmaq üçün qeydiyyatdan keçməyə çalışır, 2 uğursuz cəhtdən sonra 3-cü dəfə nəhayət ki, uğurlu olmağı bacarır.

Maraqlı hissə isə qeydiyyatdan keçən kimi hesabın avtomatik olaraq FIFA-nın Microsoft Entra tenant platformasına əlavə olunmasıdır.

Nəticə olaraq tədqiqatçı fdp.fifa.org (Football Data Platform) ünvanına daxil olmağa cəhd edəndə angular frameworkü üzərində qurulmuş frontend JWT tokenində role claim axtarır, “NO_ROLES” görür və “sizin üçün rol təyin edilməyib” mesajı göstərir. Klassik access denial xətası. Problem isə yoxlamanın sadəcə client-side aparılmasıdır. Backend API-ları heç bir rol yoxlaması aparmadan tenanta üzv olan istənilən hesaba məlumat ötürə bilirdi.

//Dünya kubokunun idarəetmə paneli

Client-side qorumanı bypass etdikdən sonra tədqiqatçı Streamin Management panelinə, yəni 2026 Dünya kubokunun bütün matçlarının production mühitində işləyən canlı yayım idarəetmə mərkəzinə qoşula bilib.

Hər oyun üçün 5 kamera bucağının görüntüləri var (PGM, Tactical, Cameral, High Behind Left, High Behind Right). Hər birinin də öz RTMP ingest URL-i, preview manifesti və broadcast partnyor media şirkətlərinə gedən output URL-i mövcud idi. Daha da pis olan odur ki, 5 kameranın hamısı eyni stream keyi işlədirdi. Yəni bir açar bütün matçlar üçün kifayət edirdi.

//Streaming management paneli

Araşdırmaçı preview manifestlərindən birini VLC-də açaraq bunun real, canlı yayım olduğunu təsdiqləyib daha sonra isə dərhal bağlayıb. Panelin funksiyası sadəcə streamləri izləmək deyil, həm də başlatmaq, dayandırmaq olub.

Streaming panel

//Nuclear option: Kim istəsə Subway Surfers oynaya bilərdi

Buradakı riski başa düşmək üçün texniki arxa plana diqqət etmək lazımdır. RTMP ingest URLi stationdakı kameradan gələn görüntünün broadcast zəncirinə girdiyi ilk nöqtədir. Kameradan gələn görüntü RTMP ingestə daxil olur daha sonra isə MediaKinda ötürülür, o da öz növbəsində partnyor olan media nümayəndələrinə bu görüntüləri ötürür və nəticədə televizorunuzda futbola baxa bilirsiniz.

Stream key URL daxilində idi. Yəni hücumçu istədiyi təqdirdə həmin key ilə RTMP ingesə öz video streamini göndərib əsas görüntünü əvəzləyə bilərdi. Bir key bütün kameraları əhatə etdiyi üçün bu prosesi eyni anda bütün görüntülərə tətbiq etmək mümkün idi. Nəzəri olaraq bu real vaxtda milyarlarla insanın televizorundakı görüntünü dəyişmək demək idi.

//Write permission, kommentator sistemi və “debbie.xlsx”

Access sadəcə olaraq oxumaqla məhdudlaşmırdı. fdp.fifa.org-un management bölməsində canlı statistikanı redaktə etmək, matç nəticələrini dəyişmək, rəsmi başlama başlama vaxtını tənzimləmək və taktiki heyət məlumatlarını dəyişmək üçün write əməliyyatları da mövcud idi. Backend bunları “NO_ROLES” hesabından belə qəbul edirdi. Bu məlumatlar isə birbaşa olaraq Commentator Information System (cis.fifa.org) ünvanına axırdı ki, bu ünvan kommentatorların matç zamanı canlı istifadə etdiyi bir sistemdir.

Writing permission

Bonuş olaraq araşdırmaçı bir Azure Function Appi də aşkar edib ki, bu da heç bir rol yoxlaması aparmadan 23 daxili FIFA faylının (bura transfer hesabatları, gəlirlər barədə məlumat və “debbie.xlsx” adlı bir sirli fayl da daxildir) Azure Blob Storage linklərini qaytarırdı.

{
    "Size": 10,
    "Skip": 0,
    "Total": 23,
    "Items": [
        {
            "Name": "00_TransferCount_in_ENGLISH.xlsx",
            "BlobPath": "https://xxxxxxxxx.blob.core.windows.net/spreadsheet-storage/00_TransferCount_in_ENGLISH.xlsx"
        },
        {
            "Name": "0_pending_transfers_example.xlsx",
            "BlobPath": "https://xxxxxxxxx.blob.core.windows.net/..."
        },
        {
            "Name": "Debbie.xlsx",
            "BlobPath": "https://xxxxxxxxx.blob.core.windows.net/..."
        }
    ]
}

//Responsible Disclosure: 10 cəhd, sıfır rəsmi cavab

FIFA-nın nə bug bounty proqramı, nə də rəsmi təhlükəsizlik əlaqə kanalı yoxdur. Tədqiqatçı buna görə problemi bildirmək üçün:

  • 10-dan çox FIFA email ünvanına yazıb (beşi bounce olub, qalanları cavabsız qalıb)
  • FIFA-nın Football Technology rəhbərinə WhatsApp-dan yazıb
  • FIFA-nın Zürix və media nömrələrinə zəng edib (xəttlər bağlı olub)
  • Dallasdakı International Broadcast Centre-ə zəng edib ( voicemailə düşüb)
  • MediaKinda zəng edib (yeganə tərəfdir ki, dərhal reaksiya alıb və sübutların email ilə göndərilməsini tələb edib)
  • Host Broadcast Servicesə zəng edib (dəstək göstərə bilməyiblər)
  • Nəhayət ABŞ-ın CISA agentliyinin 24/7 əməliyyat mərkəzinə və FBI-dakı əvvəldən tanıdığı kontaktlarına müraciət edib.

Bütün bu proses bir gecə ərzində baş verib. Səhəri gün boşluq bağlanıb, backend nəhayət server tərəfdə də 403 qaytarmağa başlayıb. FIFA-dan isə heç bir rəsmi cavab, təşəkkür və ya kompensasiya təklifi gəlməyib.

The Timeline

//Root cause

Bu hadisənin bütün mahiyyətini bir cümləyə sığdırmaq mümkündür: frontenddə göstərilən “access denied” real autentifikasiya deyil. FIFA-nın müxtəlif tətbiqləri eyni Entra tenantını istifadə edirdi, frontend role claimlərini yoxlayıb ekranda göstərirdi, amma backend APIlar tenanta üzv olan istənilən autentifikasiya olunmuş istifadəçiyə etibar edirdi. Bu OWASP-ın illərdir birinci sırada saxladığı “Broken Access Control” problemini nümunəsidir.

>_exit

Bu hadisə bir daha göstərir ki, layihənin miqyası təhlükəsizlik güclüdür mənasına gəlmir. Dünyanın ən böyük tədbirinin broadcast infrastrukturu, sıravi bir istifadəçi qeydiyyatı ilə tamamilə açıla bilib.

$ khazrisec --analyze fifa-fdp-disclosure.log
[INFO] Auth model: Client-side role check / Server-side: NONE
[CRITICAL] RTMP stream keys exposed for all World Cup 2026 matches
[CRITICAL] Write access confirmed on live match management endpoints
[INFO] security.txt: NOT FOUND
[INFO] Bug bounty program: NOT FOUND
[INFO] Escalation path required: Email -> WhatsApp -> Phone -> CISA -> FBI
[+] Status: Patched overnight, silently, without acknowledgment.
[+] Lesson: "Access Denied" on screen != "Access Denied" on server.
$ exit --status: Broken_Access_Control