CVE-2026-43503: Mối đe dọa nghiêm trọng, khai thác zero-day trên Linux

CVE-2026-43503: Mối đe dọa nghiêm trọng, khai thác zero-day trên Linux

Lỗ hổng leo thang đặc quyền cục bộ mới trên Linux kernel, được đặt tên là “DirtyClone” (CVE-2026-43503), cho phép người dùng cục bộ không có đặc quyền chiếm toàn quyền root bằng cách thao túng các gói mạng được nhân bản thông qua quy trình con XFRM/IPsec. Toàn bộ quá trình này diễn ra mà không để lại dấu vết nào trong nhật ký kernel hoặc bản ghi kiểm toán, cho thấy một mối đe dọa tinh vi.

Chi tiết về Lỗ hổng DirtyClone (CVE-2026-43503)

DirtyClone là một biến thể có mức độ nghiêm trọng cao thuộc họ lỗ hổng DirtyFrag. Đây là một lớp các lỗi làm hỏng bộ nhớ trong Linux kernel, ảnh hưởng đến cách các bộ đệm socket (skb) tham chiếu đến bộ nhớ page-cache được chia sẻ. Lỗ hổng này, được theo dõi dưới mã định danh CVE-2026-43503, được phát hiện bởi JFrog Security Research với điểm CVSS là 8.8. Nhóm nghiên cứu của JFrog đã phát hiện ra lỗ hổng này trong quá trình kiểm toán các bản vá lỗi Linux kernel nhằm khắc phục các sửa lỗi DirtyFrag trước đó.

Cơ chế hoạt động của DirtyClone

Vấn đề cốt lõi nằm ở hàm __pskb_copy_fclone(). Hàm này bỏ qua cờ an toàn SKBFL_SHARED_FRAG trong quá trình nhân bản gói tin. Đây chính là cờ quan trọng mà bản sửa lỗi DirtyFrag ban đầu đã giới thiệu để bảo vệ bộ nhớ page-cache được hỗ trợ bởi tệp (file-backed page cache).

Khác với người tiền nhiệm, DirtyClone khai thác một đường dẫn nhân bản gói tin thay vì một đường dẫn splice trực tiếp. Cụ thể, nó được kích hoạt bởi mục tiêu netfilter TEE của Linux, mục tiêu này nhân đôi các gói tin nội bộ bằng cách sử dụng hàm __pskb_copy_fclone().

Mối liên hệ với các lỗ hổng DirtyFrag

Lỗ hổng này được JFrog báo cáo độc lập vào ngày 19 tháng 5 năm 2026, trùng với báo cáo tổng thể từ nhà nghiên cứu DirtyFrag ban đầu là Hyunwoo Kim vào ngày 16 tháng 5. DirtyFrag, Fragnesia và DirtyClone là các lỗ hổng chị em, không phải là một chuỗi tấn công chia sẻ cùng một cơ chế khai thác cơ bản. Cả ba đều khai thác sự thất bại của kernel trong việc phân tách nghiêm ngặt ba vai trò bộ nhớ:

  • Bộ nhớ page-cache được hỗ trợ bởi tệp.
  • Bộ đệm mạng (skb).
  • Các phép biến đổi mật mã tại chỗ.

Bản sửa lỗi DirtyFrag ban đầu (CVE-2026-43284) đã giới thiệu cờ SKBFL_SHARED_FRAG để bảo vệ các gói tin UDP được splice. Tuy nhiên, các biến thể sau đó như Fragnesia (CVE-2026-46300) và DirtyClone đã chứng minh rằng cờ này có thể bị bỏ qua một cách âm thầm trên nhiều đường dẫn mã.

Điểm mấu chốt từ nghiên cứu của JFrog là cơ chế tấn công không phụ thuộc vào đường dẫn cụ thể. Bất kỳ sự biến đổi skb nào làm mất đi cờ shared-frag đều trở thành một vectơ khai thác tiềm năng.

Các bước khai thác DirtyClone

