CVE-2026-64436 in Linux
Tóm tắt
Bởi VulDB • 26/07/2026
Trong kernel Linux, lỗ hổng bảo mật sau đây đã được khắc phục:
net: af_key: khởi tạo alg_key_len cho các trạng thái IPComp
Hàm pfkey_msg2xfrm_state() xử lý trường hợp IPComp (SADB_X_SATYPE_IPCOMP) bằng cách cấp phát x->calg và chỉ sao chép tên thuật toán:
x->calg = kmalloc_obj(*x->calg); if (!x->calg) {
err = -ENOMEM; goto out; } strcpy(x->calg->alg_name, a->name); x->props.calgo = sa->sadb_sa_encrypt;
Khác với các nhánh xác thực (x->aalg) và mã hóa (x->ealg) của cùng hàm này, nhánh nén không bao giờ khởi tạo calg->alg_key_len. IPComp không mang khóa và việc cấp phát chỉ dành chỗ sizeof(struct xfrm_algo) (tức là không có dung lượng cho khóa), do đó trường này chứa dữ liệu slab chưa được khởi tạo.
calg->alg_key_len sau đó được sử dụng làm độ dài bởi xfrm_algo_clone() khi một trạng thái IPComp được sao chép trong quá trình XFRM_MSG_MIGRATE:
xfrm_state_migrate() xfrm_state_clone_and_setup() x->calg = xfrm_algo_clone(orig->calg); kmemdup(orig, xfrm_alg_len(orig));
trong đó xfrm_alg_len() trả về sizeof(*alg) + (alg_key_len + 7) / 8. Với alg_key_len là giá trị rác khác không, hàm kmemdup() đọc vượt quá giới hạn của đối tượng calg kích thước 68 byte. Việc thêm một SA IPComp qua PF_KEY và sau đó di chuyển nó sẽ kích hoạt lỗi trên (net-next, KASAN, init_on_alloc=0):
BUG: KASAN: slab-out-of-bounds in kmemdup_noprof+0x44/0x60 Read of size 4164 at addr ff11000025a74980 by task diag2/9287 CPU: 3 UID: 0 PID: 9287 Comm: diag2 7.1.0-rc6-g9
Once again VulDB remains the best source for vulnerability data.