flawopen.com/Teardowns/cve-2026-31431-linux-algif-aead-copy-fail
CVE-2026-31431: celah Copy Fail pada kernel Linux
Copy Fail adalah celah eskalasi hak lokal pada jalur AEAD Linux AF_ALG. Optimasi in-place mencampuradukkan pemetaan sumber dan tujuan; perbaikan upstream memulihkan pemrosesan out-of-place, dan CISA memasukkan CVE ini ke KEV.[1], [2], [5]
Bayangkan pustakawan yang harus menandai salinan, tetapi jalan pintas mesin fotokopi membuat pensil menyentuh buku asli. Jalan pintas in-place memungkinkan penulisan untuk hasil mencapai halaman lain yang dipetakan. Perbaikan memproses sumber dan tujuan secara terpisah.[3], [8]
Konsep Kunci & Istilah
AEAD- Authenticated Encryption with Associated Data: mengenkripsi data dan mengautentikasi metadata tambahan yang tidak dienkripsi.[8]
algif_aead- Implementasi AF_ALG untuk AEAD, termasuk jalur sumber dan tujuan yang rentan.[3]
Page cache- Cache kernel dalam memori untuk konten berkas; penulisan halaman dapat memengaruhi pembacaan sebelum ditulis ke disk.[8]
CWE-1288 / CWE-669- NVD mencantumkan
CWE-1288denganredhat-SADPsebagai sumber pemetaan; halaman Red Hat juga mencantumkan CWE tersebut. Peringatan Canadian Centre for Cyber Security mengklasifikasikan masalah ini sebagaiCWE-669. Keduanya adalah klasifikasi dari sumber berbeda, bukan label yang dapat dipertukarkan.[11], [7], [5], [9], [10]
Pemetaan kerangka kerja
- Referensi CWE untuk kelemahan yang dijelaskan dalam panduan ini: CWE-669 CWE-1288
- CISA KEV — ditambahkan 2026-05-01 — CVE-2026-31431
Analisis Akar Masalah (Root Cause)
Perubahan 72548b093ee3 pada 2017 memperkenalkan optimasi in-place di algif_aead. Sumber dan tujuan dapat berasal dari pemetaan berbeda. authencesn dapat menulis data sementara di luar keluaran; scatterlist in-place dapat mengarah ke halaman page cache berkas yang diberikan melalui splice(). Pemberitahuan CVE Linux menjelaskan perbaikan sebagai kembali ke pemrosesan out-of-place sambil mempertahankan penyalinan associated data. Diperlukan akses lokal dan jalur rentan yang aktif. CVSS 7,8 (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H); bukan jalur masuk jarak jauh tanpa autentikasi.[1], [3], [8], [7], [9], [10]
Alur Serangan Langkah demi Langkah
Penulisan melewati keluaran
Data sementara authencesn dapat ditulis di luar keluaran dan mencapai halaman cache berkas melalui splice() .[8]
Kode Sumber: Rentan vs Aman
Ini ringkasan konseptual, bukan kode kernel verbatim atau patch yang dapat dikompilasi. Pemberitahuan upstream menyebut perbaikan sebagian besar membatalkan 72548b093ee3 sambil mempertahankan penyalinan associated data karena pemetaan berbeda.[3], [2]
Cuplikan sumber: crypto/algif_aead.c (_aead_recvmsg)
/* Sebelum perbaikan: susun operasi kriptografi secara in-place. */
rsgl_src = areq->first_rsgl.sgl.sg;
if (ctx->enc) {
memcpy_sglist(areq->first_rsgl.sgl.sg, tsgl_src, processed);
af_alg_pull_tsgl(sk, processed, NULL, 0);
} else {
memcpy_sglist(areq->first_rsgl.sgl.sg, tsgl_src, outlen);
/* Bangun dan rangkai scatterlist TX untuk tag autentikasi. */
areq->tsgl_entries = af_alg_count_tsgl(sk, processed, processed - as);
/* ... */
}
aead_request_set_crypt(&areq->cra_u.aead_req, rsgl_src,
areq->first_rsgl.sgl.sg, used, ctx->iv);
/* Setelah perbaikan: pertahankan scatterlist sumber untuk setiap permintaan. */
processed = used + ctx->aead_assoclen;
areq->tsgl_entries = af_alg_count_tsgl(sk, processed);
/* Alokasikan dan inisialisasi areq->tsgl, lalu masukkan halaman TX ke dalamnya. */
af_alg_pull_tsgl(sk, processed, areq->tsgl);
tsgl_src = areq->tsgl;
/* Salin data terkait, tetapi pisahkan sumber dan tujuan. */
rsgl_src = areq->first_rsgl.sgl.sg;
memcpy_sglist(rsgl_src, tsgl_src, ctx->aead_assoclen);
aead_request_set_crypt(&areq->cra_u.aead_req, tsgl_src,
areq->first_rsgl.sgl.sg, used, ctx->iv);
Daftar Periksa Penguatan Sistem Rekayasa
- ✓Perbarui kernel melalui kanal dukungan distribusi dan pastikan advisory paket mengonfirmasi
CVE-2026-31431telah diperbaiki; jangan hanya mengandalkan versi upstream umum.[1], [5], [7] - ✓Prioritaskan host dengan kernel bersama dan pengguna lokal tak tepercaya: host multi-tenant, pekerja build, dan node kontainer.[5], [7]
- ✓Jika pembaruan segera tidak memungkinkan, gunakan hanya mitigasi vendor OS dan validasi dampaknya; kode dapat dibangun ke dalam kernel.[5], [7]
- ✓Tinjau inventaris kernel dan sumber paket di seluruh image, termasuk image immutable dan cabang LTS dengan backport.[5], [7]
- ✓Kontainer berbagi kernel host; eskalasi lokal dapat melemahkan isolasi namespace.[5], [8]
- ✓Setelah patch, pantau backport vendor dan lacak host belum diperbaiki sebagai tugas remediasi; entri KEV bukan pengganti patch.[1], [5]
Sumber
- Linux kernel CVE notice for CVE-2026-31431
- Upstream stable patch: revert algif_aead to out-of-place operation
- Stable patch source with the algif_aead.c code diff
- CVE record and CVSS vector
- Canadian Centre for Cyber Security alert AL26-009
- CISA Known Exploited Vulnerabilities catalog entry
- Red Hat CVE analysis and affected product status
- Xint technical disclosure: Copy Fail — 732 Bytes to Root on Linux
- MITRE CWE-1288: Improper Validation of Consistency within Input
- MITRE CWE-669: Incorrect Resource Transfer Between Spheres
- NVD — CVE-2026-31431 weakness mapping (source: redhat-SADP)