2 poin oleh GN⁺ 2023-11-15 | 1 komentar | Bagikan ke WhatsApp

Menemukan misteri CPU

  • Jika Anda tertarik pada kesalahan yang dapat terjadi di dalam CPU modern, disarankan untuk terus membaca.
  • Jika Anda pernah menulis assembly x86, Anda kemungkinan akrab dengan instruksi rep movsb yang digunakan untuk memindahkan memori.
  • Setelah mengatur sumber, tujuan, arah, dan hitungan, prosesor akan menangani semua detailnya.

Interpretasi prefiks instruksi

  • Salah satu karakteristik x86 adalah decoding instruksinya secara umum sangat fleksibel.
  • Bahkan jika menggunakan prefiks yang tidak bermakna atau bertabrakan dengan prefiks lain, sebagian besar akan diabaikan.
  • Kompiler dapat menggunakan prefiks yang tidak perlu untuk menyesuaikan dengan batas alignment yang diinginkan.

Prefiks REX

  • i386 memiliki 8 register serbaguna, sehingga register dapat ditentukan dengan 3 bit.
  • x86-64 memperkenalkan 8 register serbaguna tambahan sehingga memerlukan lebih banyak bit.
  • Prefiks rex memungkinkan instruksi berikutnya meminjam bit tambahan, sehingga encoding 16 register serbaguna menjadi mungkin.

Aturan encoding

  • Prefiks rex menambah ruang yang tersedia untuk meng-encode operand.
  • Prefiks yang tidak perlu atau duplikat sebagian besar diabaikan di x86.
  • Instruksi rex.rxb rep movsb tidak memiliki operand, sehingga bit rex tidak bermakna dan prosesor mengabaikan prefiks rex.

Fast Short Repeat Move (FSRM)

  • FSRM adalah fitur baru yang diperkenalkan di Ice Lake untuk mengatasi kekurangan ERMS.
  • Pada ERMS, bagian tersulit dari pemindahan string yang efisien adalah menyelaraskan buffer dan menggunakan penyimpanan selebar mungkin.
  • FSRM bertujuan memindahkan string pendek berukuran 128 byte atau kurang dengan lebih cepat.

Penemuan

  • Dengan menggunakan Oracle Serialization, sebuah teknik verifikasi prosesor, diperiksa apakah dua bentuk program yang dibuat secara acak memiliki status akhir yang sama.
  • Pada bulan Agustus, pipeline verifikasi menemukan kasus ketika penambahan prefiks rex.r yang redundan pada operasi rep movs yang dioptimalkan FSRM menghasilkan hasil yang tidak dapat diprediksi.
  • Dikonfirmasi bahwa ketika banyak inti memicu bug yang sama, prosesor melaporkan machine check exception lalu berhenti.

Reproduksi

  • Hasil penelitian dipublikasikan ke repositori riset keamanan.
  • Untuk mereproduksi kerentanan, Anda dapat menggunakan alat icebreak.
  • Pada sistem yang tidak terdampak, seharusnya tidak ada keluaran apa pun, tetapi pada sistem yang terdampak, . akan dicetak setiap kali reproduksi berhasil.

Analisis

  • Karena cara kerja microcode pada sistem modern dirahasiakan, hanya teori berbasis observasi yang dimungkinkan.
  • Diperkirakan bug ini membuat frontend salah menghitung ukuran instruksi movsb, sehingga entri berikutnya di ROB (reorder buffer) terhubung ke alamat yang salah.

Pertanyaan

  • Mungkin muncul pertanyaan tentang apa yang mungkin dilakukan dalam keadaan "glitch" tak terduga ini.
  • Diketahui bahwa status sistem dapat dirusak cukup parah hingga memicu machine check error, dan thread dapat memengaruhi eksekusi prosesor saudara SMT.
  • Karena tidak ada cara untuk men-debug eksekusi μop, tidak diketahui apakah eskalasi hak akses dapat dicapai.

Solusi

  • Intel telah merilis microcode yang diperbarui untuk semua prosesor yang terdampak.
  • Vendor sistem operasi atau BIOS mungkin sudah menyediakan pembaruan tersebut.

Alternatif

  • Jika pembaruan tidak memungkinkan, fast strings dapat dinonaktifkan melalui register model-spesifik IA32_MISC_ENABLE.
  • Ini akan menyebabkan penurunan performa yang signifikan, jadi hanya boleh digunakan bila benar-benar diperlukan.

Pendapat GN⁺

Poin terpenting dari artikel ini adalah bahwa artikel ini menunjukkan ditemukannya keadaan "glitch" tak terduga yang dapat terjadi pada CPU modern dan bahwa hal ini dapat menimbulkan kerentanan keamanan. Tulisan ini bisa menarik bagi para software engineer dan membantu meningkatkan kesadaran akan kompleksitas CPU serta kerentanan sistem. Selain itu, artikel ini membantu memahami bagaimana penemuan semacam ini dapat berkembang menjadi ancaman keamanan nyata, dan menekankan pentingnya microcode yang telah diperbarui.

1 komentar

 
GN⁺ 2023-11-15
Opini Hacker News
  • Tim Konrad Magnusson menemukan masalah yang terkait dengan mimalloc.

    • Konrad Magnusson dari Paradox Interactive menemukan isu yang terkait dengan mimalloc, dan ini mungkin berhubungan dengan kerentanan CPU baru yang ditemukan oleh para peneliti Google.
  • Beberapa tim riset di Google menemukan bug tersebut secara independen.

    • Beberapa tim riset di Google, termasuk tim silifuzz dan tim Google Information Security Engineering, menemukan bug yang sama secara independen.
  • Prosesor melaporkan machine check exception lalu berhenti.

    • Disebutkan adanya fenomena di mana prosesor melaporkan machine check exception dan berhenti beroperasi.
  • Menyadari kurangnya pemahaman tentang hardware.

    • Menyadari bahwa pengetahuannya tentang hardware masih kurang, sambil mempertanyakan mengapa diperlukan "prefix" untuk mengubah perilaku instruksi.
  • Mengingat diagnosis qemu saat menghadapi masalah repz ret.

    • Mengingat kembali situasi ketika qemu mendiagnosis masalah repz ret.
  • Karyawan Intel sendiri dan karyawan Google melaporkan masalah tersebut.

    • Intel menyampaikan terima kasih kepada karyawannya sendiri dan karyawan Google karena telah menemukan dan melaporkan masalah ini secara internal.
  • Jauh lebih menarik daripada artikel Google.

    • Mengungkapkan bahwa diskusi tersebut jauh lebih menarik daripada artikel Google.
  • Pertanyaan apakah mungkin merancang CPU yang tidak mengeksekusi secara berurutan melainkan secara spekulatif tanpa masalah keamanan.

    • Mengajukan pertanyaan tentang masalah keamanan yang bisa muncul saat merancang CPU yang tidak mengeksekusi secara berurutan melainkan secara spekulatif, serta apakah di masa depan setiap inti A55 akan bergerak ke arah menjalankan satu aplikasi secara independen.
  • Penjelasan tentang buletin keamanan Intel.

    • Buletin keamanan Intel menjelaskan bahwa ada urutan instruksi pada prosesor Intel tertentu yang dapat menyebabkan perilaku tak terduga, yang memungkinkan pengguna terautentikasi memicu peningkatan hak akses, kebocoran informasi, atau penolakan layanan.