Intel ME Manufacturing Mode - ancaman tersembunyi, atau apa yang ada di balik kerentanan CVE-2018-4251 di MacBook



Prinsip " keamanan melalui ketidakjelasan " telah dikritik oleh para ahli selama beberapa tahun, tetapi ini tidak mencegah produsen elektronik besar-besaran berpura-pura melindungi kekayaan intelektual untuk meminta penandatanganan perjanjian non-pengungkapan untuk menerima dokumentasi teknis. Situasi semakin memburuk karena meningkatnya kompleksitas sirkuit mikro dan integrasi berbagai firmware yang ada di dalamnya. Ini sebenarnya membuat tidak mungkin untuk menganalisis platform tersebut untuk peneliti independen, yang menempatkan pengguna biasa dan produsen peralatan dalam risiko.

Contohnya adalah teknologi Intel Management Engine (Intel ME), serta versinya untuk server (Intel SPS) dan platform seluler (Intel TXE) (untuk perincian lebih lanjut tentang teknologi ini, lihat [5] , [6] . Dalam artikel ini kami akan memberi tahu bagaimana menggunakan perintah tidak berdokumen (jika istilah "didokumentasikan" pada umumnya berlaku untuk Intel ME), Anda dapat menimpa memori flash SPI dan menerapkan skenario terburuk - eksploitasi lokal kerentanan di ME (INTEL-SA-00086). Akar masalah ini adalah mode operasi tidak berdokumen dari Intel ME. - Mode Manufaktur.

Apa itu Mode Pabrikan


Intel ME Manufacturing Mode - mode operasi layanan yang dirancang untuk mengkonfigurasi, mengkonfigurasi dan menguji platform akhir pada tahap produksi; itu harus dimatikan sebelum peralatan dijual dan dikirim kepada pengguna. Baik mode ini, maupun risikonya yang potensial dijelaskan dalam dokumentasi publik Intel. Pengguna biasa tidak dapat mematikannya sendiri, karena utilitas untuk mengelola dia dari paket Alat Sistem ME Intel tidak tersedia secara resmi. Perhatikan bahwa tidak ada perlindungan perangkat lunak yang dapat melindungi pengguna jika mode ini dihidupkan, atau setidaknya memberi tahu dia tentang hal itu. Bahkan utilitas Chipsec [2] , yang secara khusus dirancang untuk mendeteksi kesalahan konfigurasi chipset dan prosesor pada tingkat firmware UEFI (khususnya, konfigurasi yang salah atas hak akses ke wilayah flash SPI), tidak tahu apa-apa tentang Mode Manufaktur Intel.

Mode ini memungkinkan Anda untuk mengatur parameter platform kritis yang disimpan dalam memori write-once (FUSES). Contoh parameter yang "berkabel" dalam FUSES adalah parameter BootGuard (mode, kebijakan, checksum kunci tanda tangan digital untuk modul ACM dan UEFI). Beberapa dari mereka disebut FPF (Field Programmable Fuse). Daftar FPF yang dapat ditulis ke FUSES (tidak lengkap, pada kenyataannya, sejumlah FPF tidak dapat diatur secara langsung) dapat diperoleh melalui utilitas FPT (Flash Programming Tool) dari paket Intel ME System Tools.



Gambar 1. Hasil opsi –FPF dari utilitas FPT

Perlu dicatat bahwa akun FPF hanya sebagian dari total array FUSE, dan sebagian besar memori ini digunakan oleh Intel sendiri untuk menyimpan banyak parameter platform. Sebagai contoh, bagian dari ruang array ini disebut IP Fuse dan dimaksudkan untuk menyimpan parameter konfigurasi modul perangkat keras individu (Intelligent Property). Jadi, perangkat DFx Aggregator khusus menyimpan di FUSE tanda apakah platform tersebut serial atau uji.

Selain FPF, dalam Mode Pabrikan, produsen peralatan memiliki kemampuan untuk mengatur parameter firmware ME ME, yang disimpan dalam sistem file firmware internal - MFS, pada media flash SPI. Parameter ini dapat diubah jika pemrograman ulang flash SPI. Mereka disebut CVAR (Configurable NVARs, Named Variables).

Untuk menginstal CVARs, modul firmware ME ME, mca_server, bertanggung jawab. MCA adalah singkatan untuk Arsitektur Konfigurasi Pembuatan-Lini, nama umum untuk proses konfigurasi platform selama fase pembuatan. CVAR, seperti FPF, dapat didefinisikan dan dibaca menggunakan FPT.



Gambar 2. Daftar output CVAR oleh utilitas FPT untuk platform Broxton P

Daftar CVAR bervariasi tergantung pada platform dan versi firmware ME ME. Untuk chipset yang mendukung teknologi Intel AMT, salah satu dari variabel ini adalah kata sandi untuk memasukkan MEBx (Ekstensi ME BIOS).

Pemasangan FPF dan hampir semua variabel CVAR hanya dimungkinkan jika firmware Intel ME beroperasi dalam Mode Pabrikasi. Proses instalasi FPF sendiri dibagi menjadi dua tahap: mengatur FPF (yang disimpan dalam memori sementara) dan mentransfer FPF ke berbagai sekering. Pada saat yang sama, tahap pertama hanya dimungkinkan dalam Mode Manufitting, dan "pembakaran" yang sebenarnya terjadi secara otomatis setelah meninggalkan Mode Pabrikan, jika selama operasi dalam mode ini pabrikan menetapkan nilai FPF dan pada saat yang sama rentang yang sesuai tidak pernah dicatat dalam array fusi. Jadi, jika sistem beroperasi dalam Mode Pembuatan, variabel FPF kemungkinan besar tidak diinisialisasi.

Tanda menonaktifkan Mode Manufaktur disimpan dalam file / home / mca / eom di MFS, sehingga, ketika menulis ulang flash SPI dengan firmware dengan sistem file dasar (untuk rincian lebih lanjut, lihat [9] ), platform dapat berfungsi lagi dalam Mode Manufaktur (tetapi tidak mungkin untuk menimpa FUSES) .

Kunci publik OEM


Dengan demikian, prosedur untuk mengkonfigurasi platform Intel cukup kompleks dan terdiri dari beberapa tahap. Jika pabrikan peralatan telah melanggar atau mengubah urutannya, platform berisiko tinggi. Bahkan jika Mode Pabrikasi selesai, pabrikan tidak dapat menulis FUSES, yang akan memungkinkan penyerang melakukannya untuknya, menuliskan nilai-nilainya alih-alih kunci untuk menandatangani kode booting BootGuard (ACM) dan modul UEFI dan dengan demikian memungkinkan platform untuk mem-boot hanya dengan kode jahatnya, dan secara berkelanjutan. Ini akan menyebabkan hilangnya peralatan yang tidak dapat diperbaiki, karena kunci penipuan akan didaftarkan dalam memori permanen, selamanya (detail dari serangan ini dapat ditemukan dalam studi tentang perlindungan rootkit: Intel BootGuard oleh Alexander Ermolov [8] ).

Dalam sistem baru (Apollo Lake, Gemini Lake, Cannon Point) di FPF tidak hanya kunci untuk BootGuard disimpan, tetapi juga kunci publik OEM (atau lebih tepatnya, SHA-256 dari kunci publik OEM RSA), yang menjadi dasar beberapa mekanisme perlindungan ME. Sebagai contoh, bagian flash SPI khusus yang disebut Signed Master Image Profile (SMIP) menyimpan Straps PCH khusus pabrik (konfigurasi perangkat keras PCH). Bagian ini ditandatangani pada tombol, SHA-256 yang darinya ditempatkan dalam file khusus pada flash SPI. File ini disebut oem.key, yang terletak di bagian FTPR dan berisi berbagai kunci publik yang disediakan oleh OEM untuk menandatangani berbagai data. Berikut adalah daftar lengkap kumpulan data yang ditandatangani oleh pabrikan, masing-masing dengan kunci unik, untuk platform Cannon Point:



Gambar 3. Daftar Data Platform CNP OEM yang Ditandatangani

File oem.key itu sendiri ditandatangani oleh kunci root bersama OEM, jumlah hash yang harus dicatat dalam FPF.



Gambar 4. Penandatanganan OEM

Lewati kunci tulis di wilayah ME


Sampai baru-baru ini (sebelum Intel Apollo Lake), firmware ME ME berada di wilayah SPI terpisah, yang memiliki hak akses independen untuk CPU, GBE, dan ME. Dengan demikian, dengan konfigurasi atribut akses yang benar pada bagian CPU (sistem utama), tidak mungkin untuk membaca atau menulis firmware ME. Namun, pengendali SPI chipset Intel modern memiliki mekanisme Master Grant khusus. Teknologi ini memberikan masing-masing master SPI bagian yang jelas dari flash SPI, master ini memiliki wilayahnya, terlepas dari hak akses yang ditentukan dalam deskriptor SPI. Setiap master memiliki kesempatan untuk memberikan akses (untuk membaca atau menulis) ke wilayahnya (dan hanya wilayahnya) ke master lain, sesuai keinginannya.



Gambar 5. Kutipan dokumentasi Intel yang menggambarkan Hibah Master SPI

Dengan demikian, bahkan jika tuan rumah menetapkan larangan akses ke wilayah ME SPI dari tuan rumah, ME masih dapat memberikan akses ke datanya. Menurut pendapat kami, ini dilakukan untuk mengaktifkan pembaruan firmware ME Intel melewati algoritma standar.

Host ME Wilayah Flash Override Protection


Dalam firmware Intel ME, perintah HECI khusus diterapkan, yang memungkinkan Anda untuk membuka akses tulis ke wilayah SPI ME dari CPU. Ini disebut HMR FPO (Host ME Region Flash Protection Override). Dalam salah satu penelitian kami sebelumnya, kami menggambarkan perintah ini secara rinci [5]. Dia memiliki beberapa fitur.

Setelah menerima perintah HMR FPO, firmware akan membuka akses ke wilayahnya hanya setelah reboot. ME itu sendiri juga memberikan perlindungan: perintah hanya diterima selama periode eksekusi UEFI BIOS, hingga saat yang disebut End of Post (EOP). EOP adalah perintah HECI lain yang dikirim UEFI BIOS sebelum mentransfer kontrol ke sistem operasi (ExitBootServices). Di beberapa Pengaturan BIOS, Anda dapat menemukan opsi yang memungkinkan pengiriman perintah HMRFPO ke EOP.



Gambar 6. Membuka wilayah ME di BIOS

Setelah menerima EOP, firmware ME mengabaikan HMR FPO, mengembalikan status yang sesuai. Tetapi ini hanya terjadi setelah selesainya Manufacturing Mode . Dengan demikian, firmware ME dalam Mode Pabrikan menerima HMR FPO kapan saja, terlepas dari Akhir Posting . Jika pabrikan belum menutup Mode Pabrikan, penyerang (secara formal, ini memerlukan hak administrator, tetapi bahkan OS kernel pada awalnya tidak dapat menimpa firmware ME) dapat mengubah firmware ME setiap saat. Pada tahap ini, penyerang dapat menimpa gambar ME, misalnya, untuk mengeksploitasi kerentanan INTEL-SA-00086. Ini menimbulkan kebutuhan untuk reboot, tetapi ini bukan halangan di hampir semua platform kecuali MacBook. Di komputer Apple ada pemeriksaan tambahan di UEFI, yang dilakukan pada saat mulai dan memblokir sistem dari memulai jika wilayah ME dibuka menggunakan HMRFPO. Namun, seperti yang akan kami tunjukkan nanti, mekanisme perlindungan ini diatasi jika firmware ME beroperasi dalam Mode Pabrikan.

Reboot ME tanpa me-reboot CPU utama


Di komputer modern, ada beberapa opsi untuk me-reboot platform. Diantaranya didokumentasikan: global reboot dan reboot hanya CPU utama (tanpa me-reboot ME). Namun, jika ada cara untuk me-restart ME tanpa me-reboot CPU utama (setelah juga mengeksekusi perintah HMRFPO), akses ke wilayah akan terbuka, dan sistem utama akan terus berfungsi.



Gambar 7. Restart type control

Ketika memeriksa modul firmware internal ME, kami menemukan bahwa ada perintah HECI ( "80 06 00 07 00 00 0b 00 00 00 03 00" , untuk rincian lebih lanjut tentang pengiriman perintah, lihat [ 5 ]) hanya untuk reboot (!) Kernel Intel ME, yang dalam Mode Pabrikasi juga dapat dikirim kapan saja, bahkan setelah EOP.



Gambar 8. Daftar Disassembler dari fungsi yang memproses perintah ME HECI reload

Dengan demikian, penyerang, setelah mengirim dua perintah HECI ini, membuka wilayah ME dan dapat menulis data apa pun di sana tanpa me-reboot platform . Dalam hal ini, tidak masalah apa yang berisi deskriptor SPI, yaitu, atribut perlindungan yang benar dari wilayah SPI tidak melindungi firmware ME dari perubahan jika sistem beroperasi dalam Mode Manufaktur.

Studi Kasus: Kerentanan CVE-2018-4251


Kami menganalisis beberapa platform dari berbagai produsen. Di antara mereka adalah laptop Lenovo dan Apple MacBook Pr. Dalam komputer yang diperiksa dari jajaran Yoga dan ThinkPad, kami tidak menemukan masalah yang terkait dengan Mode Manufaktur, tetapi laptop Apple yang berbasis chipset Intel beroperasi dalam Mode Manufaktur . Setelah mentransfer informasi ini ke Apple, kesalahan ini (CVE-2018-4251) diperbaiki di macOS High Sierra 10.13.5 pembaruan OS.

Pengoperasian Lokal INTEL-SA-00086


Jadi, dengan menggunakan kerentanan CVE-2018-4251, penyerang dapat menulis versi lama dari firmware ME yang berisi kerentanan INTEL-SA-00086, dan pada saat yang sama ia tidak memerlukan programmer SPI atau akses ke jumper HDA_SDO (yaitu akses fisik). Dengan demikian, vektor - lokal - paling berbahaya dari kerentanan ini direalisasikan (eksekusi kode arbitrer dalam firmware ME). Patut dicatat bahwa dalam penjelasan buletin keamanan INTEL-SA-00086, Intel tidak menyebutkan Mode Pabrikasi terbuka sebagai sarana untuk mengeksploitasi kerentanan ini secara lokal, tanpa akses fisik, tetapi hanya mengatakan bahwa eksploitasi lokal hanya dimungkinkan jika akses ke wilayah SPI tidak terkonfigurasi dengan benar. itu tidak benar. Untuk melindungi pengguna, kami memutuskan untuk menjelaskan cara memeriksa ketersediaan Mode Pabrikasi dan cara menonaktifkannya.

Cara melindungi diri sendiri


Paket utilitas sistem untuk pengembang peralatan berdasarkan chipset dan prosesor Intel (Intel System Tools) termasuk utilitas MEInfo (TXEInfo, SPSInfo untuk platform seluler dan server, masing-masing), yang dirancang untuk menerima informasi diagnostik lanjutan tentang kondisi terkini dari firmware Engine Engine dan seluruh platform secara keseluruhan. Kami mendemonstrasikan utilitas ini dalam salah satu penelitian kami sebelumnya tentang menonaktifkan ME dan mode HAP (Platform Jaminan Tinggi) yang tidak didokumentasikan [ 6 ]. Utilitas ini, disebut dengan flag –FWSTS, memberikan deskripsi terperinci tentang register status HECI dan melaporkan status Mode Pabrikasi (bit ke-4 dari register status FWSTS diatur untuk menunjukkan bahwa Mode Pabrikan aktif).



Gambar 9. Contoh output dari utilitas MEInfo

Kami juga mengembangkan sebuah program [ 7 ], yang dengannya Anda dapat memeriksa status Mode Pabrikan jika pengguna tidak memiliki akses ke Alat Sistem Intel ME karena alasan apa pun.



Gambar 10. Contoh skrip mmdetect

Muncul pertanyaan, bagaimana menyelesaikan Mode Pembuatan secara mandiri, jika ternyata pabrikan tidak melakukan ini. Untuk menyelesaikan Mode Pembuatan, utilitas FPT memiliki opsi khusus, –CLOSEMNF, yang, selain tujuan utamanya, juga memungkinkan Anda untuk mengatur hak akses yang disarankan ke wilayah flash SPI di deskriptor.



Gambar 11. Hasil utilitas FTP dengan opsi –CLOSEMNF

Dalam contoh ini, kami menggunakan parameter NO dari opsi –CLOSEMNF agar tidak me-reboot platform, yang dilakukan secara default segera setelah Mode Manufaktur selesai.

Kesimpulan


Penelitian kami menunjukkan bahwa masalah Mode Manufaktur firmware ME Intel ada, dan bahkan produsen besar seperti Apple mampu membuat kesalahan ketika mengkonfigurasi platform Intel. Yang paling parah, tidak ada informasi publik tentang hal ini dan pengguna akhir bahkan tidak menyadari masalah serius yang dapat menyebabkan hilangnya informasi rahasia, munculnya rootkit yang tidak dapat dilepas dan decommissioning peralatan yang tidak dapat dibatalkan.

Selain itu, kami memiliki kecurigaan bahwa kemampuan untuk me-reboot ME tanpa me-reboot CPU utama dapat menyebabkan masalah keamanan lainnya karena negara BIOS / UEFI dan ME yang tidak sinkron.

Penulis: Mark Ermolov dan Maxim Goryachiy

[1] Pembaruan Firmware Penting Manajemen Mesin Intel, Intel-SA-00086
[2] GitHub - chipsec / chipsec: Kerangka Penilaian Keamanan Platform
[4] Firmware OpenSource yang cepat, aman, dan fleksibel, Coreboot
[5] Mark Ermolov, Maxim Goryachy, Cara Menjadi Pemilik Tunggal PC Anda, PHDays VI, 2016
[6] Mark Ermolov, Maxim Goryachy, Menonaktifkan Intel ME 11 melalui mode tidak berdokumen, blog Positive Technologies
[7] Alat Deteksi Mode Pembuatan ME Intel
[8] Alexander Ermolov, Safeguarding rootkit: Intel BootGuard
[9] Dmitry Sklyarov, Intel ME: Sistem File Flash. Dijelaskan

Source: https://habr.com/ru/post/id425105/


All Articles