Code Verify: verifying code authenticity on WhatsApp Web

Bài tóm tắt WhatsApp 2022 3. Quy mô lớn Độ khó: Trung bình

WhatsApp · 2022 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc

Bối cảnh

  • Sau multi-device (WhatsApp 2021), nhiều người dùng WhatsApp thẳng trên trình duyệt.
  • Tin nhắn mã hoá đầu cuối khi truyền, nhưng web app được server phục vụ trực tiếp mỗi lần tải trang, không có bên thứ ba duyệt như app store duyệt từng bản cập nhật mobile; thêm rủi ro từ extension trình duyệt. Server bị xâm nhập (hoặc bị ép) có thể phục vụ JavaScript khác cho một người.

Thay đổi chính

  • Code Verify: extension mã nguồn mở tự kiểm mã JavaScript của WhatsApp Web đang chạy có đúng bản đã công bố không. Mở rộng ý của subresource integrity (vốn chỉ kiểm từng file) ra toàn trang.
  • Bên thứ ba giữ nguồn sự thật: WhatsApp đưa hash mật mã của mã WhatsApp Web cho Cloudflare; extension so mã đang chạy với hash trên Cloudflare. Mỗi lần WhatsApp Web cập nhật, hash và extension tự cập nhật theo.
  • Báo hiệu kiểu đèn giao thông: xanh (đã xác minh), cam (cần tải lại hoặc extension khác can thiệp), đỏ (có thể có vấn đề bảo mật).
  • Extension không log gì, không gửi gì về WhatsApp hay Cloudflare; WhatsApp không biết ai đã cài.
  • Mở rộng sang Messenger (8/2022) và Instagram Web (6/2023).

Vì sao

  • Theo WhatsApp: để web có mức bảo đảm gần với app mobile, và để người có nguy cơ cao yên tâm. Mã nguồn mở để chính extension cũng được cộng đồng kiểm.

Bài học cho SWE

  • Với web app, "mã nào đang chạy" là một phần của mô hình đe doạ; mỗi lần deploy cần tạo ra một bằng chứng kiểm được (hash) do bên thứ ba lưu.
  • Muốn chống chính mình (nhà vận hành), nguồn sự thật phải nằm ngoài hạ tầng của mình.

Liên quan