Lỗ hổng TCP trong nhân Linux với điểm CVSS 9.8 ảnh hưởng đến Ubuntu, Red Hat và các bản phân phối khác

Tuấn Đặng Tuấn Đặng •

Ubuntu và RHEL vẫn chưa có bản vá cho lỗi sử dụng vùng nhớ đã giải phóng (use-after-free) trong TCP của Linux. Anthropic cho biết họ đã khai thác lỗi này để chạy các lệnh với quyền root trên các máy chủ MPTCP.

Linux Kernel TCP Flaw With 9.8 CVSS Score Affects Ubuntu, Red Hat and Other Distributions

 

Hôm 27/10, Anthropic cho biết mô hình trí tuệ nhân tạo của họ đã viết một đoạn mã khai thác (exploit) tận dụng lỗ hổng này. Mã này cho phép một kẻ tấn công từ xa không cần thông tin đăng nhập có thể chạy các câu lệnh với quyền root trên các máy chủ Linux đang bật tính năng lắng nghe TCP đa đường dẫn (multipath TCP).

Tính đến ngày 29/10, cả Ubuntu và RHEL vẫn chưa phát hành bản vá cho nhân hệ điều hành. Red Hat, Amazon, Oracle và SUSE chấm điểm lỗ hổng này trong khoảng từ 5,9 đến 8,1, thấp hơn mức 9,8 của đội ngũ phát triển nhân Linux.

Lỗ hổng này là một lỗi tranh chấp điều kiện (race condition) trong đoạn mã thiết lập các kết nối TCP IPv4 mới. Lỗi này có thể khiến nhân hệ điều hành đọc lại vùng nhớ đã được giải phóng trước đó, một loại lỗi được gọi là use-after-free.

Bản vá của nhân Linux ghi nhận nhà nghiên cứu Xinyang Ge thuộc Anthropic là người đã phát hiện và báo cáo lỗi. Cả hồ sơ CVE lẫn bản vá đều không đề cập đến TCP đa đường dẫn (MPTCP). Mối liên hệ giữa tính năng đó và lỗi này xuất phát từ bài viết của Anthropic.

MPTCP cho phép một kết nối sử dụng nhiều luồng mạng cùng lúc. Trên Linux, một ứng dụng phải yêu cầu MPTCP khi mở ổ cắm (socket). Kể từ phiên bản Go 1.24, các chương trình viết bằng ngôn ngữ Go sẽ mặc định thực hiện điều này cho các socket mà chúng lắng nghe, Nhóm bảo mật Go cho biết vào ngày 29/10.

Bài viết của Anthropic cho biết lỗ hổng này "đã được vá ở nhánh nguồn chính (upstream) và được đưa ngược (backport) lên tất cả các nhánh nhân ổn định đang được duy trì". Đối với người dùng các bản phân phối, bản vá đó chỉ có trong gói nhân của nhà cung cấp. Debian, Oracle Linux, SUSE và Amazon Linux đã phát hành các gói có bản vá, ít nhất là cho một số phiên bản nhân của họ, nhưng Ubuntu và RHEL thì chưa.

Các bản phân phối nào đã có bản vá

