APIC/EPIC! Chip Intel membocorkan rahasia bahkan kernel tidak akan melihat… PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

APIC/EPIC! Chip Intel membocorkan rahasia bahkan kernel seharusnya tidak melihat ...

Inilah BWAIN minggu ini, istilah lucu kami untuk a Bug Dengan Nama yang Mengesankan.

BWAIN adalah penghargaan yang kami berikan ketika kelemahan keamanan siber baru tidak hanya menjadi menarik dan penting, tetapi juga muncul dengan logo, nama domain, dan situs webnya sendiri.

Yang ini di dubbing PIC Kebocoran, plesetan pada kata-kata APIC dan EPIC.

Yang pertama adalah kependekan dari Pengontrol Interupsi yang Dapat Diprogram Tingkat Lanjut, dan yang terakhir hanyalah kata "epik", seperti dalam raksasa, besar-besaran, ekstrim, mega, sangat besar.

Huruf belum pernah digunakan dalam bahasa Inggris tertulis sejak zaman Saxon. Namanya adalah sc, diucapkan abu (seperti di pohon), dan itu cukup mewakili suara A dalam kata modern ASH. Tapi kami menganggap Anda seharusnya mengucapkan kata itu PIC di sini baik sebagai "APIC-slash-EPIC", atau sebagai "ah!-eh?-PIC".

Apa itu semua tentang?

Semua ini menimbulkan lima pertanyaan menarik:

  • Apa itu APIC?, dan mengapa saya membutuhkannya?
  • Bagaimana Anda bisa memiliki data itu? bahkan kernelnya tidak bisa mengintip?
  • Apa yang menyebabkan kegagalan epik ini? di APIC?
  • Apakah PIC Kebocoran mempengaruhi saya?
  • Apa yang harus dilakukan tentang itu?

Apa itu APIC?

Mari kita mundur ke tahun 1981, ketika IBM PC pertama kali muncul.

PC menyertakan chip yang disebut Intel 8259A Pengontrol Interupsi yang Dapat Diprogram, atau PIC. (Model selanjutnya, dari PC AT dan seterusnya, memiliki dua PIC, dirantai bersama, untuk mendukung lebih banyak acara interupsi.)

Tujuan PIC secara harfiah adalah untuk menginterupsi program yang berjalan pada prosesor pusat (CPU) PC setiap kali terjadi sesuatu yang kritis terhadap waktu yang membutuhkan perhatian segera.

Interupsi perangkat keras ini termasuk kejadian seperti: keyboard mendapatkan penekanan tombol; port serial yang menerima karakter; dan timer perangkat keras berulang terus berdetak.

Tanpa sistem interupsi perangkat keras semacam ini, sistem operasi perlu dikotori dengan panggilan fungsi untuk memeriksa penekanan tombol yang masuk secara teratur, yang akan membuang-buang daya CPU ketika tidak ada yang mengetik, tetapi tidak akan responsif cukup ketika mereka melakukannya.

Seperti yang dapat Anda bayangkan, PIC segera diikuti oleh chip yang ditingkatkan yang disebut APIC, Sebuah maju semacam PIC dibangun ke dalam CPU itu sendiri.

Saat ini, APIC menyediakan lebih dari sekadar umpan balik dari keyboard, port serial, dan pengatur waktu sistem.

Peristiwa APIC dipicu oleh (dan menyediakan data waktu nyata tentang) peristiwa seperti panas berlebih, dan memungkinkan interaksi perangkat keras antara inti yang berbeda dalam prosesor multicore kontemporer.

Dan chip Intel saat ini, jika kita dapat menyederhanakannya, secara umum dapat dikonfigurasi untuk bekerja dalam dua cara berbeda, yang dikenal sebagai mode xAPIC dan mode x2APIC.

Di sini, xAPIC adalah cara "warisan" untuk mengekstraksi data dari pengontrol interupsi, dan x2APIC adalah cara yang lebih modern.

Menyederhanakan lebih jauh, xAPIC bergantung pada apa yang disebut MMIO, kependekan dari input/output yang dipetakan memori, untuk membaca data dari APIC saat mendaftarkan peristiwa yang menarik.

Dalam mode MMIO, Anda dapat mengetahui apa yang memicu peristiwa APIC dengan membaca dari wilayah memori (RAM) tertentu, yang mencerminkan register input/output dari chip APIC itu sendiri.

Data xAPIC ini dipetakan ke dalam blok memori 4096-byte di suatu tempat di RAM fisik komputer.

