1 điểm bởi GN⁺ 2026-04-23 | 1 bình luận | Chia sẻ qua WhatsApp
  • Tin nhắn đã bị xóa hoặc tự biến mất trong các ứng dụng nhắn tin có thể vẫn còn trong bộ nhớ đệm thông báo và bị đọc bằng công cụ pháp y, và Apple đã khắc phục điều này bằng bản cập nhật phần mềm cho iPhone và iPad
  • Các thông báo có hiển thị nội dung tin nhắn có thể được lưu trên thiết bị tới một tháng, và trong thông báo bảo mật của Apple có nêu rằng các thông báo được đánh dấu để xóa có thể bị giữ lại ngoài dự kiến
  • Con đường trích xuất này liên quan đến cách tin nhắn Signal đã xóa vẫn còn trong cơ sở dữ liệu của điện thoại, cho phép cơ quan thực thi pháp luật đọc được cả những tin nhắn đã bị xóa từ lâu
  • Sau khi vấn đề này được công khai, Signal đã yêu cầu Apple vá lỗi, và tính năng hẹn giờ tự xóa có thể hữu ích với những người dùng muốn giữ bí mật cuộc trò chuyện ngay cả khi thiết bị bị tịch thu
  • Chỉ xóa trong ứng dụng có thể không làm nội dung tương tự biến mất khỏi kho lưu trữ thông báo ở cấp hệ điều hành, và bản vá lần này cho thấy tầng OS cũng quan trọng đối với quyền riêng tư của các tin nhắn tự xóa

Bản vá lỗi và tác động

  • Apple đã phát hành bản cập nhật phần mềm cho iPhone và iPad để sửa lỗi từng cho phép cơ quan thực thi pháp luật trích xuất các tin nhắn đã bị xóa hoặc tự biến mất từ ứng dụng nhắn tin
    • Vấn đề phát sinh vì thông báo (notification) có hiển thị nội dung tin nhắn bị lưu trong bộ nhớ đệm trên thiết bị tới một tháng
  • Trong thông báo bảo mật của Apple có ghi rằng các thông báo được đánh dấu để xóa có thể bị giữ lại ngoài dự kiến trên thiết bị
  • Vì sao nội dung thông báo lại bị ghi lại ngay từ đầu vẫn chưa được xác nhận
    • Bản vá lần này cho thấy hiện tượng đó thực chất là một lỗi
  • Apple chưa trả lời ngay lập tức trước câu hỏi vì sao các thông báo lại được giữ lại
  • Apple cũng đã backport bản sửa lỗi cho iPhone và iPad đang chạy các bản iOS 18 cũ hơn

Con đường trích xuất bị lộ

  • Bản vá này liên hệ trực tiếp với vấn đề mà 404 Media công bố hồi đầu tháng
    • FBI từng có thể dùng công cụ pháp y để trích xuất tin nhắn Signal đã xóa từ iPhone của ai đó
  • Việc trích xuất có thể xảy ra vì nội dung tin nhắn từng được hiển thị dưới dạng thông báo, rồi vẫn được lưu trong cơ sở dữ liệu của điện thoại ngay cả sau khi tin nhắn đã bị xóa trong Signal
  • Khi sử dụng công cụ pháp y, cơ quan thực thi pháp luật có thể đọc cả những tin nhắn đã bị xóa từ lâu

Signal và tính năng xóa tin nhắn

  • Meredith Whittaker của Signal cho biết sau khi vấn đề này bị công khai, bà đã yêu cầu Apple có biện pháp khắc phục
    • Bà viết rằng thông báo về các tin nhắn đã xóa không nên còn tồn tại trong cơ sở dữ liệu thông báo của bất kỳ hệ điều hành nào
  • Cũng như WhatsApp và các ứng dụng nhắn tin khác, Signal cung cấp tính năng hẹn giờ để tự động xóa tin nhắn sau một khoảng thời gian nhất định
  • Tính năng này có thể hữu ích với người dùng muốn giữ bí mật cuộc trò chuyện ngay cả khi thiết bị bị cơ quan chức năng tịch thu

Lo ngại về quyền riêng tư

  • Khi lộ ra việc FBI đã tìm được con đường vượt qua một tính năng bảo mật được dùng hằng ngày, mức độ cảnh giác của các nhà hoạt động về quyền riêng tư đã tăng lên
  • Tính năng tin nhắn tự xóa đặc biệt là một biện pháp bảo mật được những người dùng có nguy cơ cao sử dụng thường xuyên
  • Lỗi lần này cho thấy dù tin nhắn đã bị xóa trong ứng dụng, nội dung tương tự vẫn có thể còn lại trong kho lưu trữ thông báo ở cấp hệ điều hành

