- Hasil investigasi teknis atas insiden ketika pelaku ancaman berbasis di China, Storm-0558, memalsukan token menggunakan kunci penandatanganan konsumen MSA yang dicuri untuk mengakses OWA dan Outlook.com
- Pada April 2021, dump crash yang dibuat akibat crash sistem penandatanganan konsumen memuat kunci karena race condition, dan sistem gagal mendeteksinya
- Dump crash yang berisi kunci dipindahkan dari jaringan produksi terisolasi ke lingkungan debugging di jaringan perusahaan yang terhubung ke internet, dan juga tidak terdeteksi oleh pemindaian kredensial
- Penyebab email enterprise dapat diakses dengan kunci konsumen adalah pengembang sistem email keliru berasumsi bahwa library melakukan validasi scope, sehingga tidak menambahkan validasi issuer/scope
- Semua cacat telah diperbaiki, dan penguatan pertahanan berlapis seperti otomatisasi validasi scope kunci diterapkan sebagai langkah tindak lanjut
Kronologi Perolehan Kunci
- Microsoft mengoperasikan lingkungan produksi yang terisolasi dan dibatasi, dengan pemeriksaan latar belakang, akun khusus, workstation akses aman, serta autentikasi multifaktor berbasis token perangkat keras
- Lingkungan ini memblokir penggunaan alat kolaborasi seperti email, rapat, dan riset web untuk mencegah jalur kompromi akun seperti infeksi malware dan phishing
- Akses ke sistem dan data dibatasi melalui kebijakan Just in Time / Just Enough Access
- Lingkungan perusahaan (corporate environment) mensyaratkan autentikasi keamanan dan perangkat aman, tetapi mengizinkan penggunaan email, rapat, dan alat kolaborasi, sehingga rentan terhadap spear phishing, malware pencuri token, dan sejenisnya
- Berdasarkan prinsip Zero-Trust dan "assume breach", materi kunci tidak boleh keluar dari lingkungan produksi
- Pada April 2021, crash pada sistem penandatanganan konsumen menghasilkan dump crash (snapshot crashed process)
- Dump crash seharusnya tidak memuat kunci penandatanganan karena informasi sensitif dimasking, tetapi kunci ikut termuat akibat race condition (telah diperbaiki)
- Sistem gagal mendeteksi keberadaan kunci dalam dump crash (telah diperbaiki)
- Dump crash yang saat itu dinilai tidak berisi kunci dipindahkan dari jaringan produksi terisolasi ke lingkungan debugging
- Hal ini sesuai dengan prosedur debugging standar, dan pemindaian kredensial gagal mendeteksi keberadaan kunci (telah diperbaiki)
- Setelah kunci bocor, pelaku Storm-0558 mengompromikan akun perusahaan milik seorang engineer Microsoft
- Akun tersebut memiliki hak akses ke lingkungan debugging tempat dump crash yang berisi kunci berada
- Karena kebijakan retensi log, tidak ada log bukti spesifik atas kebocoran tersebut, tetapi ini merupakan jalur perolehan kunci yang paling mungkin
Penyebab Email Enterprise Dapat Diakses dengan Kunci Konsumen
- Untuk merespons permintaan pelanggan agar mendukung aplikasi konsumen maupun enterprise, pada September 2018 diperkenalkan endpoint publikasi metadata kunci umum
- Sebagai bagian dari penyediaan terpadu, dokumentasi diperbarui untuk memperjelas persyaratan validasi scope kunci untuk akun enterprise dan konsumen
- API untuk memverifikasi tanda tangan secara kriptografis disediakan, tetapi library tidak diperbarui agar melakukan validasi scope secara otomatis (telah diperbaiki)
- Sistem email diperbarui pada 2022 untuk menggunakan endpoint metadata umum
- Pengembang sistem email keliru berasumsi bahwa library melakukan validasi lengkap dan tidak menambahkan validasi issuer/scope yang diperlukan
- Akibatnya, sistem email menerima permintaan email enterprise dengan token keamanan yang ditandatangani menggunakan kunci konsumen (telah diperbaiki dengan library yang diperbarui)
Tinjauan Pasca-Insiden dan Langkah Perbaikan
- Mengidentifikasi dan menyelesaikan race condition yang menyebabkan kunci penandatanganan ikut termuat dalam dump crash
- Memperkuat pencegahan, deteksi, dan respons untuk kasus ketika materi kunci keliru dimasukkan ke dump crash
- Memperkuat pemindaian kredensial agar dapat mendeteksi keberadaan kunci penandatanganan dengan lebih baik di lingkungan debugging
- Mendistribusikan library yang ditingkatkan untuk mengotomatiskan validasi scope kunci pada library autentikasi serta memperjelas dokumentasi terkait
Pembaruan Tambahan 12 Maret 2024
- Hipotesis utama tetap bahwa, karena kesalahan operasional, materi kunci keluar dari lingkungan penandatanganan token keamanan dan diakses di lingkungan debugging melalui akun engineer yang telah dikompromikan; tidak ada perubahan pada dampak terhadap pelanggan/Microsoft maupun aktivitas pelaku
- Sebelumnya disebutkan bahwa dump crash tahun 2021 mungkin menjadi penyebab akses pelaku, tetapi tidak ditemukan dump crash yang berisi materi kunci yang terdampak
- Race condition yang disebutkan memengaruhi apakah dump crash dapat dikeluarkan dari lingkungan penandatanganan aman, bukan apakah kunci ada di dalam dump crash
- Pernyataan bahwa pengeluaran dump crash sesuai dengan prosedur debugging standar berarti hal tersebut tidak dilarang pada masa lalu; prosedur debugging standar Microsoft saat ini melarang pengeluaran materi tersebut dari lingkungan produksi
- Investigasi yang sedang berlangsung mengungkap keterbatasan teknologi pemindaian kredensial, dan akan diselesaikan begitu ditemukan
1 komentar
Pendapat di Hacker News
Sepertinya ada mata rantai yang hilang di sini: mudah dipahami bahwa bug konkurensi atau bug keamanan memori bisa secara tidak sengaja membuat kunci privat masuk ke artefak debugging, tetapi bukankah penyerang harus mengetahui fakta terjadinya crash, struktur crash dump, dan sedang menunggu di dalam jaringan internal Microsoft?
Defense assuming breach adalah strategi keamanan jaringan yang baik, tetapi kita tidak boleh begitu saja menerima asumsi bahwa memang sudah terjadi kompromi
Data seperti ini sering kali tidak disimpan seaman yang seharusnya jika dibandingkan dengan nilai nyatanya. Dari pengalaman bekerja di FAANG, hampir semua karyawan baru yang tidak punya pengalaman di bidang keuangan atau regulasi perusahaan mengira data crash boleh saja ditempelkan ke bug tracker. Jadi kebiasaan harus diubah agar hal seperti crash dump dimasukkan ke brankas yang cukup mudah dipakai sehingga orang tidak ingin mencari jalan pintas
Jika ada akun engineer yang sudah dikompromikan, setidaknya harus diasumsikan akun itu punya akses ke bug tracker, dan mungkin juga bisa memperoleh atau membuat debug symbol untuk binary. Sisanya tinggal menunggu satu engineer ceroboh mengunggah crash dump sebagai lampiran bug, lalu mengambilnya sebelum ada yang sadar dan menghapusnya
Selain itu, alat pemindaian kredensial Microsoft tidak menemukan kunci tersebut, dan masalah itu sudah diperbaiki, jadi tampaknya kunci itu berada dalam bentuk yang bisa dideteksi lewat pemindaian
Secara keseluruhan, kelihatannya seorang engineer memindahkan dump berisi kunci ke akunnya sendiri lalu membiarkannya selama beberapa waktu, kemudian penyerang membobol akun itu, mengambil semua file yang bisa digunakan, lalu memindai kunci dengan alat yang lebih baik daripada milik Microsoft dan mendapatkan jackpot
Dengan kata lain, penyerang sudah berada di dalam jaringan dan kebetulan menemukan dump saat melakukan pemindaian yang tidak terdeteksi, atau sejak awal memang menargetkan akun khusus ini
Meski begitu, dari sisi penyerang, rangkaian kejadian ini terasa terlalu beruntung
Ada kelas-kelas rekayasa sistem yang membahas bagaimana masalah-masalah kecil berurutan dalam urutan tertentu hingga akhirnya menjadi kegagalan katastropik. Kasus ini bisa disebut kegagalan katastropik itu
Pertama harus ada race condition, dan race condition itu harus menghasilkan akibat yang tak terduga. Jika kodenya sudah diuji dan sering dipakai, kemungkinan terjadinya mungkin sudah di bawah 10% pada tahap ini. Berikutnya, engineer harus kebetulan menilai crash dump ini diperlukan, perangkat lunak pemindaian kredensial harus gagal menemukan kredensial tertentu ini, satu akun harus dikompromikan sehingga mendapat akses jaringan, pengguna itu harus punya akses ke dump tersebut, dan hacker harus menemukannya lalu mengambilnya
Meski begitu, kuncinya sudah lama dan seharusnya aman karena hanya bisa dipakai untuk mengakses akun email konsumen, tetapi ternyata masih ada bug yang menerima kunci lama dan bug lain yang tidak menolak kunci tanda tangan ini untuk token akun email perusahaan
Ini pelajaran rekayasa sistem yang bagus. Sebesar apa pun usaha kita, pada akhirnya jika cukup banyak hal kecil menumpuk, insiden besar akan terjadi, jadi sistem harus dirancang agar sekalipun meledak, blast radius-nya terbatas
Analisis pascainsiden disajikan seolah rangkaian kejadian sial bertumpuk secara acak. Seolah penyerang kebetulan menargetkan Microsoft, kebetulan ada race condition, kebetulan terjadi crash, dan kebetulan menemukan crash dump di suatu tempat
Namun kemungkinan bahwa bug race condition awal itu ditanam dengan sengaja juga harus dipikirkan. Crash bisa saja dipicu secara sengaja, penyerang bisa saja menunggu dump muncul di lokasi tertentu, dan bisa saja ada kaki tangan
Ekosistem Microsoft terlihat seperti mobil Lego yang dirakit asal-asalan dari komponen yang dibawa anak-anak tetangga masing-masing dari rumah
Kalau disebut race condition, orang akan bilang “kemungkinannya di bawah 10%”, tetapi kenyataannya bisa saja itu terjadi pada setiap crash besar, hanya saja crash-nya tidak sering terjadi
Hanya Tuhan yang tahu mengapa masking tidak dilakukan sebelum ditulis ke disk
Struktur ketika lebih dari separuh dunia bisnis Barat bergantung pada Outlook.com nyaris merupakan kondisi yang sangat keliru, tetapi insentif finansial saat ini tidak mengarah pada resiliensi atau pemecahan entitas supertersentralisasi seperti Outlook.com, jadi sepertinya hal seperti ini akan terus terjadi
Ada beberapa hal yang tidak dijelaskan dengan jelas: jika ini terdeteksi pada 11 Juli 2023 dan diduga terjadi pada April 2021, berarti penyerang memiliki kredensial ini selama lebih dari 2 tahun, dan butuh 2 bulan dari deteksi hingga pengungkapan
Jumlah token palsu dan sejauh mana akses yang terjadi juga tidak disebutkan. Jika tidak diungkapkan, orang akan cenderung berasumsi buruk
Tidak ada juga jadwal dari deteksi hingga penerapan perbaikan, hanya pernyataan “masalah ini sudah diperbaiki”. Kita hanya bisa berharap mereka memperbaikinya dengan cepat
Mereka memperbaiki 4 masalah langsung, tetapi jelas terlihat ada masalah sistemik, dan tidak tampak apa yang akan mereka lakukan terkait hal itu
https://en.m.wikipedia.org/wiki/Adverse_inference
Pelanggaran seperti ini membutuhkan pemahaman yang sangat mendalam terhadap infrastruktur internal Microsoft. Aman untuk menganggap ini adalah pekerjaan terorganisasi dari sebuah tim peretas
Ini bukan hal yang murah untuk dilakukan, tetapi imbalannya luar biasa besar. Super-sentralisasi membuat peretas memusatkan upaya pada sejumlah kecil target bernilai tinggi. Karena jika berhasil, hasil yang didapat sangat besar
Saya hampir yakin ada tim peretas yang didukung negara yang sudah mempelajari dan menganalisis secara mendalam infrastruktur internal tempat seperti Google, Microsoft, dan Amazon. Pelanggaran kali ini menunjukkan seberapa baik mereka sudah memahaminya
Menurut saya sudah waktunya melakukan desentralisasi dalam batas keamanan yang lebih luas
Jika ungkapan hati-hatinya disingkirkan, seseorang mengunduh minidump dari lingkungan produksi ke workstation pengembangan, lalu kemungkinan file itu membusuk di suatu tempat di OneDrive internal milik pengembang tersebut sampai akunnya diretas. Seseorang mengambil dump itu, menemukan kuncinya, dan mendapatkan jackpot
Ungkapan “beberapa bug samar dieksploitasi secara canggih” terasa agak meleset. Ini lebih mirip rangkaian kesalahan berantai di mana tidak satu pun sistem keamanan menjalankan tugasnya
Saya tidak tahu mengapa mereka tidak memakai HSM. Bukankah tujuan utama perangkat keras semacam itu adalah mencegah kebocoran material kunci?
[1] https://www.futurex.com/download/excrypt-ssp-enterprise-v-2-...
Ini berarti kunci tersebut tidak disimpan di perangkat keras yang tidak bisa dipulihkan, melainkan dapat diakses oleh proses server biasa berupa kode terkompilasi yang berjalan di lingkungan dengan hak istimewa tinggi
Tidak ada juga penyebutan bahwa sistem yang bisa mengakses kunci ini berada di lingkungan terpisah, bukan lingkungan operasi biasa. Jadi dapat diasumsikan bahwa perangkat operasional mana pun bisa mengakses kunci, dan siapa pun yang memiliki akses ke lingkungan itu berpotensi membocorkan material kunci
Jika melihat bagian validasi di https://learn.microsoft.com/en-us/azure/active-directory/dev..., kalau saya tidak melewatkan sesuatu, sepertinya pentingnya memeriksa tanggal penerbit atau apakah kunci sudah dicabut masih belum disebutkan
Itu juga tidak ada di pseudocode, jadi besar kemungkinan masih ada implementasi lain yang mempercayai kunci apa pun yang pernah dipublikasikan Microsoft. Kecuali pengecualian seperti penghapusan cache, maksudnya
Jika Microsoft saja tidak bisa menggunakan platform identitas mereka sendiri dengan benar di produk andalannya, Outlook, peluang apa yang dimiliki orang lain?
Mereka pada dasarnya hanya memeriksa apakah token ditandatangani oleh Microsoft CA. Ini adalah masalah yang terlihat sangat jelas dalam code review sampai sulit dipercaya
Salah satu alasan mereka benar-benar kena besar tampaknya karena mereka tidak merotasi kunci. Kedengarannya ada jeda waktu yang cukup lama antara saat kunci dipindahkan ke tempat yang seharusnya tidak memuatnya dan saat kunci itu benar-benar dicuri
Jika kunci sering dirotasi, pemalsuan token dengan kunci tersebut tidak akan mungkin dilakukan
Setiap kali tulisan seperti ini muncul, saya selalu merasa struktur yang menyerahkan respons terhadap serangan tingkat negara kepada perusahaan swasta hanya karena serangannya bersifat digital, bukan fisik, benar-benar terlihat aneh
Jika jet tempur Tiongkok menembak jatuh pesawat FedEx di atas Samudra Pasifik, itu akan dianggap sebagai serangan terhadap kedaulatan AS dan pemerintah akan merespons dengan semestinya. Tidak ada yang akan berharap FedEx memiliki sendiri skuadron jet tempur untuk melindungi pesawat angkutnya. Tidak akan ada pula yang berkata, “ini salah FedEx karena tidak menyiapkan pertahanan udara dengan benar”
Namun begitu masuk ke ranah digital, suasananya menjadi menerima bahwa Microsoft harus membela diri sendiri melawan Tiongkok dan Rusia
Pemerintah cukup rutin menangkap agen asing, tetapi penangkapan semacam itu tidak berujung pada perang total
Kedua, AS juga selalu melakukan hal seperti ini, termasuk terhadap negara sahabat, sehingga sulit membenarkan tindakan yang lebih keras
Cakupan dan volume serangan siber sangat besar, tetapi saya memahami bahwa AS juga melakukan banyak serangan luar negeri dalam skala yang sepadan