Khai thác DirtyClone bao gồm bảy bước để đạt được leo thang đặc quyền:

  1. Tạo một tệp trên đĩa mà không sửa đổi nội dung của nó.
  2. Sử dụng splice() để ánh xạ tệp vào bộ nhớ.
  3. Nhân bản skb được liên kết với vùng nhớ đã ánh xạ bằng cách sử dụng __pskb_copy_fclone(), làm mất cờ SKBFL_SHARED_FRAG.
  4. Sử dụng netfilter TEE để nhân đôi skb, kích hoạt lại hàm __pskb_copy_fclone() và phá vỡ sự phân tách bộ nhớ.
  5. Thao tác với bộ đệm mạng để truy cập vào vùng nhớ page-cache được hỗ trợ bởi tệp.
  6. Cập nhật nội dung của tệp gốc bằng cách ghi đè lên vùng nhớ được chia sẻ.
  7. Ghi đè lên các bit quyền truy cập của tệp.

Điều đáng lo ngại là tệp trên đĩa hoàn toàn không bị thay đổi, làm cho cuộc tấn công này không thể bị phát hiện bởi các công cụ giám sát tính toàn vẹn tệp và không để lại dấu vết kiểm toán nào trong kernel. Đây là một điểm quan trọng cần lưu ý về khai thác zero-day.

Ảnh hưởng của Lỗ hổng

CVE-2026-43503 ảnh hưởng đến nhiều bản phân phối Linux hiện đại, đặc biệt là những hệ thống có bật tính năng user namespaces cho người dùng không có đặc quyền. Điều này có nghĩa là bất kỳ người dùng cục bộ nào không có đặc quyền đều có thể trở thành mục tiêu tiềm năng để chiếm quyền kiểm soát hệ thống.

Bất kỳ kernel nào thiếu chuỗi bản vá DirtyFrag hoàn chỉnh — bao gồm cả các bản sửa lỗi cho CVE-2026-46300 và CVE-2026-43503 — đều có thể bị khai thác, ngay cả khi các bản vá DirtyFrag ban đầu đã được áp dụng. Điều này nhấn mạnh sự cần thiết của việc áp dụng toàn bộ các bản vá liên quan để đảm bảo an toàn.

Biện pháp Khắc phục và Cập nhật

Bản sửa lỗi cho lỗ hổng này đã được hợp nhất vào Linux mainline vào ngày 21 tháng 5 năm 2026 (commit 48f6a5356a33). Bản phát hành đầu tiên có bản sửa lỗi là Linux v7.1-rc5 (ngày 24 tháng 5 năm 2026). Bản sửa lỗi toàn diện này đảm bảo rằng cờ SKBFL_SHARED_FRAG được bảo toàn trên tất cả các đường dẫn sao chép/nhân bản skb, hợp nhất, nhận GRO và phân đoạn.

Hành động Khẩn cấp

Các hành động khắc phục cần được thực hiện ngay lập tức để giảm thiểu rủi ro bảo mật:

  • Cập nhật bản vá: Ưu tiên áp dụng các bản vá bảo mật mới nhất cho Linux kernel của bạn. Kiểm tra xem hệ thống của bạn có đang chạy phiên bản đã được vá lỗi hay không, hoặc cập nhật lên phiên bản ổn định mới nhất.
  • Kiểm tra cấu hình User Namespaces: Đánh giá lại cấu hình user namespaces. Nếu không bắt buộc phải sử dụng, hãy xem xét việc vô hiệu hóa chúng hoặc hạn chế quyền truy cập để giảm thiểu bề mặt tấn công.
  • Giám sát hoạt động bất thường: Mặc dù cuộc tấn công này khó bị phát hiện, nhưng việc tăng cường giám sát các hoạt động bất thường trên hệ thống có thể giúp phát hiện sớm các dấu hiệu xâm nhập.

Hiện tại, chưa có bằng chứng về mã khai thác công khai (Public PoC) tồn tại trước khi JFrog công bố nghiên cứu của họ. JFrog đã tạm dừng việc phát hành mã khai thác đầy đủ để các bản phân phối có thể hoàn tất việc triển khai bản vá lỗi. Tuy nhiên, điều này chỉ mang tính tạm thời.

Các tổ chức nên chủ động nâng cao khả năng phòng thủ trước các tấn công mạng. Nghiên cứu các chiến thuật săn lùng mối đe dọa tiên tiến có thể giúp củng cố khả năng phòng vệ của bạn.

Nguồn tin: JFrog Security Research.