Mới đây, researcher TheRealClarity đã công bố một bài phân tích rất chi tiết về DarkSword kernel exploit, đồng thời giới thiệu ClearSword – bản port bằng C do chính anh viết lại để nghiên cứu cách khai thác lỗ hổng CVE-2025-43520 trên iOS.
Bài viết có tên “Into the Dark - DarkSword Kernel Exploit Writeup”, được công bố ngày 25/7/2026. Không chỉ giải thích nguyên nhân của lỗ hổng, TheRealClarity còn đi sâu vào cách DarkSword biến một race condition trong XNU thành khả năng đọc và ghi kernel ổn định.
1. ClearSword là gì?
ClearSword không phải một lỗ hổng mới.
Theo TheRealClarity, đây là bản port bằng C của DarkSword kernel exploit, được viết lại với mục tiêu giữ cách hoạt động gần với implementation ban đầu nhất có thể, đồng thời sửa một số vấn đề để exploit hoạt động trên những phiên bản iOS cũ hơn.
Lỗ hổng được sử dụng là:
- CVE-2025-43520 – DarkSword
Đây là một race condition trong VFS của XNU, cụ thể liên quan tới hai hàm cluster_write_contig và cluster_read_contig.
Source ClearSword cũng đã được TheRealClarity công khai trên GitHub. GitHub ClearSword của TheRealClarity
2. DarkSword kernel exploit hoạt động ở đâu?
Để hiểu lỗi này, TheRealClarity tập trung vào UPL – Universal Page List, một cơ chế bên trong XNU dùng để mô tả các physical page mà những subsystem như filesystem hoặc I/O cần thao tác.
Một trong những trạng thái quan trọng là UPL_PHYS_CONTIG, dùng để xác định các page có nằm liên tiếp nhau trong physical memory hay không.
Vấn đề của DarkSword nằm ở chỗ kernel có thể kiểm tra một mapping và xác định nó đang physically contiguous, sau đó lựa chọn đường xử lý dành riêng cho vùng nhớ liên tục.
Nhưng giữa lần kiểm tra đó và thời điểm tạo UPL thật sự, mapping có thể bị thay thế.
Kernel trước đây không kiểm tra lại rằng mapping mới vẫn còn physically contiguous.
3. Race condition dẫn tới đọc/ghi ngoài vùng nhớ như thế nào?
Có thể hiểu đơn giản như sau.
Ban đầu kernel nhìn thấy một vùng memory gồm các physical page nằm liên tiếp và quyết định sử dụng cluster_write_contig.
Exploit sau đó cố gắng thay mapping này bằng một mapping khác mà các physical page không còn nằm liền nhau.
Tuy nhiên kernel vẫn xử lý nó dựa trên giả định ban đầu rằng các page tiếp theo nằm ngay sau physical page đầu tiên.
Kết quả là kernel có thể đọc hoặc ghi sang một physical page hoàn toàn không liên quan.
TheRealClarity mô tả đây là cơ sở để tạo ra physical out-of-bounds read/write primitive.
Bản vá của Apple khá trực tiếp: sau khi tạo UPL, kernel kiểm tra lại UPL_PHYS_CONTIG. Nếu mapping không còn contiguous, thao tác sẽ bị hủy.
4. ClearSword biến lỗi này thành kernel read/write ra sao?
Việc đọc hoặc ghi được một physical page ngoài vùng dự kiến vẫn chưa đủ để tạo thành một kernel exploit hữu dụng.
ClearSword tiếp tục tìm kiếm những cấu trúc kernel có thể nhận dạng được trong physical memory.
Một trong những mục tiêu quan trọng là cấu trúc inpcb liên quan tới socket. Exploit tạo nhiều socket, sau đó sử dụng một số trường đặc trưng trong inpcb để xác định socket nào tương ứng với vùng kernel memory vừa tìm thấy.
Sau khi tìm được mục tiêu phù hợp, ClearSword sử dụng việc corruption con trỏ icmp6_filter để xây dựng một primitive ổn định cho phép:
đọc 32 byte từ một địa chỉ tùy ý và ghi 32 byte tới một địa chỉ tùy ý.
Từ đây exploit có được arbitrary kernel read/write, sau đó tìm kernel base và tính kernel slide.
Đây mới là phần khiến CVE-2025-43520 thực sự trở nên hữu ích đối với các công cụ jailbreak và nghiên cứu kernel.
5. ClearSword hỗ trợ những phiên bản iOS nào?
DarkSword full-chain ban đầu được công bố là nhắm tới iOS 18.4 – 18.7.
Tuy nhiên kernel bug bên trong không chỉ giới hạn ở những phiên bản này.
TheRealClarity cho biết ClearSword đã được thử nghiệm từ iOS 15 tới iOS 26.0.1, mặc dù một số phiên bản kernel cụ thể vẫn cần điều chỉnh offset nhỏ để exploit hoạt động.
Điều này cũng giải thích vì sao một kernel exploit xuất phát từ chain nhắm iOS 18 lại có thể được cộng đồng jailbreak đưa ngược về những phiên bản iOS cũ hơn.
6. TheRealClarity còn phát hiện lỗi trong implementation DarkSword ban đầu
Một phần khá thú vị của write-up nằm ở cuối bài.
Trong quá trình viết lại DarkSword, TheRealClarity phát hiện implementation ban đầu có ít nhất hai vấn đề đáng chú ý.
Đầu tiên, logic duyệt các search mapping có thể cố map hai page khi chỉ còn một page ở cuối vùng nhớ, khiến thread gặp lỗi và process bị kết thúc. ClearSword đã sửa lại điều kiện này.
Vấn đề thứ hai là implementation gốc giả định cấu trúc inpcb luôn nằm trên boundary 0x400. Theo TheRealClarity, giả định này không đúng trên một số phiên bản, đặc biệt là iOS 15 và iOS 16.
Điều này khiến chính TheRealClarity đặt câu hỏi về mức độ thử nghiệm của implementation DarkSword ban đầu, bởi đây là những lỗi tương đối đơn giản so với độ phức tạp của toàn bộ exploit chain.
7. ClearSword không phải jailbreak hoàn chỉnh
ClearSword cung cấp kernel read/write, nhưng điều này không đồng nghĩa chỉ cần chạy ClearSword là thiết bị sẽ được jailbreak hoàn chỉnh.
Kernel exploit là một thành phần quan trọng, còn một jailbreak hiện đại vẫn cần xử lý những cơ chế bảo vệ khác tùy thiết bị và phiên bản iOS.
Giá trị lớn nhất của ClearSword nằm ở việc cung cấp một implementation DarkSword rõ ràng hơn cho developer nghiên cứu, đồng thời giúp cộng đồng hiểu chính xác cách CVE-2025-43520 được khai thác.
TheRealClarity cũng cho biết gần như toàn bộ exploit đã được chú thích từng dòng trong source để giải thích chức năng của code.
8. Source và bài phân tích
Bài phân tích kỹ thuật chính thức của TheRealClarity: Into the Dark - DarkSword Kernel Exploit Writeup
Repository mô tả trực tiếp ClearSword là “A DarkSword Kernel exploit C port” và xác nhận CVE được sử dụng là CVE-2025-43520.





