Tin tức iOS

Developer

MissedRevoke: nghiên cứu mới về Anti-Revoke trên iOS 26 từ Duy Trần và mineek

Đăng lúc 14:29 · 22/08/2026 · Long Nguyễn

MissedRevoke: nghiên cứu mới về Anti-Revoke trên iOS 26 từ Duy Trần và mineek

Cộng đồng nghiên cứu iOS vừa xuất hiện thêm một hướng tiếp cận đáng chú ý liên quan đến certificate revocation, cơ chế khiến những ứng dụng cài ngoài App Store có thể ngừng hoạt động khi chứng chỉ bị Apple thu hồi.

Nghiên cứu bắt đầu từ phương pháp Anti-Revoke được mineek công bố và mới đây được Duy Trần (khanhduytran0) phát triển theo hướng phù hợp với những thay đổi trên iOS 26.x, dưới tên gọi MissedRevoke.

Đây không phải một ứng dụng Anti-Revoke dành cho người dùng phổ thông, mà là proof-of-concept dành cho developer và những người nghiên cứu cơ chế signing, provisioning và MobileIdentityService trên iOS.

Từ nghiên cứu Anti-Revoke của mineek

Trong Gist của mình, mineek mô tả một phương pháp nhằm ngăn thiết bị tiếp tục ghi nhận một số trạng thái revoke đối với enterprise certificate.

Phương pháp tập trung vào những dữ liệu mà iOS sử dụng để lưu thông tin liên quan đến certificate và trạng thái từ chối, bao gồm OCSP cache, dữ liệu trong MobileIdentityData và cơ sở dữ liệu provisioning của hệ thống.

Sau khi làm sạch những dữ liệu này, mineek sử dụng filesystem flag để hạn chế hệ thống ghi lại một số danh sách blacklist/rejection.

Gist còn đi kèm một configuration profile nhằm chặn kết nối tới một số domain của Apple liên quan đến OCSP, certificate validation và PPQ mà không cần thiết lập một DNS riêng.

Điểm đáng chú ý là mineek không khẳng định đây là một giải pháp hoàn hảo. Tác giả cảnh báo phương pháp có thể tạo ra những tác dụng phụ chưa xác định và nhấn mạnh người thử nghiệm phải tự chịu rủi ro.

Vì vậy, nghiên cứu này phù hợp hơn để nhìn dưới góc độ tìm hiểu cách iOS lưu và xử lý trạng thái revoke, thay vì một công cụ "cài một lần rồi không bao giờ bị revoke".

Apple thay đổi cơ chế trên iOS 26

Vấn đề xuất hiện khi Apple thay đổi cách quản lý những dữ liệu này trên iOS 26.

Theo Duy Trần, kể từ iOS 26.0 beta 2, Apple đã chuyển một phần cơ chế mà phương pháp trước đây dựa vào sang dạng cơ sở dữ liệu SQL. Chính thay đổi này khiến cách tiếp cận trên các phiên bản cũ không thể đơn giản áp dụng nguyên trạng lên iOS 26.

Duy mô tả MissedRevoke là một phương pháp hoạt động khá giống nghiên cứu của mineek, nhưng được chuyển sang "SQL form" để phù hợp với kiến trúc mới mà Apple sử dụng từ iOS 26.0 beta 2.

Trọng tâm lúc này nằm ở file mis.db.

MissedRevoke và ý tưởng sử dụng SQLite trigger

Thay vì khóa các plist như phương pháp trước, MissedRevoke khai thác chính khả năng của SQLite.

Ý tưởng là đưa các database trigger vào mis.db để kiểm soát những thay đổi mà dịch vụ của iOS muốn thực hiện với dữ liệu provisioning.

Theo mô tả của PoC, các trigger có thể ngăn một số thao tác khiến provisioning profile bị ghi nhận là revoked hoặc bị loại bỏ khi hết hạn. Nhờ đó, trong một số trường hợp, ứng dụng sử dụng certificate/profile đã hết hạn vẫn có thể tiếp tục được hệ thống chấp nhận.

Điểm thú vị nằm ở chỗ MissedRevoke không trực tiếp patch binary hay kernel của iOS.

Thay vào đó, nó tận dụng logic của chính database mà MobileIdentityService sử dụng để quản lý thông tin provisioning. Điều này khiến nghiên cứu của Duy Trần giống một bước tiếp nối tự nhiên từ phương pháp của mineek sau khi Apple thay đổi cách lưu trữ dữ liệu trên iOS 26.

Không phải cứ áp dụng MissedRevoke là cứu được certificate đã bị blacklist

Đây là một giới hạn rất quan trọng.

