1 điểm bởi GN⁺ 2025-01-22 | 1 bình luận | Chia sẻ qua WhatsApp
  • Khi bộ nhớ đệm Cloudflare kết hợp với thông báo đẩy, có thể thực hiện một cuộc tấn công giải ẩn danh 0-click để thu hẹp vị trí người dùng trong phạm vi vài trăm dặm trên điện thoại cài ứng dụng dễ bị ảnh hưởng hoặc laptop có ứng dụng chạy nền
  • Kẻ tấn công khiến thiết bị mục tiêu tự động tải tài nguyên phía sau Cloudflare, rồi kiểm tra nó được cache ở trung tâm dữ liệu Cloudflare nào để suy ra khu vực gần với mục tiêu
  • Với Signal, do cache tệp đính kèm ở cdn2.signal.orgthông báo đẩy trên di động, hình ảnh đính kèm có thể bị tải xuống ngay cả khi không mở cuộc trò chuyện; với Discord, có thể thực hiện cùng kiểu tấn công bằng URL avatar trong thông báo yêu cầu kết bạn
  • Cloudflare đã vá lỗi liên quan đến Cloudflare Teleport, vốn cho phép gửi yêu cầu tới trung tâm dữ liệu cụ thể, nhưng ngay cả khi dùng máy chủ VPN vẫn có thể truy cập lại khoảng 54% toàn bộ trung tâm dữ liệu Cloudflare
  • Signal và Discord đẩy phạm vi trách nhiệm sang Cloudflare hoặc phía người dùng, còn Cloudflare cho rằng việc tắt cache với tài nguyên cần bảo vệ là trách nhiệm của khách hàng, nên rủi ro quyền riêng tư gắn với thiết kế ứng dụng·CDN·thông báo vẫn còn tồn tại

Cách thu hẹp vị trí bằng cache Cloudflare

  • Cuộc tấn công này dùng thông tin trạng thái cache của Cloudflare và các trung tâm dữ liệu phân tán theo địa lý để suy ra vị trí gần đúng của người dùng
  • Cloudflare cung cấp thông tin qua header phản hồi cho các yêu cầu tài nguyên có thể cache
    • cf-cache-status hiển thị HIT hoặc MISS
    • cf-ray chứa mã sân bay gần trung tâm dữ liệu đã xử lý yêu cầu
  • Khi thiết bị mục tiêu tải tài nguyên từ một trang dùng Cloudflare, tài nguyên đó có thể được cache tại trung tâm dữ liệu gần mục tiêu
  • Sau đó, nếu dò qua nhiều trung tâm dữ liệu Cloudflare để tìm nơi tài nguyên đã được cache, có thể suy ra khu vực gần với mục tiêu
  • Cloudflare vận hành hàng trăm trung tâm dữ liệu tại hơn 330 thành phố ở hơn 120 quốc gia, và giải thích rằng với người sống ở các nước phát triển, trung tâm dữ liệu gần nhất thường có khả năng nằm trong bán kính 200 dặm

Cloudflare Teleport và việc duyệt qua các trung tâm dữ liệu

  • Thông thường, dải IP của Cloudflare hoạt động theo anycast, nên người dùng không thể trực tiếp yêu cầu kết nối TCP tới một trung tâm dữ liệu cụ thể
  • Dựa trên một bài đăng diễn đàn cộng đồng cho thấy có thể lách bằng cách dùng Cloudflare Workers và dải IP nội bộ của Cloudflare WARP để gửi yêu cầu HTTP tới trung tâm dữ liệu cụ thể, công cụ Cloudflare Teleport đã được tạo ra
  • Cloudflare Teleport là công cụ proxy dựa trên Cloudflare Workers, cho phép gửi yêu cầu tới trung tâm dữ liệu mong muốn bằng cách chỉ định giá trị colo
    • Ví dụ có thể dùng mã như SEA để chỉ trung tâm dữ liệu Seattle
    • Thông tin ánh xạ giữa các dải IP cụ thể và trung tâm dữ liệu được sắp xếp dưới dạng colos.json
  • Sau đó Cloudflare đã vá hoàn toàn lỗi này và công cụ Teleport không còn hoạt động theo cách đó nữa

Chứng minh khái niệm bằng favicon của Namecheap

  • Ở lần kiểm chứng đầu tiên, favicon.ico của Namecheap được sử dụng
  • Tài nguyên này là một ảnh tĩnh đơn giản có bật cache Cloudflare, và được chọn làm đối tượng thử nghiệm vì cơ chế chống bot không quá nghiêm ngặt
  • Công cụ CLI sẽ liệt kê những trung tâm dữ liệu nào đã cache tài nguyên của URL được chỉ định cùng với tuổi cache
  • Namecheap đặt tuổi cache rất thấp, chỉ 5 phút, nhưng vẫn có thể xác nhận những trung tâm dữ liệu đã cache favicon trong 5 phút gần nhất
  • Trình duyệt tự động tải favicon khi mở trang, nên kết quả này là một chứng minh khái niệm cho thấy trong 5 phút gần đây đã có người dùng ở nhiều khu vực truy cập Namecheap.com

