- Sam Curry menemukan bahwa permintaan HTTP yang dikirim dari jaringan rumahnya diputar ulang 10 detik kemudian dari IP DigitalOcean. Setelah mengganti gateway Cox Panoramic Wifi, masalah itu hilang, sehingga ia mencurigai modem lamanya telah dibobol
- IP lalu lintas replay
159.65.76.209terhubung dengan domain terkait Adidas, domain phishing ISG Latam, serta domain untuk C&C yang tampak dibuat secara algoritmis, tetapi jalur pembobolan sebenarnya belum dipastikan - Saat menganalisis portal Cox Business pada 2024, ditemukan API berbasis Spring di belakang
/api/cbma/beserta dokumentasi Swagger. Dari sekitar 700 API, sebagian menunjukkan masalah bypass otorisasi dengan bergantian mengembalikan error autentikasi dan200 OK - Bypass otorisasi ini memungkinkan pencarian pelanggan, pengambilan PII akun, pengambilan alamat MAC perangkat, pengambilan IP modem, baca/tulis akun Cox Business, serta perubahan konfigurasi perangkat seperti mengganti SSID WiFi; dalam PoC, SSID miliknya berubah menjadi
Curry - Cox menurunkan API yang terekspos dalam 6 jam setelah laporan, dan keesokan harinya bug tidak lagi dapat direproduksi. Cox menyatakan layanan API tersebut dimulai pada 2023, terpisah dari pembobolan modem pada 2021, dan tidak ada riwayat eksploitasi sebelumnya
Lalu Lintas Aneh yang Bermula dari Modem Rumah
- Untuk menguji kerentanan blind XXE dari jaringan rumah, ia menjalankan server HTTP Python sederhana di sebuah instans AWS dan memeriksa apakah ada permintaan eksternal yang diterima
- Segera setelah permintaan yang dikirim dari komputer rumah dengan
curltercatat normal, IP tak dikenal159.65.76.209meminta ulang path yang sama 10 detik kemudian - Ketika ia meminta path lain lewat Safari di iPhone, IP yang sama juga memutar ulang permintaan identik, sehingga tampak seolah lalu lintas seluruh jaringan rumah sedang diamati, bukan hanya komputer tertentu
- Fenomena yang sama berulang pada instans AWS baru dengan Nginx, lalu pada instans GCP, sehingga kemungkinan pembobolan AWS dikesampingkan
- Setelah gateway Cox Panoramic Wifi lama dikembalikan ke toko dan diganti dengan perangkat baru, lalu lintas replay menghilang dan tidak ada lagi “IP lain” yang muncul di log
Investigasi 159.65.76.209
- IP tersebut dipastikan dimiliki oleh DigitalOcean, bukan alamat ISP Cox
- Dalam catatan VirusTotal, dari 5 domain yang baru-baru ini terhubung, 3 tampak sebagai situs phishing dan 2 tampak seperti server email
regional.adidas.com.pyisglatam.onlineisglatam.tkmx12.limit742921.tokyomx12.jingoism44769.xyz
isglatam.onlinedanisglatam.tksempat menjadi situs web phishing yang menargetkan perusahaan keamanan siber Amerika Selatanisglatam.com- Berdasarkan catatan URLscan, dua domain terkait ISG Latam tersebut meng-host situs phishing BeEF umum, dan catatan terkait dapat dilihat di hasil urlscan.io
- IP yang sama terhubung dengan Adidas, ISG Latam, dan replay lalu lintas modem, tetapi kemungkinan IP itu telah direalokasikan di antara beberapa pemilik juga tidak dapat sepenuhnya dikesampingkan
Analisis yang Berlanjut Lagi 3 Tahun Kemudian
- Pada awal 2024, teman-teman di bidang keamanan memperhatikan format
limit742921.tokyodanjingoism44769.xyz - Ketika pencarian reverse IP dilakukan berdasarkan IP subdomain
mx1miliklimit742921.tokyo, ditemukan lebih dari 1.000 domain dengan pola yang sama - Semua nama domain berbentuk
[kata][6 angka].[TLD]- Contoh:
acquire543225.biz - Contoh:
battery935904.biz - Contoh:
grocery634272.biz
- Contoh:
- Karena pendaftaran massal dan struktur algoritmisnya, pola itu tampak seperti domain generation algorithm yang digunakan operator malware untuk menyembunyikan alamat server C&C
- Domain terakhir yang teramati didaftarkan pada 17 Maret 2023, dan saat itu host tidak lagi ter-resolve; domain serupa yang didaftarkan pada IP yang sama juga tidak ditemukan
Hipotesis yang Berawal dari Fitur Manajemen ISP dan TR-069
- Agen dukungan Cox dapat memperbarui modem dari jarak jauh, mengganti kata sandi WiFi, dan melihat perangkat yang terhubung
- Manajemen jarak jauh ini terkait dengan protokol TR-069 yang diimplementasikan pada 2004, yaitu cara ISP mengelola perangkat dalam jaringan melalui port
7547 - TR-069 sendiri tidak terekspos ke luar dan sudah dibahas dalam presentasi DEF CON, sehingga perhatian bergeser ke alat dukungan dan API internal yang dipakai agen dukungan
- Jika penyerang ingin membobol modem, infrastruktur dasar alat dukungan—terutama API yang dapat mengubah konfigurasi perangkat pelanggan atau menjalankan perintah arbitrer—dinilai bisa menjadi target
- Investigasi ini kemudian mengarah pada pemeriksaan lapisan kepercayaan antara ISP dan perangkat pelanggan, alih-alih memastikan jalur pembobolan sebenarnya pada 2021
Struktur API Portal Cox Business
- Pada file JavaScript frontend portal Cox Business
main.36624ed36fb0ff5b.js, ditemukan lebih dari 100 panggilan API berbasis/api/cbma/ - Path
/api/cbma/memiliki perilaku respons yang berbeda dari path/api/lain, sehingga tampak seperti API yang diproksikan ke backend terpisah dari frontend/api/anything_else/examplemengembalikan respons redirect/api/cbma/examplemengembalikan500 Internal Server Error
- Permintaan registrasi menyertakan header seperti
clientid,Apikey,Cb_session, danAuthorization, sementara bentuk responsnya tampak seperti backend berbasis Spring - Saat metode HTTP diubah, muncul respons error Spring, yang mengonfirmasi bahwa backend API berbasis Spring
- Path actuator tidak ditemukan, tetapi path Swagger UI ditemukan
Pemuatan Bypass Dokumentasi Swagger dan 700 API
- Swagger UI berhasil dimuat, tetapi resource statis masuk ke redirect loop sehingga dokumentasi tampak kosong
- Permintaan resource statis seperti
.js,.css, dan.pngtampaknya dirutekan ke host default, bukan ke proxy API - Dengan menambahkan
%2f, yaitu/yang dienkode, ke akhir URL, resource JavaScript statis dapat dimuat melalui proxy API - Setelah menambahkan
%2fke permintaan resource statis menggunakan match-and-replace Burp, dokumentasi Swagger tampil normal - Secara keseluruhan, sekitar 700 panggilan API teridentifikasi, dan area yang paling terkait dengan fungsi perangkat dan akun adalah
accountequipment,datainternetgateway, danaccount
Bypass Autentikasi dan Akses Data Pelanggan
- Saat permintaan diulang ke semua endpoint GET, sebagian mengembalikan error autentikasi dan sebagian mengembalikan
200 OK; bahkan permintaan yang sama kadang berubah hasilnya saat diulang - Endpoint
profilesearchawalnya mengembalikan hasil pencarian kosong, lalu pada permintaan yang sama berikutnya responsnya bergantian antara error autentikasi dan sukses - Ketika permintaan dengan kata kunci pencarian
coxdiulang, hasil yang tampak seperti profil pelanggan bisnis Cox besertaprofileGuiddikembalikan - Ketika permintaan dengan kata kunci
fbidikirim, hasil yang berisi alamat fisik beberapa kantor lapangan FBI yang merupakan pelanggan bisnis Cox dikembalikan - Masalah otorisasi yang sama juga memengaruhi API lain, dan dengan memutar ulang permintaan beberapa kali, fungsi admin dapat diakses meski tanpa autentikasi
Pengambilan Alamat MAC Perangkat dan Informasi Akun
- Saat alamat MAC modem miliknya diambil dari akun Cox lalu dimasukkan ke API yang memiliki parameter
macAddress, alamat IPv4 perangkat tersebut dikembalikan - Hasil ini mengonfirmasi bahwa API situs Cox Business dapat berkomunikasi dengan perangkat nyata
- API daftar perangkat yang menggunakan ID akun mengembalikan informasi perangkat yang terhubung ke akun
- Kategori perangkat
- Nama model
- Alamat MAC
- Informasi port
- Nomor seri
- API pencarian pengguna berbasis email mengembalikan informasi akun bisnis seperti nama, nomor telepon, status, tipe pengguna, apakah pemilik profil, dan email alternatif
- Permintaan POST pembaruan akun serupa juga berfungsi, mengonfirmasi bahwa akun bisnis dapat dibaca dan ditulis
encryptedValue dan Perubahan Konfigurasi Perangkat
- Permintaan perubahan konfigurasi perangkat memerlukan parameter
encryptedValue - Fungsi
encryptWithSaltandPaddingdandecryptWithSaltandPaddingdi dalam JavaScript digunakan untuk mengenkripsi dan mendekripsi nilai berbasis AES - PIN 4 digit yang disetel saat pendaftaran akun juga dienkripsi dengan fungsi yang sama, sehingga konteks eksekusi fungsi tersebut dapat diperoleh dari debugger browser
- Ketika
encryptedValueyang terdapat dalam respons perangkat dari akun seorang kenalan yang menggunakan Cox Business didekripsi, elemen berikut ikut terkandung- Nomor akun Cox
- Nama perangkat
- ID perangkat
- Nilai yang tidak diketahui
- Alamat MAC
- Label
- Bahkan ketika nomor akun dan ID perangkat diisi dengan nilai arbitrer lalu hanya alamat MAC dibuat valid dan string tersebut dienkripsi ulang, permintaan tetap berhasil, mengonfirmasi bahwa server tidak memverifikasi kecocokan alamat MAC dengan akun
Kemungkinan Mengubah Konfigurasi Modem Arbitrer
- Ia mengirim permintaan POST untuk mengubah SSID WiFi dengan menargetkan alamat MAC perangkatnya sendiri
- Responsnya adalah
200 OKdanSuccess, lalu jaringan sempat offline sementara - Sekitar 5 menit kemudian jaringan reboot dan SSID berubah menjadi
Curry - PoC ini menunjukkan bahwa API pembaruan konfigurasi perangkat benar-benar berfungsi, dan penyerang dapat menimpa konfigurasi perangkat melalui API
- Hak akses tersebut setara dengan dukungan teknis ISP, dan dapat memengaruhi jutaan perangkat Cox yang dapat diakses melalui API
Cakupan Dampak dan Alur Serangan yang Mungkin
- Kombinasi kerentanan ini menciptakan jalur bagi penyerang eksternal tanpa prasyarat untuk mengubah konfigurasi jutaan modem, mengakses PII pelanggan bisnis, dan memperoleh hak setingkat tim dukungan ISP
- Cox adalah penyedia broadband swasta terbesar di AS, penyedia TV kabel terbesar ketiga, dan operator telepon terbesar ketujuh; perusahaan ini memiliki jutaan pelanggan dan merupakan ISP paling populer di 10 negara bagian
- Alur serangan yang mungkin adalah sebagai berikut
- Mencari target bisnis Cox berdasarkan nama, nomor telepon, email, dan nomor akun
- Menggunakan UUID yang dikembalikan untuk mengambil PII akun, alamat MAC perangkat, email, nomor telepon, dan alamat
- Menggunakan alamat MAC perangkat untuk mengambil kata sandi WiFi dan perangkat yang terhubung
- Menjalankan perintah arbitrer, memperbarui atribut perangkat, mengambil alih akun korban
- API yang terekspos berjumlah lebih dari 700, dan banyak di antaranya menyediakan fungsi admin seperti melihat perangkat yang terhubung ke modem
- Setiap API mengalami masalah otorisasi yang sama, yang memungkinkan perintah tidak sah dijalankan melalui permintaan berulang
Pelaporan, Patch, dan Pertanyaan yang Tersisa
- Kerentanan dilaporkan melalui responsible disclosure program milik Cox
- Cox menurunkan panggilan API yang terekspos dalam 6 jam, dan keesokan harinya kerentanan tidak lagi dapat direproduksi
- Menurut hasil investigasi Cox, tidak ada riwayat eksploitasi sebelumnya atas vektor tersebut, dan layanan yang memiliki kerentanan ini dimulai pada 2023 sehingga tidak dapat digunakan dalam pembobolan modem pada 2021
- Cox menyatakan tidak memiliki hubungan apa pun dengan IP DigitalOcean tersebut, sehingga modem lama tetap dianggap dibobol dengan cara lain, bukan melalui metode yang diungkap dalam tulisan ini
- Karena modem asli sudah dikembalikan, firmware dump atau analisis forensik tidak dapat dilakukan, dan alasan lalu lintas itu sengaja diputar ulang juga tidak dapat dipastikan
Linimasa Publik
- 2024-03-04: Kerentanan dilaporkan melalui program responsible disclosure Cox
- 2024-03-05: Hotpatch diterapkan; endpoint bisnis yang tidak esensial berhenti berfungsi dan mengembalikan
403 - 2024-03-06: Email dikirim ke Cox bahwa kerentanan tidak lagi dapat direproduksi
- 2024-03-07: Cox membalas bahwa mereka memulai tinjauan keamanan menyeluruh
- 2024-04-10: Cox diberi tahu bahwa waktu publikasi akan dilakukan 90 hari setelah laporan
- 2024-04-29: Tautan draf blog dibagikan dengan Cox
1 komentar
Komentar Hacker News
Semoga xrayarx bisa menerimanya dengan baik. Ada rencana untuk menerapkan berbagi karma dengan layak untuk kasus seperti ini, tetapi sampai saat itu kami kadang mengandalkan cara manual yang agak kasar seperti ini