Manajer perangkat lunak otomatisasi integrasi berkelanjutan/pengiriman berkelanjutan dan penerapan (CI/CD) Jenkins, yang bersumber terbuka, berhasil menangani sembilan kelemahan keamanan, termasuk bug kritis yang memiliki potensi untuk menyebabkan eksekusi kode jarak jauh (RCE) jika berhasil dieksploitasi.
Kesalahan ini, yang diberi identifikasi CVE CVE-2024-23897, dapat dijelaskan sebagai kerentanan pembacaan file sewenang-wenang melalui antarmuka baris perintah (CLI) bawaan.
Pengelola menjelaskan, "Jenkins menggunakan perpustakaan args4j untuk mengurai argumen perintah dan opsi pada pengontrol Jenkins saat memproses perintah CLI. Pengurai perintah ini memiliki fitur yang menggantikan karakter @ diikuti dengan jalur file dalam argumen dengan konten file (expandAtFiles). Fitur ini diaktifkan secara default dan Jenkins 2.441 dan yang lebih lama, LTS 2.426.2 dan yang lebih lama tidak menonaktifkannya."
Pelaku ancaman dapat mengeksploitasi kekhasan ini untuk membaca file arbitrer di sistem file pengontrol Jenkins dengan menggunakan pengkodean karakter default dari proses pengontrol Jenkins.
Meskipun penyerang dengan izin "Keseluruhan/Baca" dapat membaca seluruh file, penyerang yang tidak memiliki izin tersebut hanya dapat membaca tiga baris pertama file tergantung pada perintah CLI.
Selain itu, kelemahan ini dapat dimanfaatkan untuk membaca file biner yang berisi kunci kriptografi, namun dengan batasan tertentu. Jenkins menyatakan bahwa jika rahasia biner dapat diekstraksi, hal ini dapat membuka pintu bagi berbagai serangan, termasuk eksekusi kode jarak jauh melalui URL Resource Root, eksekusi kode jarak jauh melalui cookie "Ingat saya", eksekusi kode jarak jauh melalui serangan skrip lintas situs (XSS) yang tersimpan melalui log build, eksekusi kode jarak jauh melalui bypass perlindungan CSRF, dekripsi rahasia yang disimpan di Jenkins, penghapusan item apa pun di Jenkins, dan unduhan tumpukan dump Java.
Meskipun file yang berisi data biner dapat dibaca, fitur yang terpengaruh mencoba membacanya sebagai string menggunakan pengkodean karakter default proses pengontrol, yang dapat mengakibatkan beberapa byte tidak berhasil dibaca dan digantikan dengan nilai placeholder. Byte mana yang dapat atau tidak dapat dibaca bergantung pada pengkodean karakter ini.
Peneliti keamanan Yaniv Nizry dari SonarSource telah menemukan dan melaporkan kelemahan ini pada 13 November 2023, yang kemudian diperbaiki di Jenkins 2.442 dan LTS 2.426.3 dengan menonaktifkan fitur parser perintah.
Sebagai solusi jangka pendek hingga patch dapat diterapkan, disarankan untuk mematikan akses ke CLI. Perkembangan ini terjadi hampir setahun setelah Jenkins berhasil menangani sepasang kerentanan keamanan parah yang dikenal sebagai CorePlague (CVE-2023-27898 dan CVE-2023-27905) yang dapat menyebabkan eksekusi kode pada sistem yang ditargetkan.
Source: https://thehackernews.com/2024/01/critical-jenkins-vulnerability-exposes.html
Kesalahan ini, yang diberi identifikasi CVE CVE-2024-23897, dapat dijelaskan sebagai kerentanan pembacaan file sewenang-wenang melalui antarmuka baris perintah (CLI) bawaan.
Pengelola menjelaskan, "Jenkins menggunakan perpustakaan args4j untuk mengurai argumen perintah dan opsi pada pengontrol Jenkins saat memproses perintah CLI. Pengurai perintah ini memiliki fitur yang menggantikan karakter @ diikuti dengan jalur file dalam argumen dengan konten file (expandAtFiles). Fitur ini diaktifkan secara default dan Jenkins 2.441 dan yang lebih lama, LTS 2.426.2 dan yang lebih lama tidak menonaktifkannya."
Pelaku ancaman dapat mengeksploitasi kekhasan ini untuk membaca file arbitrer di sistem file pengontrol Jenkins dengan menggunakan pengkodean karakter default dari proses pengontrol Jenkins.
Meskipun penyerang dengan izin "Keseluruhan/Baca" dapat membaca seluruh file, penyerang yang tidak memiliki izin tersebut hanya dapat membaca tiga baris pertama file tergantung pada perintah CLI.
Selain itu, kelemahan ini dapat dimanfaatkan untuk membaca file biner yang berisi kunci kriptografi, namun dengan batasan tertentu. Jenkins menyatakan bahwa jika rahasia biner dapat diekstraksi, hal ini dapat membuka pintu bagi berbagai serangan, termasuk eksekusi kode jarak jauh melalui URL Resource Root, eksekusi kode jarak jauh melalui cookie "Ingat saya", eksekusi kode jarak jauh melalui serangan skrip lintas situs (XSS) yang tersimpan melalui log build, eksekusi kode jarak jauh melalui bypass perlindungan CSRF, dekripsi rahasia yang disimpan di Jenkins, penghapusan item apa pun di Jenkins, dan unduhan tumpukan dump Java.
Meskipun file yang berisi data biner dapat dibaca, fitur yang terpengaruh mencoba membacanya sebagai string menggunakan pengkodean karakter default proses pengontrol, yang dapat mengakibatkan beberapa byte tidak berhasil dibaca dan digantikan dengan nilai placeholder. Byte mana yang dapat atau tidak dapat dibaca bergantung pada pengkodean karakter ini.
Peneliti keamanan Yaniv Nizry dari SonarSource telah menemukan dan melaporkan kelemahan ini pada 13 November 2023, yang kemudian diperbaiki di Jenkins 2.442 dan LTS 2.426.3 dengan menonaktifkan fitur parser perintah.
Sebagai solusi jangka pendek hingga patch dapat diterapkan, disarankan untuk mematikan akses ke CLI. Perkembangan ini terjadi hampir setahun setelah Jenkins berhasil menangani sepasang kerentanan keamanan parah yang dikenal sebagai CorePlague (CVE-2023-27898 dan CVE-2023-27905) yang dapat menyebabkan eksekusi kode pada sistem yang ditargetkan.
Source: https://thehackernews.com/2024/01/critical-jenkins-vulnerability-exposes.html