Duy Trần cho biết MissedRevoke không hoạt động với certificate đã bị blacklist từ trước nếu thiết bị vẫn còn lưu trạng thái đó trong OCSP database.

Muốn xử lý trường hợp này vẫn cần một cách để reset ocspcache.sqlite3, chẳng hạn thông qua quyền truy cập phù hợp trên thiết bị hoặc khôi phục thiết bị.

Nói đơn giản, MissedRevoke thiên về việc ngăn hệ thống ghi nhận một trạng thái revoke/expiration mới, chứ không tự động xóa mọi blacklist đã tồn tại trên thiết bị.

Điều này cũng giải thích vì sao nghiên cứu của Duy vẫn có liên hệ chặt chẽ với hướng Anti-Revoke ban đầu của mineek.

PPQ cũng nằm trong phạm vi nghiên cứu

Ngoài revoke và expiration, Duy Trần giới thiệu MissedRevoke như một PoC liên quan tới cả PPQ trên iOS 26.x.

PPQ là một phần trong chuỗi kiểm tra provisioning mà cộng đồng sideload thường gặp, đặc biệt với những ứng dụng được cài bằng các phương thức nằm ngoài App Store.

Gist của mineek trước đó cũng đã đề cập riêng tới PPQ và cung cấp configuration profile chặn ppq.apple.com.

Vì vậy, hai nghiên cứu không nên được xem là hai dự án hoàn toàn tách biệt. MissedRevoke thực chất tiếp tục khai thác cùng một hướng nghiên cứu, nhưng thích ứng với những thay đổi Apple đưa vào iOS 26.

Hiện chưa áp dụng được theo cách tương tự trên iOS 27

Một chi tiết đáng chú ý khác là MissedRevoke hiện không thể áp dụng theo cùng phương pháp trên iOS 27.

Theo Duy Trần, nguyên nhân nằm ở việc phương pháp partial restore cần cho quá trình này không còn hoạt động như mong muốn trên iOS 27.

Do đó, phạm vi mà tác giả công bố hiện tại vẫn là iOS 26.x.

Duy cũng trực tiếp hướng những người sử dụng iOS 18 trở xuống sang nghiên cứu của mineek, càng cho thấy MissedRevoke được xây dựng chủ yếu để giải quyết thay đổi xuất hiện trên thế hệ iOS mới.

Giá trị nằm ở nghiên cứu cơ chế signing của iOS

Điểm đáng chú ý của MissedRevoke không đơn thuần là câu chuyện "certificate dùng được lâu hơn".

Nghiên cứu cho thấy thêm một phần trong cách MobileIdentityService, provisioning profile, OCSP và database nội bộ của iOS phối hợp với nhau để quyết định một ứng dụng có còn được phép chạy hay không.

Việc Apple chuyển dữ liệu sang mis.db trên iOS 26 cũng cho thấy cơ chế quản lý provisioning vẫn liên tục được thay đổi qua từng phiên bản iOS.

Từ phương pháp của mineek đến MissedRevoke của Duy Trần, cộng đồng developer đã tìm ra hai cách tiếp cận khác nhau cho cùng một vấn đề: một bên tác động vào những dữ liệu revoke trên các phiên bản iOS cũ hơn, bên còn lại nghiên cứu chính database SQL mà Apple sử dụng trên iOS 26.

Dự án dành cho developer và researcher

MissedRevoke hiện vẫn nên được xem là một PoC nghiên cứu, không phải công cụ Anti-Revoke một chạm.

Việc hiểu hoặc triển khai phương pháp đòi hỏi kiến thức về provisioning profile, certificate signing, SQLite, filesystem của iOS và cách MobileIdentityService hoạt động.

Bản thân các tác giả cũng đưa ra những giới hạn rõ ràng: certificate đã bị blacklist vẫn là một vấn đề nếu OCSP cache chưa được xử lý, trong khi phương pháp hiện tại cũng chưa thể áp dụng tương tự trên iOS 27.

Dù vậy, xét dưới góc độ nghiên cứu iOS, MissedRevoke là một bước phát triển đáng chú ý từ nghiên cứu Anti-Revoke của mineek, đồng thời cung cấp thêm góc nhìn về những thay đổi trong hệ thống quản lý certificate và provisioning mà Apple triển khai từ iOS 26.

Tài liệu tham khảo: Gist Anti-Revoke của mineek và Gist MissedRevoke của Duy Trần (khanhduytran0).

Lưu ý: Các phương pháp trên mang tính nghiên cứu và có thể ảnh hưởng tới cơ chế bảo mật, provisioning hoặc khả năng hoạt động của ứng dụng trên thiết bị. Không nên thử nghiệm trên thiết bị chính nếu không hiểu rõ các thay đổi được thực hiện.