Ini menyederhanakan pengaksesan data, tetapi memerlukan interaksi yang mengganggu, kompleks (dan, seperti yang akan kita lihat, berpotensi berbahaya) antara chip APIC dan memori sistem.

Sebaliknya, x2APIC mengharuskan Anda untuk membaca data APIC secara langsung dari chip itu sendiri, menggunakan apa yang dikenal sebagai Register Khusus Model (MSR).

Menurut Intel, menghindari bagian MMIO dari proses “menyediakan kemampuan pengalamatan prosesor yang meningkat secara signifikan dan beberapa peningkatan pada pengiriman interupsi.”

Khususnya, mengekstrak data APIC langsung dari register on-chip berarti bahwa jumlah total data yang didukung, dan jumlah maksimum inti CPU yang dapat dikelola pada saat yang sama, tidak terbatas pada 4096 byte yang tersedia dalam mode MMIO.

Bagaimana Anda bisa memiliki data yang bahkan kernel tidak bisa mengintip?

Anda mungkin sudah menebak bahwa data yang berakhir di area memori MMIO saat Anda menggunakan mode xAPIC tidak selalu dikelola dengan hati-hati sebagaimana mestinya…

…dan dengan demikian semacam “kebocoran data” ke dalam area MMIO itu adalah inti dari masalah ini.

Tapi mengingat itu kamu sudah membutuhkan kekuatan tingkat sysadmin untuk membaca data MMIO di tempat pertama, dan karena itu Anda hampir pasti bisa mendapatkan semua dan semua data di memori…

…mengapa data orang lain muncul secara tidak sengaja di area data APIC MMIO mewakili sebuah epik bocor?

Ini mungkin membuat beberapa jenis pencurian data atau serangan pengikisan RAM sedikit lebih mudah dalam praktiknya, tetapi tentu saja itu tidak akan memberi Anda kemampuan pengintaian memori lagi yang sudah Anda miliki secara teori?

Sayangnya, asumsi itu tidak benar jika ada perangkat lunak pada sistem yang menggunakan Intel SGX, kependekan dari Ekstensi Pelindung Perangkat Lunak.


PELAJARI LEBIH LANJUT TENTANG SGX


SGX didukung oleh banyak CPU Intel terbaru, dan menyediakan cara bagi kernel sistem operasi untuk "menyegel" sepotong kode dan data ke dalam blok fisik RAM sehingga membentuk apa yang dikenal sebagai enklave.

Ini membuatnya berperilaku, setidaknya untuk sementara, seperti chip keamanan khusus di ponsel yang digunakan untuk menyimpan rahasia seperti kunci dekripsi.

Setelah "kunci" SGX enklave diatur, hanya kode program yang berjalan di dalam area memori tertutup yang dapat membaca dan menulis konten RAM tersebut.

Akibatnya, detail internal dari perhitungan apa pun yang terjadi setelah enklave diaktifkan tidak terlihat oleh kode, utas, proses, atau pengguna lain di sistem.

Termasuk kernel itu sendiri.

Ada cara untuk memanggil kode yang telah disegel ke dalam enklave, dan cara untuk mengembalikan output dari perhitungan yang mungkin dilakukan, tetapi tidak ada cara untuk memulihkan, atau memata-matai, atau men-debug, kode dan data terkaitnya saat dijalankan.

Enklave secara efektif berubah menjadi kotak hitam tempat Anda dapat memasukkan input, seperti data yang akan ditandatangani dengan kunci pribadi, dan mengekstrak output, seperti tanda tangan digital yang dihasilkan, tetapi dari mana Anda tidak dapat mengeluarkan kunci kriptografik digunakan dalam proses penandatanganan.

Seperti yang dapat Anda bayangkan, jika data yang seharusnya disegel di dalam enklave SGX secara tidak sengaja terduplikasi ke dalam RAM MMIO yang digunakan untuk "mencerminkan" data APIC saat Anda menggunakan mode "memory-mapped" xAPIC...

…itu akan melanggar keamanan SGX, yang menyatakan bahwa tidak boleh ada data yang muncul dari enklave SGX setelah dibuat, kecuali jika data tersebut dengan sengaja diekspor oleh kode yang sudah berjalan di dalam enklave itu sendiri.

Apa yang menyebabkan kegagalan epik ini di APIC?

Para peneliti di balik Kertas Kebocoran PIC menemukan bahwa dengan mengatur untuk membacakan data APIC melalui urutan akses memori yang licik dan tidak biasa…

