Oracle to Java devs: Berhenti menandatangani fail JAR dengan MD5

Mulai bulan April, Oracle akan memperlakukan fail JAR yang ditandatangani dengan algoritma hash MD5 seolah-olah mereka tidak ditandatangani, yang bermaksud pelepasan moden Java Runtime Environment (JRE) akan menyekat fail JAR tersebut tidak dapat dijalankan. Pergeseran ini sudah lama berlaku, kerana kelemahan keselamatan MD5 terkenal, dan algoritma yang lebih selamat harus digunakan untuk menandatangani kod.

"Bermula dengan siaran Pembaruan Patch Kritikal April, yang direncanakan untuk 18 April 2017, semua versi JRE akan menganggap JAR yang ditandatangani dengan MD5 sebagai tidak ditandatangani," tulis Oracle di halaman muat turun Java-nya.

Fail JAR yang menandatangani kod yang digabungkan dengan perpustakaan dan applet Java adalah praktik keselamatan asas kerana ini membolehkan pengguna mengetahui siapa yang sebenarnya menulis kod tersebut, dan ia tidak diubah atau rosak sejak ia ditulis. Dalam beberapa tahun terakhir, Oracle telah meningkatkan model keamanan Java untuk melindungi sistem dari eksploitasi luaran dengan lebih baik dan hanya membenarkan kod yang ditandatangani untuk menjalankan jenis operasi tertentu. Permohonan tanpa sijil yang berpotensi tidak selamat.

Versi Java yang lebih baru kini memerlukan semua fail JAR ditandatangani dengan kunci penandatanganan kod yang sah, dan bermula dengan Kemas kini Java 7, 51, aplikasi yang tidak ditandatangani atau ditandatangani sendiri disekat untuk berjalan.

Penandatanganan kod adalah bahagian penting dalam seni bina keselamatan Java, tetapi hash MD5 melemahkan penandaan kod perlindungan yang seharusnya diberikan. Sejak tahun 1992, MD5 digunakan untuk hashing sehala: mengambil input dan menghasilkan representasi kriptografi yang unik yang dapat dianggap sebagai tanda tangan pengenal. Tidak ada dua input yang harus menghasilkan hash yang sama, tetapi sejak tahun 2005, penyelidik keselamatan telah berulang kali menunjukkan bahawa fail tersebut dapat diubah dan masih memiliki hash yang sama dalam serangan perlanggaran. Walaupun MD5 tidak lagi digunakan untuk TLS / SSL — Microsoft tidak lagi menggunakan MD5 untuk TLS pada tahun 2014 — ia tetap berlaku di kawasan keselamatan lain walaupun terdapat kelemahan.

Dengan perubahan Oracle, "fail JAR yang ditandatangani MD-5 yang terjejas tidak lagi dianggap tepercaya [oleh JRE Oracle] dan tidak dapat dijalankan secara lalai, seperti dalam hal applet Java, atau aplikasi Java Web Start," Erik Costlow, pengurus produk Oracle dengan Java Platform Group, menulis kembali pada bulan Oktober.

Pembangun perlu mengesahkan bahawa fail JAR mereka belum ditandatangani menggunakan MD5, dan jika ada, tandatangan semula fail yang terjejas dengan algoritma yang lebih moden. Pentadbir perlu menghubungi vendor untuk memastikan fail tidak ditandatangani MD5. Sekiranya fail masih menjalankan MD5 pada saat peralihan, pengguna akan melihat mesej ralat yang tidak dapat diteruskan oleh aplikasi. Oracle telah memberitahu vendor dan pemegang lesen sumber mengenai perubahan tersebut, kata Costlow.

Sekiranya vendor tidak berfungsi atau tidak mahu menandatangani semula aplikasi, pentadbir dapat menonaktifkan proses yang memeriksa aplikasi yang ditandatangani (yang mempunyai implikasi keamanan yang serius), mengatur Set Peraturan Penerapan khusus untuk lokasi aplikasi, atau mempertahankan Situs Pengecualian Senaraikan, Costlow menulis.

Terdapat banyak amaran. Oracle berhenti menggunakan MD5 dengan algoritma RSA sebagai pilihan menandatangani JAR lalai dengan Java SE6, yang dikeluarkan pada tahun 2006. Penghentian MD5 pada awalnya diumumkan sebagai sebahagian daripada Pembaruan Patch Kritikal Oktober 2016 dan dijadualkan berkuat kuasa bulan ini sebagai sebahagian daripada CPU Januari. Untuk memastikan pembangun dan pentadbir bersedia untuk pergeseran, perusahaan telah memutuskan untuk menunda peralihan ke Pembaruan Patch Kritikal April, dengan Oracle Java SE 8u131 dan rilis yang sesuai dari Oracle Java SE 7, Oracle Java SE 6, dan Oracle JRockit R28.

"Majlis Keselamatan CA memuji Oracle atas keputusannya untuk menganggap MD5 sebagai tidak ditandatangani. MD5 sudah tidak digunakan lagi selama bertahun-tahun, membuat langkah menjauh dari MD5 merupakan peningkatan kritikal bagi pengguna Java, ”kata Jeremy Rowley, naib presiden eksekutif pasar baru di Digicert dan anggota Majlis Keselamatan CA.

Menghentikan MD5 sudah lama datang, tetapi tidak mencukupi. Oracle juga harus melihat penggunaan SHA-1, yang mempunyai masalahnya sendiri, dan menggunakan SHA-2 untuk menandatangani kod. Tindakan itu sesuai dengan migrasi semasa, kerana penyemak imbas utama telah berjanji untuk berhenti menyokong laman web menggunakan sijil SHA-1. Dengan sebilangan besar organisasi yang sudah terlibat dengan migrasi SHA-1 untuk TLS / SSL, masuk akal bagi mereka untuk mengalihkan sisa sijil dan infrastruktur penandatanganan kunci mereka ke SHA-2.

Berita baiknya adalah bahawa Oracle merancang untuk mematikan SHA-1 dalam rantai sijil yang berlabuh oleh akar yang dimasukkan secara lalai dalam JDK Oracle pada masa yang sama MD5 tidak lagi digunakan, menurut JRE dan JDK Crypto Roadmap, yang menggariskan arahan teknikal dan maklumat mengenai kriptografi yang sedang berjalan bekerja untuk Oracle JRE dan Oracle JDK. Panjang kunci minimum untuk Diffie-Hellman juga akan ditingkatkan menjadi 1,024 bit kemudian pada tahun 2017.

Peta jalan juga mendakwa Oracle baru-baru ini menambah sokongan untuk algoritma tandatangan SHA224denganDSA dan SHA256denganDSA ke Java 7, dan melumpuhkan Elliptic Curve (EC) untuk kunci kurang dari 256 bit untuk SSL / TLS untuk Java 6, 7, dan 8.