Áp dụng với Signal

  • Signal dùng hai CDN để phân phối nội dung
    • cdn.signal.org: dựa trên CloudFront, dùng cho avatar hồ sơ
    • cdn2.signal.org: dựa trên Cloudflare, dùng cho tệp đính kèm tin nhắn
  • Đường dẫn https://cdn2.signal.org/attachments/* được cấu hình cache Cloudflare, nên khi thiết bị nhận tệp đính kèm tải nó xuống, nội dung có thể được cache tại trung tâm dữ liệu gần đó
  • Cách 1-click

    • Khi người dùng gửi tệp đính kèm trên Signal, tệp sẽ được tải lên cdn2.signal.org
    • Khi người nhận mở cuộc trò chuyện, thiết bị sẽ tự động tải tệp đính kèm xuống, và có thể dùng phương pháp suy đoán địa lý từ cache Cloudflare để thu hẹp vị trí người nhận
    • Trong thử nghiệm, nhóm nghiên cứu đã gỡ SSL pinning của ứng dụng Signal Desktop và dùng Burp để kiểm tra yêu cầu cùng phản hồi
    • Nếu thiết bị của kẻ tấn công tải tệp đính kèm trước, cache có thể xuất hiện ở trung tâm dữ liệu gần kẻ tấn công và làm nhiễu kết quả, nên phía ứng dụng Signal của kẻ tấn công đã chặn các yêu cầu GET tới cdn2.signal.org/attachments/*
    • Trong thử nghiệm tự nhắm vào chính mình ở New York, trung tâm dữ liệu EWR tại Newark, NJ đã được xác nhận, cách tọa độ thực tế khoảng 150 dặm
  • Cách 0-click

    • Ứng dụng Signal trên di động mặc định bao gồm người gửi và nội dung tin nhắn trong thông báo đẩy
    • Với tin nhắn có ảnh đính kèm, thiết bị sẽ tải ảnh từ CDN của Signal để hiển thị ở bên phải thông báo
    • Ngay cả khi mục tiêu không mở cuộc trò chuyện Signal, chỉ cần thông báo đẩy tới là ảnh đính kèm có thể đã bị tải xuống, và trong quá trình đó cache sẽ được tạo ở trung tâm dữ liệu Cloudflare gần mục tiêu
    • Cách này dẫn tới một cuộc tấn công 0-click suy ra vị trí hiện tại mà không cần bất kỳ tương tác nào của người dùng
    • Vì Signal là dịch vụ được nhà báo, nhà hoạt động và người tố giác sử dụng, nguy cơ bị lạm dụng gồm theo dõi tài khoản, liên kết danh tính, hoặc suy ra vị trí nhân viên gặp gỡ nhà báo

Áp dụng với Discord

  • Discord cũng được xác nhận là ứng dụng dễ bị kiểu tấn công tương tự do các tài nguyên CDN có bật cache Cloudflare
  • Với cách 1-click, emoji tùy chỉnh dành cho người đăng ký Nitro có thể được tận dụng
    • Emoji tùy chỉnh được tải từ Discord CDN
    • Chúng có thể hiển thị ở nhiều nơi như tin nhắn, trạng thái người dùng, kênh, v.v.
    • Kẻ tấn công có thể đặt emoji tùy chỉnh trong trạng thái người dùng và chờ mục tiêu mở hồ sơ
  • Toàn bộ báo cáo HackerOne gửi Discord được công bố trong một Gist riêng
  • 0-click dùng thông báo yêu cầu kết bạn

    • Thông báo đẩy trên Discord di động không chỉ được gửi cho tin nhắn mà còn cho nhiều sự kiện khác
    • Khi gửi yêu cầu kết bạn, thiết bị di động của mục tiêu sẽ nhận được thông báo đẩy
    • Ngay cả khi mục tiêu đang dùng Discord, thông báo yêu cầu kết bạn vẫn luôn được gửi tới thiết bị di động
    • Thông báo yêu cầu kết bạn chứa URL avatar của người gửi yêu cầu, và điện thoại sẽ tải avatar này xuống để hiển thị trong thông báo mà không cần tương tác người dùng
    • Định dạng URL avatar của Discord thay đổi tùy ngữ cảnh
    • Thông báo đẩy: https://cdn.discordapp.com/avatars/{user_id}/{avatar_hash}
    • Hiển thị trên website: https://cdn.discordapp.com/avatars/{user_id}/{avatar_hash}.png
    • Hai URL này trỏ tới cùng một ảnh nhưng do đường dẫn khác nhau nên được cache riêng, nhờ đó có thể phân biệt cache được tạo bởi thông báo đẩy với cache phát sinh khi hiển thị hồ sơ trong ứng dụng
  • Tự động hóa bằng GeoGuesser

    • Quy trình tấn công 0-click trên Discord được tự động hóa bằng bot Discord riêng tư GeoGuesser
    • Bot nhận tên người dùng bằng một lệnh duy nhất rồi thực hiện các bước sau
      • Dùng thông tin xác thực tài khoản qua Discord User API
      • Đổi avatar người dùng sang ảnh ngẫu nhiên để tạo hash avatar mới
      • Gửi yêu cầu kết bạn tới người dùng được chỉ định
      • Thực hiện tấn công liệt kê cache thông qua API riêng tư dựa trên CLI Cloudflare Teleport
      • Hiển thị kết quả trong Discord trong chưa đầy 30 giây
    • Trong màn trình diễn nhắm vào CTO Discord Stanislav Vishnevskiy, hai trung tâm dữ liệu Cloudflare được xác định là đã cache avatar
    • Có thể có hai trung tâm dữ liệu vì nhiều thiết bị cùng nhận thông báo, hoặc vì yêu cầu từ cùng một thiết bị được cân bằng tải tới các trung tâm dữ liệu khác nhau
    • GeoGuesser dùng Google Maps API để tính trung điểm giữa hai trung tâm dữ liệu và vẽ vòng tròn bán kính
    • Trên bản đồ trình diễn, trụ sở Discord ở San Francisco, CA nằm trong vòng tròn ngoài, còn vị trí thực tế được ước tính gần rìa vòng tròn trong với sai số khoảng 300 dặm
    • Toàn bộ quá trình kết thúc trong chưa đầy 1 phút và cuộc tấn công gần như rất khó bị phát hiện

Bug bounty và phản ứng của các bên

  • Signal lập tức bác bỏ báo cáo và cho rằng họ chưa từng cố gắng tái tạo hoàn toàn các tính năng ẩn danh ở tầng mạng như WireGuard, Tor hay phần mềm VPN mã nguồn mở
  • Phản biện gửi Signal dựa trên việc Signal được tiếp thị là nền tảng liên lạc ưu tiên quyền riêng tư, và người dùng kỳ vọng việc giảm thiểu rủi ro quyền riêng tư vượt ra ngoài mã hóa đầu cuối
  • Telegram được nêu như một ví dụ không dễ bị ảnh hưởng bởi cuộc tấn công này
    • Telegram dùng giao thức riêng không phụ thuộc vào HTTP
    • Không dựa vào cache của nhà cung cấp đám mây như Cloudflare
  • Ban đầu đội ngũ bảo mật Discord nói sẽ xem xét thay đổi để bảo vệ người dùng, nhưng sau đó chuyển sang quan điểm đây là vấn đề của Cloudflare và các khách hàng Cloudflare khác cũng bị ảnh hưởng
  • Cloudflare đã vá lỗi mà Cloudflare Teleport dùng để duyệt qua các trung tâm dữ liệu
    • Lỗi này đã được một người báo cáo khác gửi lên HackerOne từ một năm trước, nhưng khi đó được đánh giá là không có tác động
    • Sau khi nghiên cứu lần này được chia sẻ, Cloudflare đã mở lại báo cáo cũ và xử lý, đồng thời trao bounty 200 USD cho cả người báo cáo trước đó lẫn báo cáo lần này

Vấn đề còn lại sau bản vá

  • Điều Cloudflare vá là lỗi cho phép duyệt qua các trung tâm dữ liệu từ mạng nội bộ, còn điều kiện cốt lõi của việc suy đoán vị trí dựa trên cache thì không biến mất
  • Tác giả cho biết ngay cả sau bản vá, các cuộc tấn công nêu trong bài vẫn đã được thực hiện trong vòng 24 giờ gần đây
  • Cloudflare Teleport đã được triển khai lại theo cách dựa trên VPN chỉ 24 giờ sau khi bản vá được phát hành
  • Nhà cung cấp VPN được chọn có hơn 3.000 máy chủ tại 31 quốc gia
  • Bằng cách này, có thể truy cập lại khoảng 54% tổng số trung tâm dữ liệu Cloudflare, được cho là đủ bao phủ phần lớn các khu vực đông dân cư
  • Quan điểm cuối cùng của Cloudflare là họ không xem cuộc tấn công giải ẩn danh này là lỗ hổng trong hệ thống của mình, và việc tắt cache cho các tài nguyên cần bảo vệ là trách nhiệm của khách hàng
  • Các khách hàng như Discord cho rằng đây là trách nhiệm của Cloudflare, trong khi Cloudflare nói khách hàng phải tự điều chỉnh cache, dẫn đến ranh giới trách nhiệm bị chia tách

Bảo vệ và hàm ý thực tiễn

  • Cuộc tấn công này cho thấy các tính năng phục vụ hiệu năng và trải nghiệm như cache và thông báo đẩy có thể bị lạm dụng thành công cụ theo dõi khi kết hợp với nhau
  • Lỗi Cloudflare Teleport đã được vá, và một số ứng dụng như Signal hay Discord có thể đã triển khai biện pháp giảm thiểu sau khi công khai, nhưng rủi ro nền tảng vẫn còn
  • Các ứng dụng phân phối nội dung qua CDN và dùng cache có thể dễ bị cùng kiểu tấn công nếu không có biện pháp thận trọng phù hợp
  • Với các tài nguyên cần bảo vệ, cần cân nhắc đồng thời chính sách cache CDN, hình ảnh được tự động tải trong thông báo đẩy, và cách cache hoạt động với các URL riêng cho từng người dùng
  • Nhà báo, nhà hoạt động, hacker và những người nhạy cảm về quyền riêng tư cần nhận thức rằng thông báo ứng dụng và việc tự động tải tài nguyên bên ngoài có thể dẫn tới lộ vị trí

1 bình luận

 
GN⁺ 2025-01-22
Các ý kiến trên Hacker News
  • Nếu gửi ảnh cho người dùng Signal, ảnh sẽ được lấy qua Cloudflare và được lưu cache tại trung tâm dữ liệu gần người dùng đó. Sau đó có thể truy vấn trạng thái cache để biết trung tâm dữ liệu nào đã được sử dụng.
    Trừ khi người dùng ở vùng hẻo lánh, gọi đây là giải ẩn danh có vẻ hơi phóng đại, nhưng dù sao đây vẫn là một bài viết thú vị.

    • Việc “gần người dùng” cũng là một giả định lớn. Trường hợp của tôi, tôi cách ORD khoảng 200 dặm và cách IAD khoảng 500 dặm, nhưng do peering của ISP và cấu trúc mạng upstream, Cloudflare xử lý lưu lượng ở DFW, cách 700 dặm.
      Dù vậy, Cloudflare cũng sẽ không hit cache ở Seattle, Manchester hay Tokyo, nên chỉ riêng việc thu hẹp một người dùng Signal chưa biết xuống vị trí địa lý tương đối cũng trở thành metadata quan trọng, có thể được kết hợp để lộ danh tính cá nhân. Một cuộc tấn công rất hay.
    • Sẽ còn thú vị hơn khi nghĩ đến tác động với nhóm. Chỉ cần gửi một hình ảnh vào nhóm, tất cả thiết bị trong nhóm đó sẽ có thể bị nhận diện từ phía Cloudflare, đồng thời họ cũng thấy lượng lớn lưu lượng không mã hóa mà cùng địa chỉ client đó gửi tới các website khác.
      Cloudflare có thể thấy một lượng metadata khổng lồ trong các cuộc trò chuyện riêng tư và nhóm; nhờ kích thước file, họ có thể theo dõi ai đã gửi media gốc, ai đã đọc, đọc lúc nào, ai đã chuyển tiếp và chuyển tiếp cho ai. Ngay cả khi không nhìn trực tiếp được hình ảnh hay video, chỉ cần biết trước kích thước hoặc biết về sau, chẳng hạn qua yêu cầu của cơ quan thực thi pháp luật, là đủ.
    • Nó có thể hữu ích cho phân tích tương quan. Ví dụ, nếu có một điều tra viên thường xuyên liên lạc với ai đó, một điểm dữ liệu đơn lẻ không có ý nghĩa, nhưng lịch sử tải ảnh diễn ra hằng ngày có thể gợi ý rằng người đó dành 90% thời gian ở WA và 10% ở nơi khác.
      Chỉ riêng thông tin đó vẫn chưa đủ, nhưng nếu đã có một nghi phạm cụ thể thì nó giúp xác minh. Nếu có thể tiếp cận trực tiếp người bị nghi ngờ và cũng kết bạn được với hồ sơ “sạch” của người đó, có thể dùng cùng kỹ thuật để đối chiếu hai hồ sơ vị trí. Giải ẩn danh không phải là một mẩu thông tin đơn lẻ, mà là quá trình trong đó mọi thông tin đều được thêm vào hồ sơ nhằm thu hẹp nghi phạm hoặc xác nhận nghi vấn.
      Ở đây “điều tra viên” nghĩa là người bình thường, không phải AI agent hay cơ quan thực thi pháp luật. Nếu là cơ quan thực thi pháp luật thì có lẽ họ có thể lấy thông tin trực tiếp hơn từ Cloudflare.
    • Không hề phóng đại. Khi nhận tin nhắn trên Signal, người ta kỳ vọng rằng các khía cạnh có thể quan sát được của địa chỉ IP hoặc vị trí sẽ không bị lộ.
      Việc mức độ và kiểu giải ẩn danh cụ thể này có gây vấn đề cho use case của bạn hay không là một câu hỏi khác. Cá nhân tôi không quá bận tâm nếu các liên hệ hai chiều nhìn thấy thẳng địa chỉ IP của tôi, nhưng không phải người dùng nào cũng vậy.
    • “Giải ẩn danh” không nhất thiết phải có nghĩa là biết chính xác địa chỉ nhà. Có những người muốn che giấu quốc gia hoặc khu vực mình đang sống, và cuộc tấn công này làm suy yếu điều đó.
      Trong cuộc điều tra Silk Road, thông tin ở mức như vậy thực sự quan trọng. Ban đầu Ulbricht đã mắc lỗi làm lộ múi giờ, nhờ đó nhà chức trách Mỹ có thể thu hẹp anh ta thành một người ở Mỹ. Nếu không có thông tin đó, anh ta có thể đã ở bất cứ đâu trên thế giới.
  • Đây là một bài viết hay với kỹ thuật và cách tiếp cận thú vị.
    Tuy nhiên các cụm như “giải ẩn danh” hay “lấy vị trí người dùng” có phần phóng đại. Nó còn rất xa so với vị trí chính xác; 150 dặm là khoảng cách khoảng 2 giờ chạy cao tốc từ Atlanta, GA đến Augusta, GA. Trong bán kính đó có lẽ có hơn 700.000 người.
    Tính năng tự động lấy file đính kèm của Signal hơi đáng lo. Với một trình nhắn tin riêng tư, tôi đã kỳ vọng có tùy chọn tắt nó giống như tắt JavaScript trên Tor; có thể tôi chưa tìm đủ sâu, nhưng tôi không thấy tính năng như vậy.
    Có vẻ Signal chọn cách tiếp cận “hữu ích mặc định”, cân bằng giữa quyền riêng tư và tính dễ dùng để đạt mức phổ biến rộng rãi. Người dùng thật sự lo ngại có lẽ đang harden Signal theo các hướng dẫn như https://www.privacyguides.org/articles/2022/07/07/signal-con.... Với các kịch bản rủi ro cao, VPN/proxy và thay đổi cấu hình vẫn luôn được khuyến nghị.
    Caching và CloudFlare sẽ không biến mất. Mối đe dọa DDoS trong các lobby multiplayer P2P ngày trước, nơi IP bị lộ, trông còn lớn hơn chuyện này; và trong các bên thứ ba, phản ứng của CloudFlare có vẻ là tốt nhất. Nguyên tắc là không cache thông tin nhạy cảm, và trách nhiệm báo cho CDN hoặc dịch vụ trung gian rằng không được cache một mục cụ thể thuộc về ứng dụng đang giao tiếp.

    • Rất dễ nghĩ như vậy, nhưng nó nhanh chóng được kết hợp với những mẩu thông tin nhỏ mà mọi người chia sẻ. Những thông tin vụn vặt như “tôi lái xe 15 phút đến Starbucks” tích lũy theo thời gian có thể dẫn đến vị trí chính xác.
    • Có thể tắt tải xuống tự động. Trong Settings > Data and storage > Media auto-download, bạn có thể chọn nội dung tự động tải xuống riêng cho dữ liệu di động, Wi‑Fi và roaming.
    • Một điểm nhỏ riêng biệt: trong vòng tròn bán kính 100 km giữa Atlanta và Augusta có khoảng 2 triệu người. Tính bằng https://www.tomforth.co.uk/circlepopulations/.
  • Hay thật. Không như một số trường hợp khác, cái này chắc chắn có thể được xem là giải ẩn danh, hoặc ít nhất là rất gần với điều đó. Nếu có thể biết vị trí của Satoshi trong phạm vi 250 dặm, liệu ông ấy còn ẩn danh được đến mức nào cho tới nay?
    Nếu áp dụng cuộc tấn công này lặp đi lặp lại, bằng cách nào đó che giấu nó đi, có thể theo dõi việc di chuyển theo thời gian. Thường chỉ cần 4–5 vị trí cỡ mã bưu chính là đã có thể định danh duy nhất một người

    • Phản biện là nếu ai đó quan tâm đến tính ẩn danh, họ sẽ đang che giấu danh tính theo cách không bị cuộc tấn công này phá vỡ, chẳng hạn dùng VPN. Hơn nữa còn có những cuộc tấn công hiệu quả hơn nhiều, như gửi một liên kết tới endpoint do mình trực tiếp kiểm soát. Nếu mối quan hệ đủ tin cậy để gửi thông báo, thì dụ người dùng nhấp liên kết không khó. Cũng có những cách ít kỹ thuật hơn, như đối chiếu thời điểm người dùng online/offline với các múi giờ trên thế giới
      Cách Apple và Cloudflare dùng trong phần mềm bảo vệ quyền riêng tư của họ cũng dựa trên ý tưởng rằng khu vực địa lý không phải là thông tin làm lộ danh tính. iCloud Private Relay của Apple hay WARP của Cloudflare là như vậy; khi bật Apple Private Relay, IP gốc bị ẩn nhưng IP mà lưu lượng được định tuyến qua vẫn ở cùng quốc gia
      https://www.apple.com/icloud/docs/iCloud_Private_Relay_Overv...
      Cuộc tấn công này thú vị và mới mẻ về mặt học thuật, nhưng không phải là “giải ẩn danh”
    • Địa chỉ IP nhà riêng có vẻ là của Satoshi thực ra đã bị rò rỉ ngay sau khi Bitcoin ra mắt, nhưng mãi nhiều năm sau mới được nhận ra
      Tất nhiên có thể đó không phải ông ấy mà chỉ là một người dùng ban đầu ngẫu nhiên. Dù vậy tôi nghĩ vẫn có một khả năng nhất định là ông ấy
      Chi tiết: https://news.ycombinator.com/item?id=29728339
      Tôi không ủng hộ việc cố tìm và công khai tên, địa chỉ của ông ấy, vì điều đó có thể khiến cuộc sống của ông ấy khó khăn. Nhưng xét một cách trừu tượng, đây vẫn là một bí ẩn rất thú vị vì đã có vô số con mắt dõi theo trong nhiều năm mà vẫn chưa được giải
    • Có bao nhiêu người sống trong vòng tròn bán kính 250 dặm quanh New York?
    • Với hầu như tất cả các ứng dụng kiểu này, bạn vốn đã có thể làm điều tương tự bằng ID quảng cáo
    • Vẫn khá ẩn danh. Gần như chắc chắn ông ấy đã dùng VPN, và ngay cả nếu không, nhiều khả năng ông ấy sống ở một đô thị lớn có từ hàng nghìn đến hàng trăm nghìn kỹ sư giỏi. Việc một tin nhắn nào đó cho thấy ông ấy ở SF đúng nghĩa là chẳng cho biết gì cả
  • Tôi không hiểu vì sao nhiều bình luận hàng đầu lại xem nhẹ mức độ nghiêm trọng như vậy. Đây chính xác là kiểu tấn công cho phép cơ quan thực thi pháp luật hoặc tác nhân độc hại dựng lên bằng chứng về nơi hiện diện

    • Một số người có vẻ ghen tị với tuổi của cậu ấy, một số khác cho rằng gọi là giải ẩn danh là phóng đại vì trừ những trường hợp cực kỳ đặc thù, nó không cung cấp đủ thông tin để tìm ra một người. “Cuộc tấn công” này dễ bị vô hiệu hóa nếu dùng VPN hoặc sống ở thành phố lớn
    • Tôi nghĩ nhiều người xem nhẹ vì cách bài gốc mô tả mức độ nghiêm trọng có vẻ bị thổi phồng. Có vẻ nhiều phản ứng cân bằng là “phát hiện xuất sắc, nhưng không chí mạng như tuyên bố”, và phân loại mức độ nghiêm trọng của vấn đề cần phải chính xác
      Chứng minh nơi hiện diện không phải là giải ẩn danh, nhất là khi “nơi hiện diện” đó rộng như thế này
    • Chỉ cần biết được quốc gia bằng cách này đã là một bước đầu lớn
    • Người ta phớt lờ nó vì cùng lý do họ phớt lờ các công nghệ mới mang tính phá vỡ: vì nó gây khó chịu. Đó là dấu hiệu cho thấy mối đe dọa rất thực tế
      Trước tiên cứ thử phớt lờ, rồi xem sáng mai vấn đề còn đó không. Cho tới lúc đó, họ hy vọng ai đó sẽ tìm ra lý do vì sao đây không phải là vấn đề
  • Vì sao Signal lại bật cache cho các URL đó? Trường hợp phổ biến nhất hẳn là tệp đính kèm được tải xuống một lần rồi thôi
    Tôi còn kỳ vọng họ sẽ không cho tải xuống quá một lần, và xóa ngay sau lần tải thành công đầu tiên. Tất nhiên client có thể thất bại giữa chừng nên có thể có một khoảng ân hạn để tải lại. Nhưng tôi không nghĩ đó là trường hợp phổ biến, và hy vọng việc tắt CDN cache có thể sửa vấn đề này mà không làm chi phí tăng đáng kể
    Dù sao thì ở đây “giải ẩn danh” hơi mang tính câu kéo. Thu hẹp vị trí của ai đó xuống trong khoảng 250 dặm là không hay, nhưng không giải ẩn danh người đó
    Sửa: Tôi đã không nghĩ đến trường hợp tệp đính kèm được gửi trong chat nhóm và nhiều người tải xuống. Nhưng ngay cả trong trường hợp đó, chẳng phải tệp đính kèm được mã hóa riêng cho từng người trong nhóm sao? Tất nhiên tôi không rõ thực tế nó hoạt động thế nào

    • Thiết lập mặc định của Signal tập trung nhiều hơn vào tính khả dụng trong khi hỗ trợ mã hóa đầu cuối, và ít tập trung hơn vào mô hình đe dọa quá mức là che giấu cả việc bạn đang có mặt trên lục địa nơi mình có quyền công dân
      Những mục bạn nhắc tới thực ra có thể được cấu hình bởi người muốn mức quyền riêng tư/bảo mật điên rồ như vậy. Có thể đặt tin nhắn tự động xóa 30 giây sau khi xem, cấu hình để định tuyến toàn bộ lưu lượng qua proxy, và còn nhiều tùy chỉnh khác theo sở thích người dùng
      Lý do cache có lẽ là chi phí truyền tải. Tệp đính kèm, tin nhắn thoại, video, v.v. cộng dồn lại sẽ rất lớn
    • Cũng có thể là vì chat nhóm và người dùng nhiều thiết bị
  • Đây chính là cậu 15 tuổi đã tìm ra lỗ hổng chiếm đoạt Zendesk Slack vài tháng trước [1]
    [1]: https://news.ycombinator.com/item?id=41818459

  • Chắc chắn đây là một “cuộc tấn công”, nhưng không phải kiểu mà người ta thường nghĩ đến khi nói zero-click. Không có thực thi mã; cách làm là dùng vài thủ thuật để biết trung tâm dữ liệu Cloudflare nào đã cache hình ảnh, từ đó suy ra khu vực rất sơ bộ của người dùng
    Dù vậy vẫn rất ấn tượng và sâu sắc

    • Tùy tình huống, chỉ khu vực sơ bộ cũng có thể hữu ích với kẻ thù của một người đang ẩn náu. Những nhóm như tội phạm có lẽ sẽ không bị ảnh hưởng nặng bởi cách này, và 300 dặm là một bán kính lớn. Nhưng nếu muốn biết “người đó còn ở trong nước hay không” chẳng hạn, thì nó có thể hữu ích cho cơ quan thực thi pháp luật
      Những bên đó có thể phối hợp với nguồn lực địa phương để điều tra thêm. Chỉ riêng việc biết nên huy động nguồn lực nào ở khu vực nào cũng có thể tiết kiệm rất nhiều chi phí
      Như đã nói, rất ấn tượng và sâu sắc. Tài liệu có cảm giác hơi được ChatGPT hỗ trợ, với nhiều câu rất rõ ràng và cụ thể. Với mục đích này thì đó là một ca sử dụng tuyệt vời, nên không phải lời chê. Bài viết hay
  • Nếu tôi không bỏ sót điều gì, thì đây có vẻ là một cách rất dài dòng để xác định vị trí IP của người dùng
    Ví dụ, sau khi kết nối VPN rồi kiểm tra https://cloudflare.com/cdn-cgi/trace thì thấy colo:CPH (Copenhagen), nơi này cách khá xa trung tâm dữ liệu CF gần tôi nhất về mặt địa lý, và gần vị trí IP của nhà cung cấp VPN ở Oslo hơn, nhưng cũng không hẳn là gần
    Nếu không dùng VPN, nó thậm chí không trả về thủ đô của quốc gia nơi tôi đang ở, mà là một trung tâm dữ liệu cách khoảng 250 dặm về phía bắc. Vì vậy tôi cũng khó đồng ý với việc Cloudflare luôn trả về “trung tâm dữ liệu khả dụng gần nhất”
    Bản thân bài viết rất hay và rõ ràng là thú vị, nhưng tôi không chắc về tính hữu dụng thực tế

    • kém chính xác hơn việc xác định vị trí IP của người dùng. Geocoding IP trong nhiều trường hợp có thể xuống tới cấp thành phố. Cách này cùng lắm chỉ cho biết trung tâm dữ liệu Cloudflare gần nhất
    • Chỉ một điểm dữ liệu thì kết quả có lẽ không có nhiều ý nghĩa
      Tính hữu dụng thực tế và rủi ro tiềm tàng xuất hiện khi dữ liệu này được kết hợp với dữ liệu khác. Kỹ thuật giải ẩn danh bằng các tập dữ liệu thưa đã là một lĩnh vực nghiên cứu sôi động trong ít nhất 15 năm, và mọi người thường ngạc nhiên trước việc có thể suy ra được bao nhiêu từ vài mẩu dữ liệu tưởng như không liên quan
    • Bạn không tin rằng cần bảo vệ vị trí IP của người dùng sao?
      Có lý do mà các ứng dụng bỏ ra nhiều công sức để proxy các yêu cầu tài nguyên như hình ảnh. Việc đó không miễn phí
    • Việc những người có thể gửi tin nhắn cho bạn trên Signal không thấy địa chỉ IP của bạn là một kỳ vọng quyền riêng tư khá hợp lý
    • Có thể hữu ích để truy dấu các nhà bất đồng chính trị đang chạy trốn, khủng bố, v.v. Nếu có thể thu hẹp vị trí xuống còn 250 dặm thì đó đã là thông tin rất hữu ích, lại không gây nghi ngờ
  • Lợi ích của việc cache ảnh trên CDN trong Signal là gì?
    Giả sử có cache ở client cục bộ, tổng số yêu cầu đến tài nguyên đó hẳn phải rất nhỏ, và trong phần lớn trường hợp có lẽ chỉ là một lần
    Riêng CloudFront có vẻ có thể sửa vấn đề này rất dễ bằng cách không trả về header cf-ray, hoặc cung cấp tùy chọn cho khách hàng loại bỏ nó. Tuy nhiên có thể vẫn suy ra được bằng thông tin thời gian

    • Đây không hẳn là cache mà là sử dụng CDN. Việc CDN hoạt động như cache của nội dung gốc là tác dụng phụ của CDN; nó cache ở máy chủ gần nhất theo tiêu chí thời gian phản hồi để cải thiện thời gian phản hồi khi phân phối
      Ở đây “gần” là một heuristic xấp xỉ, và là thuộc tính của bảng định tuyến anycast trên các router BGP mà yêu cầu đi qua. Trên thực tế nó gần với “đường đi tối ưu” hơn
    • Dù bỏ header cf-ray, chỉ cần nhìn thời gian phản hồi là được. Nếu phải lấy tài nguyên từ lục địa khác thì có lẽ có thể đo khá ổn định
      Các website muốn che giấu việc một người dùng có tồn tại hay không cũng tương tự. Nếu gửi yêu cầu đăng nhập với username tồn tại, hệ thống sẽ thực hiện băm mật khẩu nên thời gian phản hồi thường tăng ít nhất 50ms; còn username không tồn tại thì thoát sớm. Cách khắc phục là luôn chạy cùng một đoạn mã và luôn thực hiện băm, nhưng rất ít site làm vậy. Hoặc nếu phù hợp với threat model thì có thể báo ngay rằng username không tồn tại
      Quay lại trường hợp Cloudflare, nếu không trì hoãn phản hồi thì việc đó không giúp gì. Nhưng trì hoãn phản hồi lại trái ngược với việc Cloudflare cần làm
    • Tôi không nghĩ ứng dụng Signal hay mạng của Signal chủ động chọn cache ảnh trên CDN
      “Cuộc tấn công” ở đây chẳng phải là bất kỳ người dùng nào cũng có thể gửi cho người dùng khác một tin nhắn chứa liên kết tài nguyên đã được cache trên CDN sao? Có thể tôi đã hiểu nhầm
    • Cloudflare nên cho phép khách hàng vô hiệu hóa header đó, và Signal không nên cache các ảnh gửi cho một người hoặc gửi vào nhóm dưới vài trăm người
    • Nói về việc tổng số yêu cầu đến tài nguyên đó nhỏ, một con số khác là số yêu cầu “đến máy chủ đó
  • Tôi hơi không hiểu. Đã từng có ai coi Signal là ẩn danh chưa? Discord cũng vậy. Nếu thế thì có tin xấu đây. Cả hai đều không ẩn danh, hoàn toàn không, không hề ẩn danh chút nào
    Họ cũng chưa từng tuyên bố như vậy. Signal chỉ tuyên bố rằng họ không thể đọc tin nhắn. Discord thì tôi không rõ và thấy đáng ngờ. Ngay cả tuyên bố đó cũng có lỗ hổng. Dù mật mã học có vững chắc, bạn đã rà soát kỹ phiên bản đang dùng và tự biên dịch nó chưa?
    Cùng lắm chỉ là giả danh tính yếu. Việc một ứng dụng hy sinh một phần bảo mật vì sự tiện lợi của người dùng mặc định tải media luôn là chuyện phổ biến, và trong mô hình đe dọa thông thường thì đó là lựa chọn chấp nhận được. Nhúng media vào tin nhắn cũng luôn là chiêu kinh điển cho các cuộc tấn công giải ẩn danh
    Rốt cuộc, điều này chỉ cho thấy pixel theo dõi đến nay vẫn là một kỹ thuật hiệu quả; hay đấy, nhưng không bất ngờ
    Nếu muốn giữ ẩn danh, bạn không nên dùng Discord hay Signal, và tôi cũng không khuyên viết bài trên HN. Có lẽ nếu thông qua Whonix, dùng tài khoản dùng một lần, không JavaScript, rồi tự động dán vào các thời điểm ngẫu nhiên những tin nhắn đã được LLM cục bộ viết lại thì có thể còn chút cơ hội. Dù vậy cũng đừng chắc chắn
    Tính ẩn danh không còn tồn tại nữa

    • Tôi hiện đang bị chặn trên subreddit Signal vì đã chỉ ra rằng việc Signal không thu thập siêu dữ liệu chỉ là tin lời Signal nói. Vì vậy mọi người thực sự xem Signal là ẩn danh
    • Mọi người dùng Signal và Telegram* trong những môi trường mà tính ẩn danh là quan trọng. Tất nhiên chúng không phải công cụ cho mục đích đó, nhưng không có giải pháp nào khác được hiểu rộng rãi, và trong đa số trường hợp như vậy là đủ với họ
      • Điều thú vị là lần này Telegram dùng giao thức riêng nên không bị ảnh hưởng bởi lỗ hổng, nhưng điều đó có khi còn tệ hơn
    • Mọi người cứ quên rằng ẩn danhbảo vệ quyền riêng tư là hai thứ khác nhau