Bản phân phốiĐánh giá từ nhà cung cấpTrạng thái tính đến ngày 29/10Gói vá lỗi hoặc bản tin bảo mật
Ubuntu 22.04 LTS, 24.04 LTS, 26.04 LTS và 26.10Mức độ ưu tiên: CaoĐang tiến hànhChưa phát hành
Ubuntu 16.04, 18.04 và 20.04Mức độ ưu tiên: CaoDễ bị tổn thươngChưa phát hành
RHEL 8, 9 và 10, OpenShift 4Trung bình, 5,9 (Trang CVE)
Quan trọng, 8.1 ( tệp bản tin)
Đã bị ảnh hưởngChưa phát hành
RHEL 7Không áp dụngKhông bị ảnh hưởngKhông cần thiết
Amazon Linux 2023, gói kernel6.18Quan trọng, 7.0Đã vá ngày 24/10kernel6.18-6.18.56-125.164.amzn2023 (ALAS2023-2026-3251)
Amazon Linux 2023, gói kernel6.12Quan trọng, 7.0Đã vá ngày 29/10 trong bản tin của Amazon; trang CVE của Amazon vẫn ghi nhận là đang chờ xử lýkernel6.12-6.12.113-138.209.amzn2023 (ALAS2023-2026-3335)
Amazon Linux 2
Amazon Linux 2023, gói kernel
Quan trọng, 7.0Đang chờ bản váChưa phát hành
Oracle Linux 7, 8, 9 và 10, nhân UEKQuan trọng, 8.1Đã vá ngày 16/10ELSA-2026-500397, ELSA-2026-500398, ELSA-2026-500399
Debian trixie (ổn định)Không có điểm sốĐã vá ngày 16/10linux 6.12.113-1 (DSA-6568-1)
Debian 12 (bookworm)Không có điểm sốĐã vá ngày 17/10 và 22/10linux 6.1.190-1 (DLA-4841-1)
linux-6.12 6.12.113-1~deb12u1 (DLA-4850-1)
SUSE Linux Micro 6.2, openSUSE Leap 16.0Quan trọng, 8.1Đã vákernel-default 6.12.0-160000.40.1 hoặc mới hơn
SLES 15 SP4 đến SP6 LTSS, SLES 16.0, SLE Micro 5.3 đến 5.5Quan trọng, 8.1Đang thử nghiệmChưa phát hành
SLES 15 SP7Quan trọng, 8.1Đã ảnh hưởng, đang tiến hành váChưa phát hành

Ubuntu cũng liệt kê các nhân đám mây, FIPS và thời gian thực của họ là dễ bị tổn thương hoặc đang trong quá trình khắc phục. Hôm 29/10, Red Hat cho biết các bản vá của họ "hiện đã được hoãn lại cho một bản cập nhật trong tương lai". Đến ngày 30/10, họ đã liệt kê RHEL 8, 9, 10 và OpenShift 4 vào trạng thái Bị ảnh hưởng thay vì Hoãn bản vá. Cả Red Hat lẫn Ubuntu đều không đưa ra ngày phát hành cụ thể.

Lỗi hoạt động như thế nào

Tình trạng tranh chấp xảy ra trong quá trình bắt tay TCP (handshake). Khi một kết nối hoàn tất, nhân hệ điều hành bàn giao các tùy chọn IP được lưu trữ cùng yêu cầu đang chờ cho socket mới mà không tiến hành sao chép chúng.

Nếu socket đó bị hủy trong khi một CPU khác vẫn đang sử dụng các tùy chọn để trả lời một yêu cầu kết nối được gửi lại, nhân hệ điều hành sẽ đọc phải vùng nhớ đã bị giải phóng.

IPv6 không bị ảnh hưởng bởi lỗi tranh chấp này vì nhân hệ điều hành thực hiện sao chép các tùy chọn cho kết nối IPv6.

Lỗi này xuất hiện từ phiên bản Linux 4.4. Các nhà phát triển nhân hệ điều hành đã áp dụng bản vá vào ngày 5/10, mười ngày trước khi mã CVE được công bố.

Bản vá buộc nhân hệ điều hành phải chờ cho đến khi các CPU khác hoàn tất việc đọc các tùy chọn thì mới tiến hành giải phóng chúng.

Tại sao có sự khác biệt về điểm số

Đội ngũ CVE của nhân Linux đã thêm điểm số 9,8 vào hồ sơ CVE vào ngày 24/10, chín ngày sau khi công bố CVE.

Điểm số này giả định rằng kẻ tấn công gửi một yêu cầu kết nối TCP mang theo các tùy chọn Bản ghi Định tuyến (Record Route) hoặc Dấu thời gian (Timestamp) IPv4, sau đó gửi lại yêu cầu để cố gắng chiếm ưu thế trong cuộc đua tranh chấp. Đội ngũ này đánh giá độ phức tạp của cuộc tấn công là thấp, với lý do cả hai phía của cuộc đua đều là "do kẻ tấn công tạo ra".

