3 juta aplikasi iOS dan macOS terkena serangan rantai pasokan yang kuat

Kerentanan yang tidak terdeteksi selama satu dekade membuat ribuan aplikasi macOS dan iOS rentan terhadap serangan rantai pasokan. Peretas mungkin telah menambahkan kode berbahaya yang membahayakan keamanan jutaan atau miliaran orang yang menginstalnya, kata para peneliti pada hari Senin.

Kerentanan tersebut, yang telah diperbaiki pada bulan Oktober lalu, terdapat di server “trunk” yang digunakan untuk mengelola Buah Kakao repositori untuk proyek Swift dan Objective-C sumber terbuka yang menjadi andalan sekitar 3 juta aplikasi macOS dan iOS. Saat pengembang membuat perubahan pada salah satu “pod” mereka—istilah CocoaPods untuk paket kode individual—aplikasi yang bergantung biasanya menggabungkannya secara otomatis melalui pembaruan aplikasi, biasanya tanpa interaksi yang diperlukan oleh pengguna akhir.

Kerentanan injeksi kode

“Banyak aplikasi dapat mengakses informasi paling sensitif milik pengguna: detail kartu kredit, catatan medis, materi pribadi, dan banyak lagi,” menulis peneliti dari EVA Information Security, firma yang menemukan kerentanan tersebut. “Menyuntikkan kode ke dalam aplikasi ini dapat memungkinkan penyerang mengakses informasi ini untuk hampir semua tujuan jahat yang dapat dibayangkan—ransomware, penipuan, pemerasan, spionase perusahaan… Dalam prosesnya, hal itu dapat membuat perusahaan menghadapi tanggung jawab hukum yang besar dan risiko reputasi.”

Ketiga kerentanan yang ditemukan EVA berasal dari mekanisme email verifikasi tidak aman yang digunakan untuk mengautentikasi pengembang pod individual. Pengembang memasukkan alamat email yang terkait dengan pod mereka. Server trunk merespons dengan mengirimkan tautan ke alamat tersebut. Ketika seseorang mengeklik tautan tersebut, mereka memperoleh akses ke akun tersebut.

Dalam satu kasus, penyerang dapat memanipulasi URL dalam tautan tersebut untuk mengarahkannya ke server yang berada di bawah kendali penyerang. Server menerima tautan palsu Bahasa Inggris: XFH header HTTP untuk mengidentifikasi host target yang ditentukan dalam permintaan HTTP. Para peneliti EVA menemukan bahwa mereka dapat menggunakan XFH palsu untuk membuat URL pilihan mereka.

Kerentanan ini, yang dilacak sebagai CVE-2024-38367, berada di kelas session_controller dari kode sumber server trunk, yang menangani URL validasi sesi. Kelas tersebut menggunakan mekanisme sessions_controller.rb, yang memprioritaskan XFH daripada header host asli. Kode eksploitasi para peneliti adalah:

POST /api/v1/sessions HTTP/1.1
Host: trunk.cococapods.org
Content-Type: application/json; charset=utf-8
Accept: application/json; charset=utf-8
User-Agent: CocoaPods/1.12.1
Accept-Encoding: gzip, deflate
X-Forwarded-Host: research.evasec.io
Content-Length: 78

{
  "email":"[email protected]",
  "name":"EVAResearch",
  "description":null
}

Kerentanan terpisah yang dilacak sebagai CVE-2024-38368 memungkinkan penyerang untuk mengambil alih kendali pod yang telah ditinggalkan oleh pengembangnya tetapi terus digunakan oleh aplikasi. Antarmuka pemrograman yang memungkinkan pengembang untuk mendapatkan kembali pod mereka tetap aktif hampir 10 tahun setelah pertama kali diterapkan. Para peneliti menemukan bahwa siapa pun yang menemukan antarmuka ke pod yatim piatu dapat mengaktifkannya untuk mendapatkan kendali atasnya, tanpa memerlukan bukti kepemilikan.

Sebuah sederhana keriting permintaan yang berisi nama pod adalah semua yang dibutuhkan:

# Curl request for changing ownership of a targeted orphaned pod
curl -X 'POST' \
  -H 'Host: trunk.cocoapods.org' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-binary 'owner(name)=EVA&[email protected]'
  --data-binary 'pods()=(TARGET_UNCLAIMED_POD)&button=SEND'
  'https://trunk.cocoapods.org/claims'

Kerentanan ketiga, CVE-2024-38366, memungkinkan penyerang untuk mengeksekusi kode pada server trunk. Server trunk bergantung pada RFC822 diformalkan pada tahun 1982 untuk memverifikasi keunikan alamat email pengembang yang terdaftar dan memeriksa apakah mereka mengikuti format yang benar. Bagian dari proses ini melibatkan pemeriksaan catatan MX untuk domain alamat email seperti yang diterapkan oleh ini Implementasi RFC822.