Akhir - akhir ini Apache Log4j atau disebut juga log4j telah menjadi topic perbincangan yang hangat dalam dunia keamanan IT. Topik ini terutama berputar pada kelemahan CVE-2021-44228 dengan moniker Log4Shell atau LogJam yang memungkinkan penyerang untuk melakukan Remote Code Execution (RCE) pada server yang berdampak.
Kelemahan yang pada awalnya ditemukan menjangkit server-server Minecraft ini kemudian ditemukan di banyak server lain yang menjalankan aplikasi Java yang menjalankan log4j versi 2.12.2 untuk Java 7 dan 2.16.0 untuk Java 8 keatas.
Apache Log4j merupakan aplikasi framework yang berfungsi melakukan logging pada aplikasi Java. Awalnya dikembangkan oleh Ceki Gülcü, aplikasi ini kemudian diadopsi oleh Apache Software Foundation dan menjadi bagian dari proyek Apache Logging Services, dengan kata lain log4j menjadi salah satu aplikasi yang direkomendasi oleh Apache Foundation.
Lalu bagaimana kerentanan ini bekerja? Pada dasarnya kelemahan ini bekerja seperti layaknya SQL Injection dimana penyerang memasukkan kode jahat ke logging server. Kemudian, penyerang menggunakan Java Naming and Directory Interface (JNDI) untuk mengarahkan Log4j untuk mengesekusi kode eksploitasi pada server luar layaknya pada Cross Site Scripting (XSS).
Kelemahan ini diakibatkan karena log4j tidak melakukan filtering pada user input sehingga menyebabkan log4j mengeksekusi kode jahat yang berada pada user input. Hal ini memungkinkan penyerang untuk memasukkan kode jahat pada log yang memungkinkan akses baca pada environment variables (Information Leak) sampai eksekusi shellcode (RCE).
Pada aplikasi Minecraft kelemahan ini bekerja ketika penyerang memasukkan kode jahat ke fitur percakapan atau chat yang tersedia bagi pemain. Minecraft menggunakan Log4j untuk melakukan logging aplikasi termasuk chat antar pemain. Hal ini mengakibatkan penyerang mampu mengambil alih kendali seluruh server hanya dengan chatting.
Hingga saat artikel ini ditulis, developer Log4j masih berusaha mem-patching kelemahan pada aplikasi tersebut. Untuk sementara ini developer Log4j merekomendasikan untuk melakukan update ke versi 2.12.2 untuk Java 7 dan versi 2.16.0 untuk Java 8 keatas. Selain itu bisa juga dilakukan dengan menghapus JndiLookup class dari Java classpath dengan perintah:
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class