Trong trường hợp đó, đội ngũ này cho biết lỗi có thể làm rò rỉ bộ nhớ nhân lân cận về phía kẻ tấn công, làm hỏng bộ nhớ nhân hoặc làm sập hệ thống.

Tính đến ngày 28/10, Cơ sở Dữ liệu Lỗ hổng Quốc gia (NVD) vẫn chưa đưa ra điểm số riêng và hiển thị mức 9,8 của đội ngũ nhân Linux. Trang của Ubuntu cũng hiển thị điểm số này.

Trang CVE của Red Hat xếp loại lỗ hổng ở mức Trung bình với 5,9 điểm vì cuộc đua tranh chấp rất khó thành công. Họ cho biết kết quả khả dĩ nhất là sập nhân, khả năng hỏng bộ nhớ chỉ mang tính lý thuyết và "chưa có tác động nào về tính bảo mật hay toàn vẹn được chứng minh".

Tài liệu thông báo dạng máy đọc của Red Hat, được cập nhật vào ngày 29 tháng 10, liệt kê mức độ ảnh hưởng là Quan trọng và chấm điểm lỗ hổng này là 8,1, với mức độ ảnh hưởng cao về tính bảo mật và tính toàn vẹn. Trang theo dõi lỗi của Red Hat đã thay đổi mức độ nghiêm trọng của vấn đề từ trung bình sang cao vào cùng ngày. Vào ngày đó, trang CVE hiển thị mức độ Ôn hòa và 5,9.

Oracle và SUSE cũng chấm điểm lỗ hổng này là 8,1, với cùng vectơ CVSS như tệp thông báo của Red Hat. Những điểm số đó khớp với nhóm nhân hệ điều hành trên mọi chỉ số ngoại trừ độ phức tạp của cuộc tấn công, mà các nhà cung cấp đánh giá là cao trong khi nhóm nhân đánh giá là thấp. Amazon chấm điểm lỗ hổng này là 7,0.

Anthropic tuyên bố đã xây dựng những gì

Anthropic đã mô tả cuộc tấn công khai thác Linux trong một bài đăng vào ngày 27 tháng 10 về các lỗ hổng mà mô hình trí tuệ nhân tạo của họ, Claude, đã phát hiện và khai thác. The Hacker News đã đưa tin về bài viết này vào ngày 28 tháng 10. Claude đã viết mã khai thác sau "lệnh nhắc ban đầu", Anthropic cho biết.

Cuộc khai thác hoạt động theo hai giai đoạn. Đầu tiên, tình trạng cạnh tranh thời điểm (race condition) khiến nhân hệ điều hành gửi thêm các byte ngược lại cho kẻ tấn công. Khi một trong các phản hồi đó chứa địa chỉ nhân, kẻ tấn công có thể vượt qua KASLR, cơ chế ngẫu nhiên hóa địa chỉ bộ nhớ của nhân.

Thứ hai, cùng một lỗi đó làm tràn bộ đệm và ghi đè lên một con trỏ lệnh gọi lại bằng địa chỉ của một tải trọng (payload) mà kẻ tấn công đã đặt sẵn trong bộ nhớ nhân. Khi nhân gọi con trỏ đó, tải trọng sẽ thực thi lệnh vỏ (shell command) theo lựa chọn của kẻ tấn công dưới quyền root.

Một lần cạnh tranh thất bại chỉ làm hỏng nỗ lực kết nối đó và không làm sập hệ thống, vì vậy kẻ tấn công có thể tiếp tục thử lại, công ty cho biết. Trong bài kiểm tra của họ, việc rò rỉ một địa chỉ nhân mất 48 phút và việc đạt được quyền thực thi lệnh mất thêm 5 phút.