1 bình luận

 
GN⁺ 2026-04-23
Ý kiến trên Hacker News
  • Tôi nghĩ đây là một lỗi khiến bộ nhớ đệm còn sót lại trên thiết bị. Tuy vậy, việc Apple và Google đứng giữa phần lớn luồng thông báo vẫn khiến cấu trúc mà nội dung đi qua máy chủ của họ trở nên đáng lo. Vì thế, nếu muốn để lộ ít hơn các tin nhắn được mã hóa đầu cuối, có lẽ nên đặt thông báo chỉ hiện kiểu có tin nhắn mới và ẩn nội dung hay người gửi
    • Tôi cho rằng cách giải thích này sai ở hai điểm. Thứ nhất, sự cố lần này là do HĐH theo dõi và lưu thông báo cục bộ trên thiết bị, chứ không phải vấn đề ở máy chủ thông báo của Google hay Apple. Thứ hai, ngay cả khi thông báo đi qua máy chủ của Apple hay Google, vẫn có thể giữ E2EE bằng cách mã hóa chính dữ liệu đó hoặc bỏ phần nội dung tin nhắn. Thực tế Signal cũng làm như vậy, nên không phải Apple hay Google nhìn thấy tin nhắn dạng văn bản thuần
    • Theo tôi, cả Apple lẫn Google đều cung cấp khả năng để ứng dụng chặn và chỉnh sửa tin nhắn trước khi hiển thị. Vì vậy có thể gửi thông báo đã mã hóa, rồi giải mã bằng mã ứng dụng trên thiết bị người dùng trước khi hiện ra
    • Tôi nghĩ nhận định đó đúng. Máy chủ chỉ cần gửi thông báo, còn việc hiển thị thực tế có thể kết hợp cục bộ với tin nhắn đã được đọc sau khi mở khóa thiết bị, nên không nhất thiết phải gửi văn bản thuần lên máy chủ của Apple hay Google
    • Theo Matrix FAQ mà tôi đọc gần đây, mô tả đó không chính xác. Trong ứng dụng Matrix, chỉ một phần metadata đi từ máy chủ chat qua máy chủ push rồi qua Google đến thiết bị của tôi, còn nội dung tin nhắn vẫn ở trạng thái E2EE. Ứng dụng được đánh thức bằng thông báo metadata rồi mới tải lại tin nhắn thật để hiển thị trong thông báo. Như ý cuối đã nói, cho tới khi phía Android cũng được sửa thì vấn đề lưu cục bộ vẫn còn
    • Trong trường hợp này, đúng là chúng ta đã dùng API thông báo của HĐH của Google và Apple đồng thời tự đưa cho họ tin nhắn dạng văn bản thuần
  • Tôi nghĩ lỗi mà bài báo nói tới chỉ là một phần của vấn đề. Cốt lõi là văn bản thông báo bị lưu trong DB điện thoại bên ngoài Signal, và muốn tránh điều này thì phải đổi cài đặt. Trong trường hợp lần này, bị cáo đã xóa chính ứng dụng Signal, và lẽ ra các thông báo của ứng dụng đó cũng phải được đánh dấu là đã xóa nội bộ, nhưng có vẻ điều đó đã không xảy ra và đây là phần được sửa. Điểm chính của thông tin công khai là các thông báo được đánh dấu để xóa vẫn có thể còn lại trên thiết bị ngoài dự kiến; và theo mô tả thì đây là logging issue, nên cũng có khả năng dữ liệu nằm ở phía log hơn là trong DB chính
    • Theo những gì tôi thấy, sắc thái ở đây không chỉ là log mà còn trải sang logs, json, plist, SQLite DB. Trong /private/var/mobile/Library/Biome/streams/.../Notification/segments/ của Biome có log thô chứa tiêu đề và nội dung; trong /var/mobile/Library/{BulletinBoard,UserNotificationsCore}/ của BulletinBoard và UserNotificationsCore có các file json, plist về trạng thái đã chuyển và đã đóng; còn trong /var/mobile/Library/CoreDuet/coreduetdClassD.db của CoreDuet có SQLite đưa các sự kiện Biome vào lại. Nguồn là tweet này
    • Tôi nghĩ cách diễn giải đó vẫn còn là suy đoán. Việc được đánh dấu để xóa có thể không chỉ có nghĩa là sau khi xóa cả ứng dụng, mà cũng có thể là sau khi người dùng đóng thông báo
    • Trong đầu tôi, khả năng SQLite WAL cũng hiện lên đầu tiên
    • Tôi nghĩ hai thứ đó trên thực tế có thể là cùng một vấn đề. Tôi không rõ vì sao lại xem chúng là tách biệt
  • Theo tôi, kiểu thông báo chung mà Signal cung cấp như “bạn đã nhận được tin nhắn” nói chung là một thói quen bảo mật tốt
    • Thật ra gần như ứng dụng nào cũng làm được vậy. Chỉ cần đổi mục notifications shows previews trong cài đặt iOS sang never
  • Tôi khá bực bội vì Signal không chủ động thông báo vấn đề này cho người dùng. Tôi đã tắt thông báo rồi mà Signal vẫn chỉ nhắc tôi bật lại
  • Chuyện này khiến tôi tự hỏi với Mythos thì mối lo lớn hơn là phát hiện lỗ hổng hay là vá lỗ hổng
  • Ban đầu tôi cũng hơi nhầm. Tôi tưởng thông báo đẩy được mã hóa đầu cuối, nên dịch vụ push không thể lưu vào bộ nhớ đệm ở dạng có thể đọc được, và ứng dụng sẽ nhận rồi giải mã trên thiết bị. Nhưng thực tế có vẻ là ứng dụng giải mã, hiển thị cho người dùng qua API của HĐH, rồi văn bản thông báo đó lại bị lưu vào đâu đó cục bộ trên thiết bị như một DB lịch sử thông báo
    • Tôi cũng hiểu đại khái là kiểu hoạt động như vậy
    • Theo tôi, trong kiến trúc push của Apple và Google thì khá nhiều metadata là văn bản thuần
  • Ở góc độ quyền riêng tư, tôi nghĩ vấn đề này vốn đã được biết đến khá nhiều. Google và Apple đôi khi gửi nội dung thông báo lên máy chủ của họ, nên có những trường hợp vượt ra ngoài ranh giới của ứng dụng. Một bài cùng nhóm chủ đề có thể tham khảo là bài này
    • Tôi đoán Signal sẽ mã hóa trước dữ liệu thông báo trước khi gửi cho Apple, rồi trên thiết bị giải mã bằng Notification Service Extension. Đây là một mẫu khá phổ biến để không phải tin Apple, nên rốt cuộc không phải Apple mà là phía thiết bị đã giải mã rồi lưu văn bản thuần
    • Trong trường hợp được báo cáo lần này, tôi hiểu là nội dung không rời khỏi máy chủ, mà cơ quan điều tra liên bang đã lấy trực tiếp từ điện thoại
    • Tôi cũng nghĩ tới các ứng dụng như Snapchat hay WhatsApp. WhatsApp nói về end-to-end, nhưng cũng có cáo buộc rằng họ chuyển một số bản sao tin nhắn cho cơ quan chức năng dựa trên từ khóa, nên về mặt phân loại thì cảm giác cũng là mối lo tương tự
  • Tôi nghĩ ứng dụng không thể yêu cầu iOS đừng lưu giữ thông báo này sau khi hiển thị, nên payload cứ thế bị cache lại. Cuối cùng đây đúng là vấn đề kiểu “đã xóa không có nghĩa là đã xóa”, và dữ liệu còn sót lại ở nhiều nơi hơn người ta nghĩ. Ở điểm này, tôi thấy Signal đã chỉ ra một ví dụ rất trúng
  • Thật may vì Apple đã backport bản sửa này xuống iOS 18
    • Không chỉ vậy, có vẻ iOS 18.7.8 cũng được phát hành cho cả những thiết bị có thể chạy iOS 26 mà không cần vòng vo gì đặc biệt, điều này khá thú vị. Trong khi từ 18.7.3 đến .6 dường như không như vậy, nên tôi tự hỏi có phải các bản phát hành ở giữa vốn đáng ra phải xuất hiện nhưng đã gặp vấn đề phát hành mà chẳng ai sửa hay không
  • Tôi thuộc phe sẽ không bao giờ dựa vào hệ thống đóng cho nhắn tin bảo mật. Đặc biệt là khi giao tiếp với nhiều đối tượng không xác định thì lại càng vậy
    • Dù thế, iOS có lẽ vẫn là nền tảng di động an toàn nhất cho nhắn tin bảo mật. Nhất là khi bật lock down mode thì càng như vậy