Docker Engine 29.9.3 dirilis 3 November 2026 pukul 22:37 UTC dengan empat CVE yang ditutup di inti Engine dan SwarmKit, ditambah pembaruan BuildKit ke 0.34.2. Rilis ini adalah patch keamanan ketiga dalam tiga minggu: 29.9.1 keluar 14 Oktober 2026, 29.9.2 keluar 20 Oktober 2026, dan 29.9.3 menutup rangkaian tersebut. Semua nomor CVE dan tautan di bawah diambil dari catatan rilis resmi di repositori moby/moby, bukan dari ringkasan pihak ketiga.
TL;DR
- Docker Engine 29.9.3 terbit 3 November 2026 dan menutup empat CVE: 2026-116587, 2026-116591, 2026-115538, serta 2026-115539 di SwarmKit.
- CVE-2026-115538 menyangkut hilangnya proteksi enkripsi dan anti-spoofing pada overlay network Swarm setelah firewalld membersihkan aturan iptables Docker.
- BuildKit naik ke 0.34.2 untuk menambal crash daemon lewat resolver cache poisoning pada build yang membaca referensi Git yang sama dua kali.
- Dua rilis sebelumnya membawa isu berbeda: 29.9.1 memperbarui containerd ke v2.4.2, 29.9.2 memblokir delapan intermediate eMudhra yang kuncinya dikompromikan.
- Arti praktisnya: host yang menjalankan Swarm atau firewalld perlu diprioritaskan, sementara host dengan pembangunan image rutin perlu memeriksa versi BuildKit.
Yang membuat rilis ini menarik bukan jumlah CVE-nya, melainkan kombinasi subsistem yang tersentuh. Satu isu ada di parsing kunci RSA, satu di dekompresi data, satu di jaringan overlay Swarm, dan satu di penerbitan sertifikat antar node. Empat area berbeda dalam satu patch biasanya menandakan bahwa temuan datang dari beberapa jalur audit sekaligus, bukan dari satu laporan tunggal.
CVE apa saja yang ditutup Docker Engine 29.9.3?
Ada empat CVE di inti rilis ini. CVE-2026-116587 memperbaiki kemungkinan pemakaian CPU berlebihan saat memproses kunci RSA yang dibuat khusus, CVE-2026-116591 memperbaiki kemungkinan panic saat mendekompresi data zstd, CVE-2026-115538 memperbaiki hilangnya proteksi enkripsi dan anti-spoofing overlay Swarm, dan CVE-2026-115539 memperbaiki celah di SwarmKit yang memungkinkan pemegang sertifikat worker yang sah memperoleh sertifikat manager.
Dua CVE pertama bersifat lokal: dampaknya terbatas pada proses yang memproses masukan berbahaya, dan gejalanya berupa beban CPU naik atau daemon berhenti. Dua CVE terakhir lebih serius karena menyangkut isolasi jaringan dan otorisasi antar node. Pada CVE-2026-115538, pemicunya adalah firewalld yang membersihkan aturan iptables milik Docker. Setelah aturan itu hilang, proteksi enkripsi dan anti-spoofing pada overlay network tidak lagi berjalan sebagaimana mestinya.
Kombinasi firewalld dan Docker memang dikenal rawan konflik karena keduanya mengelola aturan iptables. Catatan rilis menyebut skenario ini secara eksplisit, dan itu penting: host yang memakai firewalld bersama Swarm adalah kandidat pertama untuk di-upgrade, bukan karena konfigurasinya salah, tetapi karena interaksi dua pengelola aturan itu sendiri yang menjadi pemicu.
CVE-2026-115539 berada di SwarmKit. Celahnya memungkinkan penyerang yang sudah memegang sertifikat dan kunci privat worker yang sah untuk mendapatkan sertifikat manager sesaat setelah pergantian leader di cluster Swarm. Ini bukan celah untuk penyerang tanpa akses, tetapi tetap berbahaya karena memindahkan batas kepercayaan dari worker ke manager, dan manager memegang kendali seluruh cluster.
Konteks pergantian leader itulah yang membuat celah ini layak diperhatikan. Pergantian leader pada cluster Swarm bukan peristiwa yang jarang: ia terjadi saat node manager berhenti, saat pemeliharaan dilakukan, atau saat cluster tumbuh. Jendela waktunya singkat, tetapi celah yang hanya terbuka pada jendela singkat tetap bisa dieksploitasi jika penyerang sudah berada di dalam jaringan dan bisa menunggu. Karena itu, cluster yang memiliki node worker dari pihak lain, misalnya tim berbeda atau mitra, berada pada risiko yang lebih tinggi dibanding cluster yang seluruh node-nya dikelola satu tim.
Pada implementasinya, perbaikan dirilis lewat pembaruan SwarmKit yang dipaketkan bersama rilis Engine. Artinya, menaikkan versi Engine ke 29.9.3 sudah mencakup perbaikan ini, tanpa langkah tambahan yang terpisah. Yang perlu diperiksa justru kebiasaan operasional: apakah semua node manager benar-benar ikut di-upgrade, karena satu manager yang tertinggal pada versi lama bisa membuat perbaikan pada siklus pergantian leader tidak berlaku sepenuhnya.
Apa yang berubah pada BuildKit dan containerd?
BuildKit diperbarui ke 0.34.2 dan menambal dua advisory, salah satunya GHSA-2fqp-xg6f-v7gj yang menyangkut crash daemon akibat resolver cache poisoning. Pemicunya spesifik: sebuah build yang membaca metadata untuk referensi sumber Git yang sama dua kali dapat membuat daemon berhenti.
Masalah pada resolver cache ini menarik karena sumbernya bukan masukan dari luar, melainkan urutan operasi di dalam build itu sendiri. Build yang membaca referensi Git yang sama dua kali bukan pola langka, terutama pada pipeline yang memakai monorepo atau yang melakukan beberapa tahap build dari repositori yang sama. Karena itu, memperbarui BuildKit relevan bagi tim yang membangun image secara rutin, bukan hanya bagi yang menjalankan Swarm.
Pada rilis 29.9.1 sebelumnya, containerd diperbarui ke v2.4.2 untuk menutup CVE-2026-95839 dan dua advisory lain. Satu di antaranya menyangkut kemungkinan containerd berhenti ketika menarik atau mengimpor image lewat transfer service jika descriptor anak memuat anotasi tertentu dengan digest yang cacat. Advisory lain menyangkut header Content-Length yang dibuat khusus dan dapat membuat containerd berhenti ketika pengambilan layer paralel diaktifkan. Yang ketiga menyangkut habisnya ruang disk host karena containerd tidak membatasi data layer sesuai ukuran yang dideklarasikan sebelum validasi.
Isu disk itu yang paling mudah diremehkan. Registry jahat atau image yang dimodifikasi bisa membuat host kehabisan ruang penyimpanan, dan pada host yang menjalankan banyak container, ruang habis berarti semua layanan di atasnya ikut berhenti. Pembaruan containerd bukan sekadar soal kestabilan daemon, tetapi soal menjaga host tetap bisa menulis ke disk.
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