Bài đăng không bao gồm mã khai thác, phiên bản nhân hoặc cấu hình mà Anthropic đã thử nghiệm.

Red Hat cho biết kẻ tấn công từ xa có thể tiếp cận dịch vụ TCP bị lộ có thể kích hoạt lỗi cạnh tranh. Tuy nhiên, cuộc khai thác quyền root của Anthropic nhắm vào các máy chủ có trình lắng nghe TCP đa đường dẫn (multipath TCP listener). Bài đăng không cho biết liệu các máy chủ không có trình lắng nghe này có thể bị chiếm quyền theo cùng một cách hay không.

Tính đến ngày 29 tháng 10, không có thông báo nào từ nhà cung cấp, bản ghi CVE hoặc bài đăng của Anthropic báo cáo các cuộc tấn công sử dụng lỗ hổng này. Lỗ hổng này không xuất hiện trong bản sao danh mục Các lỗ hổng đã bị khai thác đã biết của CISA do CIRCL của Luxembourg cập nhật lần cuối vào ngày 28 tháng 10.

Phải làm gì lúc này

Nơi nào bản phân phối của bạn đã phát hành nhân đã vá, hãy cài đặt nhân đó. Bảng trên liệt kê các gói và thông báo cho Debian, Oracle Linux, SUSE và Amazon Linux.

Nếu bạn tự biên dịch nhân của mình, bản vá nằm trong Linux 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 và 7.3. Nhóm CVE của nhân khuyên bạn nên cập nhật lên nhân ổn định mới nhất. Họ cho biết cộng đồng nhân không hỗ trợ việc chọn lọc từng bản vá riêng lẻ (cherry-picking).

Ubuntu, RHEL và một số bản phát hành Amazon Linux và SUSE chưa có nhân đã vá để cài đặt. Red Hat cho biết không có biện pháp giảm thiểu nào có sẵn đáp ứng các tiêu chuẩn của họ về việc dễ triển khai, phù hợp với hầu hết các bản cài đặt và ổn định. Không có thông báo nào của các bản phân phối khác liệt kê biện pháp như vậy.

Thông báo từ các bản phân phối và bài đăng của Anthropic không nêu rõ liệu việc tắt TCP đa đường dẫn trong nhân, hay việc chặn các yêu cầu kết nối đến mang tùy chọn IP, có làm giảm rủi ro hay không.

Đối với các chương trình Go, Nhóm Bảo mật Go cho biết việc thiết lập GODEBUG=multipathtcp=0 trong môi trường của chương trình sẽ vô hiệu hóa MPTCP theo mặc định tại thời điểm chạy. Việc thêm godebug multipathtcp=0 vào tệp go.mod của mô-đun chính sẽ thực hiện điều tương tự tại thời điểm xây dựng, nhưng mã gọi hàm SetMultipathTCP sẽ ghi đè lên cả hai.

Nhóm gọi việc tắt MPTCP cho từng chương trình là một biện pháp giảm thiểu mong manh. Chỉ cần một trình lắng nghe MPTCP bị bỏ lại mà không được bảo vệ vẫn khiến hệ thống dễ bị tổn thương, và cách tiếp cận này giả định rằng mọi cuộc khai thác hoạt động đều phụ thuộc vào MPTCP.

Nhóm cũng cho biết lỗi cốt lõi không phải chỉ riêng có ở MPTCP, rằng các hệ thống không có trình lắng nghe MPTCP vẫn có thể dễ bị tổn thương trước các cuộc tấn công tương tự, và cách khắc phục tốt nhất là nâng cấp lên một phiên bản nhân đã được vá.

(Bài viết được cập nhật vào ngày 30 tháng 10 để bổ sung hướng dẫn của Nhóm Bảo mật Go cho các chương trình Go và phản ánh việc Red Hat hiện liệt kê RHEL 8, 9 và 10 cùng OpenShift 4 là Bị ảnh hưởng thay vì Hoãn sửa lỗi.)

Bình luận

Tin bài khác