Kerentanan perangkat lunak server ditemukan hampir setiap minggu, dan pembaruan paket adalah cara resmi untuk menutupnya. Topik ini membahas disiplin pembaruan, yaitu mengaktifkan unattended-upgrades agar paket keamanan terpasang tanpa menunggu tindakan manual, serta membaca informasi CVE untuk menilai seberapa mendesak sebuah pembaruan. Setelah membacanya, pembaruan keamanan berjalan sendiri pada server, dan laporan kerentanan dapat dibaca dengan benar.
Kerentanan dan CVE#
CVE (Common Vulnerabilities and Exposures) adalah sistem penomoran kerentanan yang dikelola oleh MITRE: setiap kerentanan yang diakui publik menerima satu ID berformat CVE-tahun-nomor, misalnya CVE-2024-6387. Siklus penanganannya hampir selalu berjalan dalam urutan yang sama. Kerentanan dilaporkan kepada pengembangnya, lalu ID-nya diterbitkan. Setelah itu, catatan teknis yang memuat deskripsi, versi yang terdampak, dan skor CVSS dipublikasikan pada basis data NVD (National Vulnerability Database). Pengembang kemudian menerbitkan versi perbaikan, dan administrator menerapkannya melalui manajer paket.
Contoh yang relevan dengan jalur ini adalah CVE-2024-6387. Kerentanan tersebut berupa kondisi balapan (race condition) pada penanganan sinyal di sshd OpenSSH dan berlaku untuk versi 8.5p1 sampai 9.7p1. Kerentanan ini berpotensi memungkinkan eksekusi kode dengan hak root oleh penyerang jarak jauh yang belum terautentikasi. Perbaikannya diterbitkan pada OpenSSH 9.8p1 pada Juli 2024, sedangkan NVD memberi skor CVSS 8,1 pada kategori tinggi. Bagi distribusi berbasis Debian dan Ubuntu, perbaikan tersebut tiba sebagai versi baru paket openssh-server pada repositori keamanan, dan mesin yang menjalankan pembaruan otomatis menutup celahnya tanpa menunggu.
Empat bagian pada catatan CVE sudah cukup untuk menilai sebuah laporan. Deskripsi menjelaskan jenis kelemahannya secara singkat, daftar versi menyatakan rentang paket yang terdampak, skor CVSS memeringkat keparahannya, dan tautan referensi mengarah ke pengumuman resmi pengembangnya. Untuk contoh CVE-2024-6387, keempat bagian itu langsung menjawab pertanyaan administrator: apakah versi OpenSSH yang terpasang termasuk yang terdampak, dan apakah versi perbaikannya sudah tersedia pada repositori keamanan. Catatan lengkapnya dapat diakses pada alamat https://nvd.nist.gov/vuln/detail/CVE-2024-6387.
Melihat paket yang tertunda#
Daftar pembaruan yang tertunda dapat dilihat kapan saja dari mesin dengan indeks paket yang sudah diperbarui. Perintah berikut dicoba pada sandbox latihan ini.
# paket yang belum diperbarui menurut daftar repositori
apt list --upgradable 2>/dev/null | head -n 5Listing...
base-files/stable 13.8+deb13u7 amd64 [upgradable from: 13.8+deb13u4]
bash/stable 5.2.37-2+b10 amd64 [upgradable from: 5.2.37-2+b8]
gzip/stable 1.13-1+deb13u1 amd64 [upgradable from: 1.13-1]
libaudit-common/stable 1:4.0.2-2+deb13u1 all [upgradable from: 1:4.0.2-2]Setiap baris memuat nama paket, repositori sumbernya, versi baru yang tersedia, dan versi yang sedang terpasang di dalam tanda kurung siku. Akhiran versi seperti deb13u7 menandakan paket revisi untuk Debian 13, dan bentuk semacam ini khas pada paket yang sudah melewati beberapa perbaikan keamanan. Daftar ini hanya seakurat indeks paket yang tersimpan di mesin. Indeks tersebut disegarkan oleh apt update, yang memerlukan hak root, sehingga pembaruan indeks selalu mendahului pembacaan daftar pada server sungguhan. Panjang daftarnya wajar, karena pemaket terus menerbitkan revisi dan server yang aktif menerima belasan pembaruan dalam sebulan.
Menunggu seseorang membaca daftar ini setiap hari bukanlah strategi yang andal, sehingga otomatisasi dibutuhkan. Sebelum otomatisasi disetel, daftar ini juga berguna sebagai alat pembanding: jumlah barisnya sebelum dan sesudah penerapan pembaruan otomatis menunjukkan bahwa mekanismenya benar-benar bekerja. Pemeriksaan berkala tetap dipertahankan meskipun pembaruan telah otomatis, karena daftar yang diam selama berhari-hari pada server yang aktif justru menjadi tanda bahwa sesuatu tidak berjalan. Satu kali pemeriksaan per minggu sudah memadai untuk pemantauan semacam ini.
Unattended-upgrades#
Paket unattended-upgrades menjalankan pembaruan secara terjadwal atas dasar konfigurasi APT miliknya. Pada Ubuntu dan Debian mutakhir, penjadwalnya berupa dua timer systemd. Timer apt-daily.timer memperbarui indeks, sedangkan apt-daily-upgrade.timer menerapkan pembaruan. Pemasangan tanpa systemd menjalankan hal yang sama melalui skrip cron milik paket apt. Keduanya membaca konfigurasi APT::Periodic dari /etc/apt/apt.conf.d/, dan keputusan intinya hanya dua baris pada berkas 20auto-upgrades.
Berkas tersebut tidak ada pada sandbox latihan ini, sehingga isinya disajikan sebagai berkas contoh. Pada server sungguhan, namanya 20auto-upgrades tanpa akhiran tambahan.
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";Nilai "1" berarti tugas dijalankan sekali sehari, sedangkan "0" menonaktifkannya. Baris pertama menyegarkan indeks paket agar daftar versi terbaru selalu tersedia, dan baris kedua memerintahkan penerapan pembaruan pada sumber yang diizinkan. Pemilihan sumbernya berada di berkas /etc/apt/apt.conf.d/50unattended-upgrades, dan pola bawaan yang penting dipahami adalah berikut ini.
Unattended-Upgrade::Origins-Pattern {
"origin=Debian,codename=${distro_codename},label=Debian-Security";
};Pola tersebut membatasi pembaruan otomatis pada arsip keamanan resmi distribusi, sehingga perbaikan untuk kerentanan seperti contoh CVE OpenSSH di atas terpasang sendiri. Pembaruan paket biasa tetap berada di tangan administrator. Apabila pembaruan penuh diinginkan, pola untuk arsip -updates ditambahkan pada daftar yang sama. Opsi konfigurasi lain juga tersedia, misalnya Unattended-Upgrade::Automatic-Reboot "false"; agar mesin tidak direstart secara diam-diam.
Pemasangan dan pemeriksaan timer pada server memerlukan hak root serta systemd, sehingga tidak dapat dieksekusi di sandbox.
# tidak-dijalankan
# instalasi paket memerlukan hak root dan jaringan penuh
sudo apt install unattended-upgrades
# memeriksa timer penjadwal pada sistem dengan systemd
systemctl list-timers apt-daily.timer apt-daily-upgrade.timerKesalahan umum#
Kesalahan berikut paling sering muncul saat menerapkan pembaruan otomatis.
- unattended-upgrades terpasang tetapi tidak pernah menerapkan apa pun. Berkas
20auto-upgradesmasih berisi"0", biasanya karena dialog saat instalasi dijawab dengan menolak. Perbaikannya adalah mengisi"1"pada kedua baris, lalu efeknya diuji tanpa menunggu jadwal melaluiunattended-upgrade --dry-run --debug. - Pola sumber tidak pernah cocok. Repositori keamanan tidak tercantum pada
/etc/apt/sources.list, sehingga polaDebian-Securitytidak menemukan paket apa pun. Daftar sumber beserta potongan pada/etc/apt/sources.list.d/perlu diperiksa terlebih dahulu. - Server dianggap aman karena sistemnya mutakhir. Aplikasi yang dipasang di luar repositori, misalnya binari yang diunduh sendiri, tidak tersentuh unattended-upgrades, sehingga pembaruan aplikasi tersebut dijadwalkan melalui mekanisme tersendiri.
- Mesin direstart karena pembaruan otomatis. Pembaruan kernel tidak mengganti kernel yang sedang berjalan, sehingga mesin tetap memakai kernel lama sampai direstart. Karena itu, jadwal restart yang terencana tetap diperlukan alih-alih restart yang datang tiba-tiba. Kebutuhan restart dapat dikenali dari berkas penanda
/var/run/reboot-requiredpada Ubuntu yang muncul setelah paket tertentu diperbarui.
Ringkasan#
- CVE memberi satu ID tetap untuk setiap kerentanan publik, dan catatannya memuat versi terdampak serta skor CVSS yang menilai keparahannya.
apt list --upgradablemenampilkan versi baru yang tersedia dibandingkan versi yang terpasang.- Berkas
20auto-upgradesdengan dua nilai"1"mengaktifkan pembaruan indeks dan penerapan pembaruan keamanan sekali sehari. - Pola
Origins-Patternpada50unattended-upgradesmembatasi pembaruan otomatis pada arsip keamanan resmi distribusi.
Referensi#
- UnattendedUpgrades — Debian Wiki
— penjelasan konfigurasi
APT::Periodic, berkas20auto-upgrades, dan50unattended-upgrades. - CVE-2024-6387 Detail — NVD — catatan resmi kerentanan kondisi balapan pada sshd OpenSSH beserta skornya.
- OpenSSH 9.8 release notes — OpenBSD — pengumuman resmi perbaikan kerentanan sshd yang terdampak pada versi 8.5p1 sampai 9.7p1.