Hati-hati, JDK 15 Bisa Dibobol karena Enkripsi Lemah
Matematika yang dibundel dalam masalah kode menciptakan jebakan keamanan Sebuah kerentanan bencana dalam implementasi operasi enkripsi tertentu di Java JDK memudahkan penyerang untuk memalsukan kredensial palsu.
Kelemahan kriptografi – yang memengaruhi Java JDK versi 15 dan yang lebih baru – telah diatasi oleh Oracle dengan pembaruan dirilis sebagai bagian dari batch patch triwulanan reguler pada hari Selasa (19 April).
Oracle Java dan OpenJDK perlu diperbarui karena kekurangan yang melibatkan implementasi tanda tangan ECDSA (Elliptic Curve Digital Signature Algorithm) yang banyak digunakan.
Seluruh masalah berasal dari kesalahan pengkodean daripada masalah dengan teknologi enkripsi yang mendasarinya.
Jika tidak ditangani, kelemahan tersebut memungkinkan penyerang untuk memalsukan beberapa jenis sertifikat SSL dan jabat tangan – membuka pintu bagi manipulator di tengah serangan.
JWT yang ditandatangani, pernyataan SAML, WebAuthn pesan otentikasi, dan banyak lagi semuanya dapat dengan mudah diretas karena tentang kesalahan kriptografi, peneliti keamanan Neil Madden memperingatkan.
“Sulit untuk melebih-lebihkan tingkat keparahan bug ini,” Wadden, seorang arsitek keamanan di ForgeRock, menjelaskan dalam posting blog teknis tentang masalah tersebut.
“Jika Anda menggunakan tanda tangan ECDSA untuk mekanisme keamanan ini, penyerang dapat dengan mudah dan sepenuhnya melewatinya jika server Anda menjalankan versi Java 15, 16, 17, atau 18 sebelum Pembaruan Patch Kritis (CPU) April 2022.”
Psychic paper
Java telah mendukung ECDSA, standar yang banyak digunakan untuk menandatangani semua jenis dokumen digital, selama beberapa tahun. Kesalahan terjadi dengan penulisan ulang kode EC dari kode C++ asli ke Java sebagai bagian dari rilis Java 15, seperti yang dijelaskan Wadden. Implementasi
Java untuk verifikasi tanda tangan ECDSA tidak memeriksa apakah r atau s [nilai yang terkait dengan tanda tangan ECDSA] adalah nol, sehingga Anda dapat menghasilkan nilai tanda tangan di mana keduanya adalah 0 (dikodekan dengan tepat) dan Java akan menerimanya sebagai tanda tangan yang valid untuk pesan apa pun dan untuk kunci publik apa pun. Setara digital dari kartu ID kosong.
Wadden membandingkan konsep kartu ID kosong ini dengan kertas psikis dalam seri sci-fi Doctor Who, yang digunakan oleh karakter tituler untuk menipu orang agar mau bekerja sama.
Pengungkapan lengkap
Wadden dan rekan-rekannya di identitas dan perusahaan manajemen akses ForgeRock menemukan kelemahan tersebut November lalu, di mana mereka melaporkannya ke Oracle dan pengembang Java lainnya. Proses pengungkapan selanjutnya kurang dari ideal.
“Saya kecewa dengan proses pengungkapan,” kata Wadden kepada The Daily Swig. “Saya melapor ke alias OpenJDK dan kemudian berakhir di lubang hitam Oracle.”
“Agar adil, mereka merespons email dengan cukup cepat, tetapi selalu dengan respons minimal dan saya tidak diberi detail apa pun tentang perbaikan sampai mendarat di repo backport OpenJDK GitHub.”
Skor yang bertentangan
Dalam catatan rilisnya, Oracle menilai kerentanan dengan skor CVSS hanya 7,5. ForgeRock, sebaliknya, menilai skor kerentanan sebagai 10.
Menurut Wadden, industri menghindari peluru. “Saya terkejut itu [tidak] ditemukan dan dieksploitasi, tapi mungkin itu mengatakan lebih banyak tentang bagaimana Java 8 masih mengakar!”
“Kebanyakan orang menganggap skema tanda tangan kunci publik sebagai super-aman, tetapi dalam kenyataannya, jenis ini bug implementasi tidak jarang.
“Bagi saya, salah satu aspek yang paling mengganggu dari melihat ini adalah menyadari bagaimana ekosistem WebAuthn/FIDO [Fast Identity Online – teknologi otentikasi] pada dasarnya adalah monokultur di sekitar tanda tangan ECDSA P-256 di titik ini,” Wadden menyimpulkan.
Penilaian keseriusan bug tersebut didukung oleh tokoh industri Thomas H Ptacek yang menggambarkannya di Twitter sebagai “bug crypto tahun ini”.
JANGAN LEWATKAN Kerentanan keamanan Git meminta pembaruan
Referensi PortSwigger.com