Pendahuluan

Oke-oke.. sekarang sudah akhir Desember, tetapi tetap saja ada perbincangan ramai mengenai Vulnerability Log4j.

Hmm.., sepertinya vulnerability nya ini seperti efek domino yang merambat kemana-mana.


Gimana sih kesimpulananya ?

Baik, kita coba lihat apa saja vulnerability log4j yang ditemukan di bulan Desember 2021 ini :

Kita akan urutkan berdasarkan tanggal fix nya direlease, dimana fixing pertama ditampilkan di awal, sbb :


Detailnya seperti apa ?


1. CVE-2021-44228 - Remote Code Execution

  • tercatat tanggal 26 November 2021

Vulnerability Log4j ini menyangkut bahaya RCE (Remote Code Execution) dengan memanfaatkan parameter logging di message yang secara default otomatis akan melakukan property lookup untuk tipe JDNI LDAP di Log4j.

Mitigasinya dengan mengupgrade versi Log4j ke 2.15.0, yang didalamnya mengubah defaultnya ke tidak secara otomatis akan melakukan property lookup ketika menemukan message yang ada parameter JNDI nya.

Bahkan di versi 2.16.0, fungsionalitasnya message lookup nya JNDI ini dihilangkan sama sekali, walaupun fasilitas lookupnya melalui konfigurasi tetap ada.

Mitigasi detailnya dapat dilihat sebagai berikut :

Mitigasi terkait dengan Library nya sendiri. link

Mitigasi yang tidak terkait dengan Library nya sendiri. link



2. CVE-2021-45046 - Remote Code Execution

  • tercatat tanggal 14 Desember 2021

Ternyata setelah versi Log4j 2.15.0 direlease, ternyata terdapat kekurangan di konfigurasi message lookupnya.

Misalkan kita melakukan Logger.printf("%s", userInput), maka userInput dapat diisi dengan masukan yang mirip dengan vulnerability JNDI sebelumnya, yaitu RCE dan terbukanya informasi dari server kita.

Mitigasinya dengan mengupgrade versi Log4j nya ke versi 2.16.0 (Java 8) atau versi 2.12.2 (Java 7), dimana didalamnya tidak ada support untuk message lookup dan juga disable JNDI lookup secara default.



3. CVE-2021-45105 - Denial Of Service

  • tercatat tanggal 16 Desember 2021

Ternyata setelah versi Log4j 2.16.0 direlease, muncul testing lainnya yang mengekspose vulnerability lainnya.

Misalnya terkait dengan Lookup Thread Context Map (MDC).

Ketika misalnya melakukan konfigurasi log pattern dengan misalnya $${ctx:username} atau $${ctx:loginId}, dan kita melakukan setting ThreadContext.put(“username”, objectUsername) di code kita, maka bisa saja objectUsername tersebut diinject melalui inputan message dari pengguna yang nakal.

Data yang diinject itu bisa juga dalam bentuk variable misalnya ctx:username lagi, sehingga akan melakukan lookup secara looping terus menerus.

Akibatnya akan terjadi efek DOS (Denial Of Service) karena sumber daya komputer akan habis dan stackoverflow karena infinite loop.

Mitigasinya dengan mengupgrade versi Log4j nya ke versi 2.17.0 atau 2.12.3, atau 2.3.1.



4. CVE-2021-44832 - Remote Code Execution

  • tercatat tanggal 11 Desember 2021

Walaupun sudah diregister lebih awal, ternyata fix releasenya agak terakhir.

Juga terkait dengan konfigurasi menggunakan JDBC Appender dengan JNDI LDAP data source URI.

Tetapi vulnerabilities ini membutuhkan akses ke file konfigurasi seperti log4j.xml. Sehingga secara teknis lebih susah dipraktekkan.

Mitigasinya :

  • kalau sebelumnya sudah pakai Log4j 2.17.x untuk Java 8 - upgrade ke 2.17.1
  • kalau sebelumnya sudah pakai Log4j 2.12.x untuk Java 7 - upgrade ke 2.12.4
  • kalau sebelumnya sudah pakai Log4j 2.3.x untuk Java 6 - upgrade ke 2.3.2

Demikianlah sekelumit kesimpulan dari Vulnerabilities Log4j pada akhir tahun 2021 ini yang cukup menghebohkan dunia per-IT an dan per-Java an.