CVE-2026-19735 in Zephyrthông tin

Tóm tắt

Bởi VulDB • 11/10/2026

Phần triển khai số hiệu trình tự ban đầu (initial-sequence-number) theo RFC 6528 trong `subsys/net/ip/tcp.c` tạo ra mọi ISN TCP dựa trên SHA-256(unique_key || bốn-tuple) cộng với một độ lệch bắt nguồn từ thời gian hoạt động của hệ thống, trong đó unique_key là một bí mật 128-bit được điền duy nhất bởi hàm sys_csrand_get(). Giá trị trả về của lệnh gọi này bị bỏ qua và cờ "chỉ thực hiện một lần" (once guard) được khóa ở trạng thái true ngay cả khi lệnh gọi thất bại. Vì sys_csrand_get() để nguyên vùng đệm đích không thay đổi khi gặp lỗi (hàm cố ý truyền lại lỗi từ trình điều khiển entropy thay vì điền dữ liệu vào bộ đệm), nên một lần gọi thất bại duy nhất khiến unique_key giữ nguyên nội dung BSS toàn số 0 cho phần còn lại của quá trình khởi động, mà không có nỗ lực thử lại, không ghi log và cũng không có cơ chế dự phòng.

Việc nguồn ngẫu nhiên mật mã gặp sự cố là điều kiện cần để đạt đến trạng thái yếu — ví dụ: lỗi -ENODEV/-EIO từ trình điều khiển entropy trong `subsys/random/random_entropy_device.c` (ghi chú trong cây thư mục lưu ý rằng bộ tạo số ngẫu nhiên phần cứng "có thể vẫn đang thu thập entropy trong các tình huống khởi động sớm"), hoặc hàm psa_generate_random() thất bại trong `subsys/random/random_psa.c` khi mật mã PSA chưa được khởi tạo hoặc được hỗ trợ bởi thiết bị entropy Bluetooth-HCI chưa sẵn sàng. Kết nối TCP đầu tiên là yếu tố kích hoạt việc sinh khóa, do đó một máy chủ từ xa truy cập vào cổng đang lắng nghe ngay sau khi khởi động, hoặc có khả năng gây ra khởi động lại hệ thống, sẽ có ảnh hưởng gián tiếp đến việc liệu quá trình sinh khóa có trùng với cửa sổ thời gian này hay không. Hàm tcp_init_isn() được gọi cho mỗi lần mở thụ động trong tcp_conn_new() và mỗi lần mở chủ động trong net_tcp_connect(), do đó khóa bị nhiễm độc chi phối tất cả các kết nối TCP trong phiên khởi động đó.

Với một khóa toàn số 0, ISN trở thành một hàm công khai của bốn-tuple kết hợp cộng với độ lệch thời gian trên toàn thiết bị. Một kẻ tấn công ngoài đường truyền (off-path attacker) có thể tính toán trước thuật ngữ băm cho bất kỳ bốn-tuple nào và khôi phục độ lệch thời gian chung từ một ISN quan sát được duy nhất, sau đó ISN mà thiết bị sẽ chọn cho các bốn-tuple khác trở nên dễ dự đoán. Điều này phá vỡ chính xác sự bảo vệ do RFC 6528 cung cấp: giả mạo kết nối TCP mù (blind) đối với các máy chủ tin tưởng vào địa chỉ nguồn, và tiêm dữ liệu hoặc đặt lại kết nối một cách mù quáng vào những kết nối mà bốn-tuple của chúng có thể bị đoán được. Các thiết bị có nguồn entropy không bao giờ gặp lỗi chưa từng ở trạng thái yếu.

Bản sửa đổi di chuyển việc sinh khóa vào một hàm trợ giúp duy nhất được bảo vệ, chỉ khóa (latch) khi thành công; nếu thất bại thì ghi log lỗi và khiến tcp_init_isn() dự phòng bằng sys_rand32_get() — hành vi vốn đã được sử dụng khi CONFIG_NET_TCP_ISN_RFC6528 bị vô hiệu hóa — thay vì băm với một khóa hằng số đã biết.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

chịu trách nhiệm

Zephyr

Đặt trước

13/08/2026

Tiết lộ

11/10/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

thấp

Nguồn

Do you need the next level of professionalism?

Upgrade your account now!