CVE-2023-2163: Menemukan dan Memperbaiki Kerentanan Kernel Linux eBPF
Latar belakang
- eBPF adalah teknologi yang memungkinkan perluasan fungsi kernel Linux saat runtime tanpa harus menulis modul kernel yang kompleks.
- Program eBPF dijalankan ketika peristiwa tertentu terjadi, dan harus diverifikasi keamanannya sebelum dimuat.
- Verifier terdiri dari kode yang kompleks, dan banyak kerentanan telah ditemukan.
- Google mengembangkan Buzzer, sebuah fuzzer yang mengaudit verifier eBPF secara otomatis.
Strategi aritmetika pointer Buzzer
- Buzzer adalah fuzzer baru untuk eBPF yang menggunakan strategi untuk memicu bug logis.
- Strategi aritmetika pointer terdiri dari langkah-langkah berikut:
- Membuat header yang menginisialisasi register dengan nilai acak
- Menghasilkan instruksi aritmetika dan lompatan secara acak
- Memilih register secara acak lalu melakukan operasi penjumlahan dengan pointer ke elemen map eBPF
- Menulis nilai magic ke elemen tersebut
Pemangkasan jalur eBPF
- Verifier eBPF bertugas memastikan program dapat dijalankan dengan aman.
- Ketika ada pernyataan kondisional, verifier mensimulasikan semua status yang mungkin.
- Jika ada banyak lompatan kondisional, strategi pemangkasan jalur digunakan untuk meningkatkan performa.
Bug
- CVE-2023-2163 memperkenalkan konsep "pelacakan presisi" untuk membuat pemangkasan jalur lebih efisien.
- Bug terjadi karena kontribusi register r9 terhadap presisi r6 terlewatkan.
Eksploitasi
- CVE-2023-2163 dapat dieksploitasi untuk mencapai pembacaan/penulisan arbitrer, serta melakukan LPE dan pelarian kontainer.
- Langkah-langkah utama:
- Mencapai pembacaan/penulisan arbitrer
- Menemukan kredensial proses dan meningkatkan hak akses
Perbaikan
- Untuk memperbaiki CVE-2023-2163, register yang tidak presisi ditandai sebagai presisi dalam operasi yang memengaruhi register presisi.
- Dampaknya terhadap performa belum jelas, tetapi tidak ditemukan masalah tambahan.
Ide ke depan
- Menjamin keamanan program eBPF itu sulit karena kompleksitas proses verifikasi.
- Google menangani masalah ini melalui Buzzer dan menyambut kontribusi dari komunitas open source.
Ringkasan GN⁺
- Artikel ini menjelaskan proses menemukan dan memperbaiki kerentanan pada verifier eBPF.
- eBPF adalah teknologi penting dalam riset keamanan kernel, dan menjamin keamanannya merupakan hal yang sulit.
- Google mengembangkan fuzzer bernama Buzzer untuk mengaudit kerentanan pada verifier eBPF secara otomatis.
- Artikel ini bermanfaat bagi peneliti keamanan dan pengembang, serta membantu dalam memastikan keamanan sistem kompleks seperti eBPF.
- Proyek dengan fungsi serupa mencakup alat fuzzer lain yang berkaitan dengan eBPF.
Belum ada komentar.