- NGINX Rift adalah PoC eksekusi kode jarak jauh untuk CVE-2026-42945, sebuah heap buffer overflow kritis di
ngx_http_rewrite_module milik NGINX
- Kerentanan ini memungkinkan eksekusi kode jarak jauh tanpa autentikasi pada server yang menggunakan direktif
rewrite dan set
- Masalah ini berasal dari bug yang diperkenalkan pada 2008, terjadi karena length calculation pass dan copy pass pada mesin skrip NGINX menangani flag
is_args secara berbeda
- Jika string substitusi
rewrite berisi ?, is_args disetel pada mesin utama, tetapi perhitungan panjang dijalankan pada sub-engine yang baru diinisialisasi ke 0 sehingga hanya mengembalikan panjang capture asli
- Pada tahap penyalinan,
ngx_escape_uri dan NGX_ESCAPE_ARGS dipanggil dengan status is_args = 1, sehingga setiap byte yang bisa di-escape diperluas menjadi 3 byte dan membuat heap buffer yang dialokasikan terlalu kecil meluap dengan data URI yang dikendalikan penyerang
- Eksploit ini menggunakan heap feng shui antar-request untuk merusak pointer
cleanup pada ngx_pool_t yang bersebelahan, dan karena null byte tidak bisa dimasukkan ke dalam byte URI, spray dilakukan melalui body POST
- Pointer yang sudah dirusak diarahkan ulang ke
ngx_pool_cleanup_s palsu dan dikonfigurasi untuk memanggil system() saat pool dihancurkan
- Bersama CVE-2026-42945, tiga isu korupsi memori lain yakni CVE-2026-42946, CVE-2026-40701, dan CVE-2026-42934 juga ditemukan secara otonom hanya dari satu kali onboarding source code NGINX oleh sistem analisis keamanan dari depthfirst
- Versi yang terdampak adalah NGINX Open Source 0.6.27–1.30.0 dan NGINX Plus R32–R36, sedangkan versi perbaikannya adalah Open Source 1.31.0/1.30.1 dan Plus R36 P4/R35 P2/R32 P6
- Peringatan vendor lengkap tersedia di https://my.f5.com/manage/s/article/K000160932, dan detail teknis dibahas dalam technical write-up
- PoC diuji di Ubuntu 24.04.3 LTS, dan menyediakan alur untuk menjalankan container NGINX yang rentan serta membuka shell dengan urutan
./setup.sh, docker compose -f env/docker-compose.yml up, lalu python3 poc.py --shell
1 komentar
Komentar Hacker News
Sebagai orang keamanan, melelahkan melihat terlalu banyak reaksi yang menyimpulkan atau menyiratkan bahwa masalah ini jauh kurang menakutkan hanya karena eksploit yang dipublikasikan tidak melakukan bypass ASLR
Teks aslinya mengklaim ada cara untuk membypass ASLR secara andal dengan serangan ini, dan menurut saya itu layak dipercaya sebagai asumsi dasar bahkan tanpa bukti
ASLR hanyalah teknik defense in depth yang membuat eksploitasi lebih sulit, dan dalam kebanyakan kasus, dengan waktu dan kemampuan yang cukup, bypass ASLR pada akhirnya akan muncul
Karena agen LLM, hambatan waktu dan kemampuan itu juga terus menurun tiap beberapa minggu, jadi eksploit yang benar-benar dipersenjatai sepenuhnya tinggal soal waktu, entah akan dipublikasikan atau tetap tertutup
Pernyataan “kalau ASLR diaktifkan berarti tidak berbahaya” jelas salah, dan sangat merugikan bagi orang yang mempercayainya
Keyakinan keliru bahwa kerentanan keamanan tidak perlu dipedulikan karena teknik mitigasi bisa membuat eksploitasi lebih sulit sudah banyak menimbulkan kerusakan di masa lalu
Syukurlah mitigasi modern ada, tetapi patch tetap harus diterapkan secepat mungkin, dan jika Anda vendor, jangan perlakukan laporan kerentanan sebagai tidak valid hanya karena penelitinya tidak menunjukkan bypass ASLR; perbaiki akar masalahnya
Hanya saja, untuk saat ini prasyaratnya memang tampak agak tidak biasa
Selama 10 tahun memakai nginx dalam berbagai konfigurasi, saya belum pernah sekali pun menggunakan
rewritedansetsecara bersamaanDan mereka pasti bilang “cyber”
ASLR itu seperti kata sandi tambahan yang harus ditebak, memiliki entropi tertentu, dan biasanya cukup stabil
Jika kerentanannya tidak punya bagian kebocoran informasi, ASLR bisa sepenuhnya memitigasi kerentanan itu, atau kalau tidak berarti dibutuhkan kerentanan kedua
Itu pembahasan yang berbeda
ASLR bisa sepenuhnya memitigasi kerentanan individual, tetapi tidak bisa menghentikan rangkaian eksploit secara keseluruhan
Meski begitu, untuk meyakinkan orang agar cepat melakukan patch, menurut saya lebih baik memakai kemungkinan adanya kerentanan kedua yang menciptakan kebocoran informasi sebagai argumen
Rangkaian eksploit memang berbahaya untuk semua jenis kerentanan
Yang benar-benar berbahaya adalah mempercayai begitu saja komentar internet acak yang disampaikan dengan penuh keyakinan
Jika bisa mengasah kemampuan untuk menembus itu, itu akan berguna bukan hanya di keamanan tetapi juga di bidang lain
Itulah alasan saya membaca laporan seperti ini, dan itu harus ditanggapi serius
Kalau tidak, mesin Anda akan dibobol dalam waktu dekat
Belakangan ini tampaknya banyak eksploit remote code execution yang dipublikasikan tanpa pemberitahuan sebelumnya, dan saya berharap setidaknya diberi beberapa menit untuk sempat meng-upgrade perangkat lunaknya
Rasanya seperti akhir 1980-an hingga awal 1990-an ketika bug sendmail yang bisa dieksploitasi dari jarak jauh bermunculan dan belum ada pagar pengaman dalam publikasi
Kalau Anda tidak membaca laporan seperti ini atau membacanya terlalu terlambat, jutaan mesin bisa terdampak kompromi
Saat ini nginx menguasai sekitar 39~43% pasar web server publik, jadi ini cukup serius
Kasus kali ini cukup buruk, tetapi memang ada prasyaratnya
Dibutuhkan direktif
rewritedengan tanda tanya di string pengganti, lalu setelahnya harus ada direktifsetyang mereferensikan grup tangkapan regexContoh:
set $var $1Selain itu, proof of concept ini mengasumsikan ASLR dinonaktifkan
Bahkan kalau dimatikan manual pun, nginx bukan kandidat yang langsung terlintas untuk itu
rewritehampir tidak dipakai lagi?Rasanya itu dipakai pada era lama PHP dan Apache
Halaman resmi F5 ada di sini: https://my.f5.com/manage/s/article/K000161019
Seperti yang juga ditulis di tempat lain, ASLR memang memberi perlindungan
Sebagai mitigasi sambil menunggu perbaikan untuk platform yang terdampak, mereka menyarankan untuk “menggunakan named capture alih-alih unnamed capture dalam definisi
rewrite”Isinya adalah “untuk memitigasi kerentanan pada contoh ini, ubah
$1dan$2menjadi named capture yang sesuai, yaitu$user_iddan$section”F5 telah mem-patch 1.31.0 dan 1.30.1
OpenResty memiliki patch untuk 1.27 dan 1.29: https://github.com/openresty/openresty/commit/ee60fb9cf645c9...
Perkembangan OpenResty, server aplikasi Lua berbasis Nginx, bisa dilihat di sini: https://github.com/openresty/openresty/issues/1119
Proof of concept ini menonaktifkan ASLR: https://github.com/DepthFirstDisclosures/Nginx-Rift/blob/mai...
forkdari master, jadi menerima tata letak memori yang samaAnda bisa membuat worker crash tanpa batas
Sangat mungkin hal ini bisa dimanfaatkan untuk membuat oracle baca
Setidaknya penolakan layanan yang stabil tampaknya memungkinkan
Analisis lengkap dari Depth First: https://depthfirst.com/research/nginx-rift-achieving-nginx-r...
Apakah ada alternatif bagus untuk Apache dan Nginx yang ditulis dalam bahasa yang aman memori dan tidak punya banyak lubang keamanan?
Saya sempat melihat Jetty yang ditulis dalam Java dan Caddy yang ditulis dalam Go, tetapi karena Jetty punya riwayat jenis kerentanan lain seperti shell injection, saya tidak yakin itu benar-benar lebih baik
Operator infrastruktur saat ini juga perlu membiasakan diri dengan pertahanan aktif berupa MAC, yaitu SELinux dan AppArmor
Dulu friksinya besar, tetapi sekarang ada lebih banyak alat yang mempermudah penggunaannya
https://presentations.nordisch.org/apparmor/
https://github.com/nobody43/apparmor-profiles/blob/master/ng...
https://github.com/nobody43/apparmor-suggest
Sebagai catatan, kedua repositori itu saya buat sendiri
Fakta bahwa keduanya bisa mempertahankan pangsa pasar selama itu justru merupakan sinyal yang baik
Hanya saja saya kurang suka model yang menghasilkan ribuan biner tergantung kombinasi plugin yang diinginkan, alih-alih sistem plugin yang layak
Meski begitu, kalau dibangun dari source, itu cukup rapi dan sederhana
Sebagian besar server HTTP alternatif memang memangkas cakupan cukup besar, jadi Anda perlu menentukan dulu fitur apa yang dibutuhkan
Saya belum banyak melihat pembahasan tentang server HTTP dalam bahasa yang aman memori
Tiga server besar berbasis C, yaitu Apache, Nginx, dan lighttpd, semuanya cukup kokoh, dan tampaknya tidak banyak orang yang ingin pindah ke proyek baru hanya karena bahasanya
Selain itu, memilih kebanyakan bahasa aman memori biasanya juga berarti ikut menerima runtime atau mesin virtual bahasa tersebut yang kadang sangat besar, beserta komponen pelengkapnya
Kalau itu web server Java, ada kemungkinan ia memakai log4j seperti proyek Java acak pada umumnya
“Eksploit ini menggunakan heap feng shui lintas-permintaan (cross-request heap feng shui),” saya rasa ini pertama kalinya saya melihat feng shui dipakai dengan cara seperti ini
Apakah ini sudah di-patch di Debian 12?
Kalau begitu, apakah aman menganggap bahwa jika Anda tidak memakai
rewriteatausetdi mana pun, Anda tidak terdampak?Debian tampaknya belum mem-patch trixie
setsama sekaliSebagian besar use case nginx adalah terminasi TLS lalu meneruskan permintaan ke node/php/go dan sebagainya
Jadi saya tadinya mengira pasti ada setidaknya satu
setyang memasukkan data yang dikendalikan penyerang, misalnya pada baris sepertiproxy_set_header X-Host $host;Koreksi: named capture tampaknya tidak terdampak
Kalau tidak ada
$1di mana pun, seharusnya amanTautan yang lebih baik:
https://depthfirst.com/research/nginx-rift-achieving-nginx-r... (https://news.ycombinator.com/item?id=48126029)
https://depthfirst.com/nginx-rift (https://news.ycombinator.com/item?id=48123365)