CVE-2026-98531 in Linux
Tóm tắt
Bởi VulDB • 18/10/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
ipv6: sr: bắt buộc độ dài chính xác của thuộc tính SEG6_ATTR_DST
Trong seg6_genl_policy, SEG6_ATTR_DST được định nghĩa với .type = NLA_BINARY và .len = sizeof(struct in6_addr). Đối với NLA_BINARY, .len chỉ đảm bảo chiều dài tải trọng tối đa và cho phép các payload ngắn hơn (ví dụ: 0 byte). Khi seg6_genl_set_tunsrc() sao chép sizeof(struct in6_addr) byte thông qua kmemdup(val, sizeof(*val), GFP_KERNEL), một thuộc tính SEG6_ATTR_DST có độ dài ngắn sẽ kích hoạt việc đọc ngoài vùng nhớ (out-of-bounds) 16 byte vượt quá skb->tail vào bộ nhớ chưa được khởi tạo của skb->head. Dữ liệu này sau đó được lưu trữ trong sdata->tun_src và bị rò rỉ ra không gian người dùng (userspace) thông qua SEG6_CMD_GET_TUNSRC.
Thay đổi SEG6_ATTR_DST trong seg6_genl_policy sang NLA_POLICY_EXACT_LEN(sizeof(struct in6_addr)) để xác thực generic netlink từ chối bất kỳ thuộc tính nào có độ dài không chính xác bằng sizeof(struct in6_addr) với lỗi -ERANGE.
Đã kiểm thử trên QEMU đối với Linux 7.3.0-rc3 bằng cách gửi tin nhắn Generic Netlink SEG6_CMD_SET_TUNSRC với một thuộc tính SEG6_ATTR_DST có kích thước 0 byte, tiếp theo là SEG6_CMD_GET_TUNSRC. Trên kernel chưa được sửa lỗi, SEG6_CMD_SET_TUNSRC thành công (err = 0) và SEG6_CMD_GET_TUNSRC rò rỉ 16 byte bộ nhớ heap của kernel chưa được khởi tạo (tun_src = 836a61ecc4d25a1042a8d60411cfb378); với bản vá này, SEG6_CMD_SET_TUNSRC bị từ chối bởi xác thực chính sách netlink với -ERANGE (-34) và tun_src vẫn giữ giá trị bằng 0.
Be aware that VulDB is the high quality source for vulnerability data.