Apple có thực sự ghi lại mọi ứng dụng mà bạn chạy lên máy chủ không?
(blog.jacopo.io)- Phân tích kỹ thuật về OCSP, tâm điểm của vụ việc lần này
→ Để kiểm tra chứng chỉ nhà phát triển còn hiệu lực hay không, khi chạy ứng dụng sẽ kết nối tới máy chủ của Apple để kiểm tra
→ Nếu không thể kết nối mạng thì ứng dụng vẫn chạy bình thường
→ Nếu có thể kết nối nhưng máy chủ phản hồi chậm, sẽ xảy ra vấn đề như lần này: mọi ứng dụng không phải do Apple tạo ra đều không mở được
→ Có ý kiến cho rằng mỗi lần chạy ứng dụng, một hash của ứng dụng sẽ được gửi tới máy chủ Apple [1]
→ Vấn đề là nó dùng HTTP chứ không phải HTTPS (vì để xác minh chứng chỉ HTTPS thì lại cần mở thêm một kết nối nữa)
- Nhìn vào bên trong
→ Chỉ cần có HTTP Proxy hoặc Wireshark ở giữa là có thể bắt được toàn bộ
→ Sau khi chạy một lần và hoàn tất xác thực OCSP, trong một khoảng thời gian nhất định sẽ không xác thực lại
→ Gửi bằng GET một chuỗi 80 byte được mã hóa base64
→ Giá trị đó trông giống hash của ứng dụng, nhưng "không phải"
→ Nếu mở thông tin nhị phân đó bằng OpenSSSL, có thể thấy thật sự chứa tên Issuer của chứng chỉ, giá trị hash khóa và số sê-ri
→ Dù vậy, nếu chứng chỉ khác nhau theo từng ứng dụng thì chẳng phải rốt cuộc cũng tương đương với hash nhận diện ứng dụng hay sao? Đây là điểm gây nghi ngờ
- Chứng chỉ nhà phát triển
→ Thông tin chứng chỉ này đến từ đâu?
→ Thử trích xuất chứng chỉ của ứng dụng Mac bằng codesign (ở đây là Firefox)
→ Số sê-ri khớp với giá trị đã chụp ở trên
→ Sau đó thử lấy chứng chỉ của Thunderbird thì số sê-ri vẫn giống hệt (điều này cũng là hiển nhiên)
→ Tức là, như [1] đã nói, việc gửi thông tin hash có thể dùng để biết mọi ứng dụng là không chính xác
→ Tất nhiên, việc biết rằng trên máy nào, vào lúc nào, ứng dụng của "nhà phát triển nào" đã được chạy là điều có thể
- Về việc chặn OCSP
→ Có thể chặn bằng Little Snitch hoặc thông qua /etc/hosts
→ Nhưng đây là việc chặn chính một tính năng bảo mật quan trọng, nên không được khuyến nghị
- TL;DR
→ macOS không gửi hash của ứng dụng tới Apple mỗi khi chạy ứng dụng
→ macOS đang gửi thông tin chứng chỉ nhà phát triển của ứng dụng bạn dùng, và việc này được truyền qua HTTP
→ Nếu có thể thì đừng chặn kết nối tới ocsp.apple.com.
4 bình luận
Tham khảo thêm, theo Wikipedia tiếng Anh, Google Chrome đã vô hiệu hóa OCSP từ năm 2012. Lý do là: “khó tìm thấy lợi ích, trong khi cái giá phải trả (độ trễ và các vấn đề về quyền riêng tư) thì rõ ràng”.
https://www.imperialviolet.org/2012/02/05/crlsets.html
OCSP vốn là phương thức mà cả trình duyệt web cũng dùng để kiểm tra xem chứng chỉ SSL có hết hạn hay không. Vì việc xác thực ứng dụng cũng được thực hiện theo cách tương tự như chứng chỉ SSL, nên cũng có thể suy đoán là vì lý do đó.
Tôi đoán có lẽ đây là để thu thập thông tin App Analytics cho ứng dụng Mac giống như trên iOS.
Các chủ đề liên quan nên đọc
[1] Máy tính của bạn không thực sự là của riêng bạn https://vi.news.hada.io/topic?id=3200
[2] macOS Catalina (10.15): chậm đi ngay từ trong thiết kế https://vi.news.hada.io/topic?id=2145