…mereka dapat mengelabui prosesor agar mengisi ruang APIC MMIO tidak hanya dengan data yang baru diterima dari APIC itu sendiri, tetapi juga dengan data yang baru saja digunakan oleh CPU baru-baru ini untuk tujuan lain.

Perilaku ini adalah efek samping dari fakta bahwa meskipun halaman memori APIC MMIO berukuran 4096 byte, chip APIC dalam mode xAPIC tidak benar-benar menghasilkan data senilai 4096 byte, dan CPU tidak selalu menetralkan dengan benar. bagian region MMIO yang tidak terpakai dengan mengisinya dengan angka nol terlebih dahulu.

Sebagai gantinya, data lama yang tersisa di cache CPU ditulis bersama dengan data baru yang diterima dari chip APIC itu sendiri.

Seperti yang dikatakan para peneliti, serangga itu bermuara pada apa yang dikenal sebagai pembacaan memori yang tidak diinisialisasi, di mana Anda secara tidak sengaja menggunakan kembali data sisa orang lain dalam RAM karena baik mereka maupun Anda tidak menghapusnya dari rahasia sebelumnya terlebih dahulu.

Apakah PIC Leak mempengaruhi saya?

Untuk daftar lengkap chip yang terpengaruh, lihat Nasihat Intel sendiri.

Sejauh yang kami tahu, jika Anda memiliki prosesor Intel generasi ke-10 atau ke-11, Anda mungkin terpengaruh.

Tetapi jika Anda memiliki CPU generasi ke-12 yang benar-benar baru (yang terbaru pada saat penulisan), maka tampaknya hanya chip kelas server yang terpengaruh.

Ironisnya, pada chip laptop generasi ke-12, Intel telah menyerah pada SGX, jadi bug ini tidak berlaku karena tidak mungkin ada kantong SGX "tersegel" yang bisa bocor.

Tentu saja, bahkan pada chip yang berpotensi rentan, jika Anda tidak mengandalkan perangkat lunak apa pun yang menggunakan SGX, maka bug juga tidak berlaku.

Dan bugnya, dijuluki CVE-2022-21233, hanya dapat dieksploitasi oleh penyerang yang telah memiliki akses tingkat admin (root) lokal ke komputer Anda.

Pengguna biasa tidak dapat mengakses blok data APIC MMIO, dan karenanya tidak dapat mengintip apa pun di sana, apalagi data rahasia yang mungkin bocor dari enklave SGX.

Juga, mesin virtual tamu (VM) yang berjalan di bawah kendali sistem operasi host di hypervisor seperti HyperV, VMWare atau VirtualBox hampir pasti tidak dapat menggunakan trik ini untuk menjarah rahasia dari tamu lain atau host itu sendiri.

Itu karena VM tamu umumnya tidak mendapatkan akses ke sirkuit APIC yang sebenarnya di prosesor host; sebagai gantinya, setiap tamu mendapatkan APIC simulasinya sendiri yang unik untuk VM tersebut.

Apa yang harus dilakukan?

Jangan panik.

Pada laptop atau komputer desktop, Anda mungkin tidak berisiko sama sekali, baik karena Anda memiliki komputer lama (atau, beruntungnya Anda, komputer baru!), atau karena Anda tidak mengandalkan SGX.

Dan bahkan jika Anda berisiko, siapa pun yang masuk ke laptop Anda sebagai admin/root mungkin sudah memiliki kekuatan yang cukup untuk membuat Anda kesulitan.

Jika Anda memiliki server yang rentan dan Anda mengandalkan SGX sebagai bagian dari keamanan operasional Anda, periksa penasihat keamanan Intel INTEL-SA-00657 untuk informasi perlindungan dan mitigasi.

Menurut para peneliti yang menulis ini, “Intel [telah] merilis pembaruan mikrokode dan SGX Software Development Kit untuk memperbaiki masalah ini.”

Tim kernel Linux juga tampaknya bekerja sekarang pada tambalan yang memungkinkan Anda untuk mengonfigurasi sistem Anda sehingga akan selalu menggunakan x2APIC (yang, seperti yang akan Anda ingat sebelumnya, tidak mengirimkan data APIC melalui memori bersama), dan dengan anggun akan mencegah sistem dipaksa kembali ke mode xAPIC setelah boot.


Stempel Waktu:

Lebih dari Keamanan Telanjang