Tấn công giải ẩn danh 0-click nhắm vào các nền tảng như Signal, Discord
(gist.github.com/hackermondev)- 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.orgvà thô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-statushiển thịHIThoặcMISScf-raychứ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
- Ví dụ có thể dùng mã như
- 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.icocủ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
EWRtại Newark, NJ đã được xác nhận, cách tọa độ thực tế khoảng 150 dặm
- Khi người dùng gửi tệp đính kèm trên Signal, tệp sẽ được tải lên
-
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
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ị.
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.
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à đủ.
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.
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.
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.
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
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”
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
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
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
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
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
Đâ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
Báo cáo lỗi gửi cho Adobe đó nghĩa là được viết khi cậu ấy năm tuổi: https://hackerone.com/daniel?type=user
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
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ầnNế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ế
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
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í
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 “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
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 địnhCá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
“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
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