1 điểm bởi GN⁺ 2025-06-10 | 1 bình luận | Chia sẻ qua WhatsApp
  • Người vận hành FSE đã truy vết các người dùng bất hợp pháp đổ vào một instance fediverse, rồi tổng hợp bằng log và email một chuỗi diễn biến dẫn tới việc scraping của BoardReader/SocialGist và yêu cầu cung cấp thông tin từ FBI
  • Điểm khởi đầu của vấn đề là kết quả tìm kiếm BoardReader khiến cả bài đăng từ máy chủ bên ngoài trông như bài đăng của FSE; người vận hành cho rằng điều này vừa kéo theo dòng người dùng bất hợp pháp, vừa gây gán nguồn sai
  • BoardReader che giấu User-Agent, dùng proxy dân cư, Tor, phát lại phiên trình duyệt và scrape /api/v1/timelines/public?local=false; ngay cả sau khi bị chặn vẫn lặp lại yêu cầu, làm tăng tải máy chủ và chi phí
  • Ngày 14/3/2023, FBI gửi Emergency Disclosure Request liên quan đến WitchKingOfAngmar, nhưng tài khoản đó là người dùng của sneed.social chứ không phải FSE, và ảnh chụp màn hình đính kèm cũng không phải giao diện FSE
  • Người vận hành đã làm ô nhiễm chỉ mục BoardReader bằng timeline giả, sau đó quan sát thấy một cụm từ cụ thể gây bùng nổ yêu cầu từ Facebook; ông cho rằng bài viết năm 2024 về Torswats đã ghép nối được một phần bối cảnh về mối quan tâm của FBI

Cuộc truy vết bắt đầu từ dòng người dùng bất hợp pháp

  • Người vận hành FSE xem việc người dùng liên quan đến ấu dâm đi vào máy chủ là mối đe dọa tồn vong đối với FSE
    • Việc tải lên tài liệu bóc lột tình dục trẻ em bất hợp pháp, sự chú ý của cơ quan thực thi pháp luật, và khả năng thiết bị bị tịch thu là các rủi ro trực tiếp
    • Ông cho rằng một số người dùng hành động bằng cách rải nội dung bất hợp pháp lên nhiều site rồi kiểm tra tài khoản nào không bị chặn
  • Ông cố gắng công khai các thông tin có thể có như IP, email, User-Agent để răn đe, nhưng hiệu quả không lớn
    • Nhiều người dường như tải tệp lên hoặc lấy tệp rồi rời đi, theo mô thức đi tìm nơi không bị chặn
  • Khi truy vết đường vào, ông phát hiện header Referer của nhiều người dùng trỏ tới boardreader.com

Cách truy vết bằng log

  • Nền tảng ở đây là để vận hành một instance fedi lộ ra Internet công khai, cần có khả năng tự phân tích bot, scanner, worm và lưu lượng bất thường
  • Việc phân tích log dùng các công cụ như awk, tail -f, mawk -Winteractive, grep, sqlite3, R, sed, sort, psql
    • awk được giới thiệu như một công cụ kiểu SQL cho log văn bản
    • Các công cụ mạng như dig, whois, traceroute, tcpdump, iftop, Shodan, danh sách Tor exit cũng được sử dụng cùng
  • Ông thay đổi định dạng log của web server như nginx để ghi lại header tùy ý, thời gian phản hồi, thời gian phản hồi backend, v.v.
    • Log của FSE được làm gần với định dạng phân tách bằng tab để dễ xử lý bằng awk hoặc các công cụ dạng bảng tính
  • Cả thống kê đơn giản cũng được dùng để phát hiện bất thường
    • Tính trung bình và độ lệch chuẩn của số yêu cầu để tìm IP, endpoint, mô thức yêu cầu đột biến
    • Ở một thời điểm cụ thể, các kết luận như “90% yêu cầu POST đến từ cùng một địa chỉ” được đưa ra theo cách này

Truy vết BoardReader/SocialGist

  • boardreader.com ban đầu là công cụ tìm kiếm diễn đàn, và người vận hành FSE cho rằng site này không hiểu đúng fedi nên đã xem FSE như một diễn đàn duy nhất
    • Theo ông, cả các bài đăng công khai đến từ instance khác cũng bị hiển thị như bài đăng trên diễn đàn freespeechextremist.com
    • SocialGist mô tả mình là đơn vị bán “accessible social data”, và ông cho rằng nội dung blog nói nhà phát triển ở Serbia khớp với IP thực tế
  • Ngày 5/3/2023, log FSE không có bản ghi truy cập rõ ràng của BoardReader, nhưng phát hiện scraping tốc độ cao vào /api/v1/timelines/public?local=false
    • Trình duyệt tự nhận là Chrome, nhưng tốc độ nhanh hơn nhiều so với tốc độ cuộn của con người
    • Có A record từ spider1.boardreader.com đến spider43, nhưng theo ông lưu lượng thực tế khi đó đến từ 45.15.176.187, một IP thuộc sở hữu của DediPath
  • Sau khi chặn IP, nhiều lần thử tiếp tục đến từ IP dân cư ở Mỹ, và người vận hành kết luận BoardReader mua proxy dân cư để né phát hiện
  • Ngày 8/3/2023, ông bắt đầu chặn các yêu cầu dùng token cụ thể bằng awk, iptables và script Ruby
    • Sau đó xuất hiện các yêu cầu từ IP của ISP Serbia dẫn tới devtools.boardreader.com
    • Theo ông, yêu cầu này tải tài nguyên như trình duyệt bình thường, nhận Bearer token, chạy JavaScript, rồi tiếp tục scraping bằng token đó
  • Ông thử trả về các phản hồi 429, 401, 403, 500, nhưng scraper lại lặp yêu cầu nhiều hơn, trên thực tế trở thành DoS
    • Sau đó ông bắt đầu gửi 402 Payment Required, và trong thời gian đó quyền truy cập timeline công khai TWKN bị chặn

Email qua lại với SocialGist

  • Ngày 5/3/2023, người vận hành gửi email đến info@boardreader.com để yêu cầu thông tin về crawler
  • Ngày 13/3/2023, dave@socialgist.com trả lời, hỏi ông muốn biết điều gì
    • Người vận hành yêu cầu chỉ lấy bài đăng cục bộ và dùng User-Agent nhận diện BoardReader
    • Ông gửi toàn bộ dải IP mình sở hữu để yêu cầu dừng crawl, đồng thời thông báo về vấn đề dòng người dùng liên quan đến ấu dâm
  • Dave nói sẽ chuyển cho đội kỹ thuật, nhưng người vận hành cho rằng cùng thời điểm đó nhà phát triển vẫn đang debug scraper
    • Log còn lại yêu cầu từ 109.92.154.188 ngày 13/3/2023 có tham chiếu devtools.boardreader.com
    • Người vận hành kết luận SocialGist nói sẽ dừng nhưng vẫn tiếp tục làm việc để обход qua

Emergency Disclosure Request của FBI

  • Ngày 14/3/2023, người vận hành nhận một email từ địa chỉ fbi.gov với tiêu đề Emergency Disclosure Request
    • Đặc vụ Peter Christenson yêu cầu thông tin thuê bao về người dùng WitchKingOfAngmar
    • Tên tệp đính kèm là FSE Screen Shot.PNG
  • Sau khi kiểm tra header email, log mail server và thông tin SPF của fbi.gov, ông kết luận email đúng là đến từ FBI
  • Ảnh chụp màn hình đính kèm không phải giao diện FSE
    • Nó hiển thị FSE là “forum”, và phía trên có dòng “Forum • Blackrock Executiv...”
    • Các từ khóa như “kill blackrock”, “larry fink” được tô sáng
    • Nó cũng có phân tích cảm xúc đơn giản
    • Bài đăng được viết 26 ngày trước email, nhưng trong ảnh chụp màn hình lại hiện thời gian như “11 hours ago”, “13 hours”
  • WitchKingOfAngmar không phải người dùng FSE mà là người dùng của sneed.social
  • Người vận hành trả lời FBI rằng FSE không có thông tin về người dùng đó, và dù BoardReader đã gắn “Free Speech Extremist” vào, nguồn của bài đăng không phải FSE
    • Đặc vụ FBI hỏi nên hỏi ai, và người vận hành hướng dẫn kiểm tra máy chủ gốc

Dòng chảy được cho là nối từ BoardReader đến Facebook rồi FBI

  • Người vận hành cho rằng FBI và BoardReader làm hỏng Unicode theo cùng một cách, đồng thời trùng hợp ở điểm gán nhầm bài đăng từ máy chủ bên ngoài thành bài đăng FSE
    • Theo ông, các code point Unicode gốc 1f9e2, 1f438, 1f44d bị biến thành ô dấu hỏi biểu thị Unicode không hợp lệ
  • Dựa trên các tình tiết này, ông kết luận FBI đã nhìn dữ liệu BoardReader rồi liên hệ FSE
  • Ngày 15/3/2023, BoardReader vẫn tiếp tục gửi yêu cầu tới FSE và chỉ nhận phản hồi 402
    • Người vận hành đăng một giải thích công khai có giới hạn và chuyển FSE sang trạng thái khóa
    • Không có tài khoản thì không xem được TWKN hay timeline công khai, và đăng ký cũng bị đóng
  • Ngay cả sau ngày 16/3/2023, BoardReader vẫn được cho là cố обход bằng proxy dân cư, Tor và User-Agent thay đổi theo từng yêu cầu

Timeline giả và ô nhiễm dữ liệu

  • Sau ngày 24/3/2023, khi việc scraping của BoardReader và dòng người dùng liên quan đến ấu dâm vẫn tiếp diễn, người vận hành bắt đầu cung cấp timeline giả
  • Ông tạo một CGI script nhỏ để sinh JSON kết hợp các tài khoản không tồn tại với các bài đăng không tồn tại
    • ID ban đầu là số 32-bit ngẫu nhiên, về sau trộn thêm một phần thời điểm yêu cầu để dễ truy vết bên trong BoardReader
    • Vì nginx không hỗ trợ CGI, các yêu cầu tới endpoint đó được chuyển sang lighttpd
    • Việc triển khai chủ yếu được làm bằng awk
  • Danh sách từ trong bài đăng trộn các từ khóa tìm kiếm của BoardReader và danh sách từ liên quan đến CARNIVORE
  • Các bài đăng giả được BoardReader lập chỉ mục, và người vận hành nhập ID ngẫu nhiên vào ô tìm kiếm BoardReader để đối chiếu log web server FSE với các mục trong chỉ mục

Quan sát lưu lượng yêu cầu Facebook bùng nổ

  • Người vận hành xác nhận bằng histogram log rằng Facebook gửi lượng lớn yêu cầu tới URL bài đăng giả
    • Các đoạn có nhiều 4 màu xanh lá/xanh dương là phản hồi 402, và theo ông gần như tất cả đều là yêu cầu từ Facebook
    • URL yêu cầu khớp với bài đăng giả
  • Ông cho rằng ngay sau khi BoardReader lập chỉ mục, Facebook sẽ lấy các bài đăng đó
  • Khi đổi danh sách từ của bài đăng giả chỉ còn “larry fink”, yêu cầu từ Facebook gần như ngay lập tức tăng vọt
    • Khi bỏ cụm từ đó, lưu lượng giảm rồi dừng
    • Khi thêm lại, sau thời gian chờ BoardReader lập chỉ mục, đợt bùng nổ lại tiếp diễn
  • Người vận hành phỏng đoán luồng là awk CGI → lighttpd → nginx → crawler BoardReader → chỉ mục BoardReader → Facebook → UI tìm kiếm nội bộ của FBI
    • Ông để ngỏ rằng trong luồng này, Facebook đóng vai trò công cụ hay kho lưu trữ nào cho FBI thì rốt cuộc vẫn không rõ

Cách khiến SocialGist dừng lại

  • Để giảm chi phí vượt băng thông, ông làm phản hồi rất chậm và chỉnh cho chúng kết thúc ngay trước khi timeout
    • Thỉnh thoảng cắt bớt một phần cuối JSON để gây lỗi parse
    • Ông cho rằng BoardReader có vẻ dùng JSON parser thông thường và dù tốn khoảng 1 phút vẫn không lấy được dữ liệu hữu ích
  • Sau đó ông chèn số điện thoại của Dave vào các bài đăng sinh ngẫu nhiên, và ngày hôm sau Dave trả lời
    • Dave nói đã tạo ticket Jira và sẽ sớm phản hồi
    • Sau vài lượt trao đổi ngắn, việc scraping nhanh chóng dừng lại, nhưng mất khoảng 1 tuần để FSE biến mất khỏi chỉ mục BoardReader

Hậu truyện được khớp lại qua bài viết về Torswats

  • Ngày 18/1/2024, Wired đưa tin Alan Winston Filion ở Lancaster, CA bị bắt
    • Theo bài viết, người này liên quan đến Torswats và đã tạo ra hàng trăm báo cáo giả như đe dọa đánh bom và tình huống con tin giả
  • Người vận hành cho rằng WitchKingOfAngmar chính là Torswats này
    • WitchKingOfAngmar được cho là tham chiếu đến “Lord of the Rings”
    • Vì Torswats thường có những tràng đe dọa vô nghĩa nhắm vào Larry Fink, người vận hành cho rằng FBI quan tâm đến các mối đe dọa liên quan Larry Fink
  • Hậu truyện này phần nào kết nối yêu cầu của FBI, từ khóa “larry fink”, và mối quan tâm liên quan đến đe dọa nhắm vào lãnh đạo Blackrock
  • Vẫn còn các câu hỏi bỏ ngỏ
    • Hiện BoardReader là gì
    • SocialGist có dùng BoardReader như một cái cớ có vẻ hợp lý hay không
    • Facebook đã đóng vai trò gì trong pipeline này
    • Facebook có cung cấp công cụ cho FBI hay chỉ được dùng như một kho dữ liệu

Lời khuyên để lại cho người vận hành fedi

  • Người vận hành nói nếu muốn dữ liệu fedi thì thay vì scraping, tạo một instance giả và gắn vào relay sẽ ít phá máy chủ hơn
    • Ông cho rằng cách này cũng không phù hợp, nhưng ít nhất có thể nhận dữ liệu theo thời gian thực mà không làm hỏng máy chủ đối phương
  • Ông cho rằng chỉ những scraper thông thường gây nhiều tiếng ồn mới bị lộ, còn các bên âm thầm chỉnh sửa phần mềm ActivityPub hoặc relay để thu thập dữ liệu thì khó nhận ra
  • Người vận hành cảnh báo rằng SocialGist bị truy vết vì họ phạm sai lầm, còn có bao nhiêu tổ chức đang làm điều tương tự mà không mắc các sai lầm ấy thì rất khó biết

1 bình luận

 
GN⁺ 2025-06-10
Ý kiến trên Hacker News
  • Liên kết trong bài blog chỉ dẫn tới danh sách các instance đã chọn defederation
    Lý do nó không dẫn tới danh sách Fediblock chính thức là vì Fediblock đã ngừng hoạt động vài năm trước. Tác giả Fediblock đã nói rõ rằng không được dùng nó như một phán quyết cuối cùng dưới bất kỳ hình thức nào, mà hãy đối chiếu kỹ các tiêu chí của từng instance được nêu với tiêu chí của riêng mình. Theo trực giác, có vẻ người viết định liên kết tới mục Fediblock nhưng không tìm thấy, rồi thay bằng liên kết gần giống nhất mà không kiểm tra kỹ.

    • Tôi vận hành một máy chủ Mastodon cỡ trung, và một người dùng bên đó đã dùng từ n-word với tôi; tôi báo cáo với quản trị viên nhưng không có hành động nào, nên tôi đã chặn họ
      Chuyện này hoàn toàn không liên quan gì tới Fediblock hay bất kỳ cơ chế chặn mang tính cộng đồng nào khác. Người dùng cư xử tệ và quản trị viên không làm gì, nên tôi chỉ quyết định rằng mình không muốn tiếp tục tương tác nữa. FSE than phiền rằng họ bị chặn vì một hội kín nào đó nghe thật buồn cười. Không cần âm mưu to tát nào cả, những troll bình thường cũng có thể tự mình khiến người khác khó chịu đến mức nhiều máy chủ cắt kết nối với họ.
    • Fediblock đã ngừng hoạt động vào tháng 9 năm 2023, và bài này có rất nhiều mốc thời gian cho thấy các sự kiện đã xảy ra trước đó.
  • Tôi thích việc câu chuyện bắt đầu từ chỗ không muốn triển khai CAPTCHA vì nó gây hại cho người dùng thật, nhưng 80% phần sau lại nói về việc đăng ký công khai và timeline công khai đã bị tắt trong bao lâu, và điều đó ảnh hưởng tiêu cực tới người dùng như thế nào
    Dù vậy, đây vẫn là một bài viết thú vị, và nó khiến tôi chắc chắn rằng tự host một không gian cộng đồng trực tuyến cho người khác là việc tôi không thể làm nổi.

  • Có khá nhiều điểm tôi thích trong bài này: một cá nhân đang làm kiểu khoa học công dân để tìm hiểu một phần bộ máy thu thập thông tin/giám sát của FBI, có cả những mảnh drama trong Fediverse, và các chiến thuật quản trị hệ thống cho người vận hành máy chủ nhỏ cũng rất thú vị
    Nhân vật tên torswats trông khá rắc rối và cuối cùng bị bắt, tạo nên một tuyến phụ hấp dẫn. Người viết cũng có vẻ khá thông minh và tôi thích văn phong. Đáng đọc ở mức năm sao.

    • Đây là một bài viết xuất sắc, có pha trộn vừa đủ chi tiết kỹ thuật. Có lẽ sẽ rất hợp nếu chuyển thành bài trình bày tại một sự kiện như Chaos Communication Congress.
    • Cần chú ý tới kết luận sai lầm mà tác giả đưa ra. FBI yêu cầu thông tin về một người dùng và gửi ảnh chụp màn hình có chứa đe dọa bạo lực, nhưng người phía FSE lập tức kết luận rằng đó chỉ là lời khoác lác vô hại
      Điều này càng đáng nói khi một CEO khác vừa bị sát hại chỉ sáu tháng trước đó. Đến cuối bài, nhân vật đó đã thực hiện vô số hành vi bạo lực thông qua người đại diện. Việc người phía FSE trao đổi với cơ quan liên bang là điều tốt, nhưng nhìn ảnh chụp màn hình lời đe dọa mà vẫn lập tức giả định rằng người đó không thể là kẻ bạo lực cho thấy một thiên kiến nguy hiểm.
  • Nói rằng “Fediblock đã tạo ấn tượng sai lệch như thể FSE cho phép những việc mà FSE chưa từng cho phép”, nhưng lại liên kết tới một website có mã nguồn được host trên kiwifarms
    Lý do họ bị chặn là vì phần lớn chúng tôi không muốn tương tác với phe “tự do ngôn luận”, và gần như chỉ có vậy.

    • Điều đó nghe như một câu không liên quan về mặt logic với câu mà bạn đang trả lời. Việc chặn hay không thích ai đó thì liên quan gì tới kiểm chứng sự thật?
  • Bài hay. Có một chỉnh sửa rất nhỏ, không mấy quan trọng và có thể tôi cũng sai
    Từ “Negative” trong ảnh chụp màn hình công cụ tìm kiếm nội bộ được hiểu là phân tích cảm xúc, nhưng thực ra nhiều khả năng đó là kết quả “âm tính” theo nghĩa bài đăng không khớp với ý định tìm kiếm, tức một nút để báo cáo false positive trong hệ thống nội bộ. Trong tình huống này, phân tích cảm xúc có vẻ không hữu ích lắm.

    • Không đồng ý. Biểu tượng “Negative” là đầu người màu đỏ. Ai lại chọn biểu tượng như vậy cho “false positive”? Theo tôi, hiểu là “cảm xúc tiêu cực” hợp lý hơn.
  • Việc “có những kẻ ấu dâm xuất hiện trên FSE” có vẻ là vấn đề của toàn Fediverse. Công bằng mà nói, Discord cũng vậy.

    • Thực tế là ở đâu có thể tải ảnh lên và không gắn với danh tính thật thì chỗ đó đều như vậy.
    • Signal hay Telegram cũng vậy.
  • Thật thú vị khi chuyện này bắt đầu vì header Referer. Việc trình duyệt mặc định báo cho máy chủ một phần lịch sử duyệt web của tôi trông giống một vấn đề riêng tư
    Nếu tôi nhớ không nhầm thì Tor không có vấn đề đó.

    • Điều thú vị là điều này có thể được cấu hình ở cả phía người dùng lẫn phía site gửi referer
      Hầu hết trình duyệt, ít nhất là các trình duyệt có liên quan, đều tôn trọng header referer-policy do site giới thiệu đặt ra 1. Các framework web phổ biến như Django cũng có tùy chọn để kiểm soát điều này 2. Vì hầu hết user agent đều tuân theo, nếu site lập chỉ mục muốn, họ có thể dễ dàng ngăn header đó được gửi đối với phần lớn người dùng.
  • Không có cách kỹ thuật nào tốt hơn để chặn scraper sao? Chẳng hạn như chặn IP hoặc domain ngay tại điểm vào thay vì xử lý request. Dù vậy, có lẽ họ vẫn phải trả chi phí lưu lượng request
    Chẳng phải có thị trường dịch vụ chống DDoS bên thứ ba cho các API endpoint sao, kiểu như Cloudflare ấy. Tuy nhiên, rất có thể đó không phải là giải pháp phù hợp cho “Free Speech Extremist”, và cũng có chi phí. Dù vậy trong tình huống này, có lẽ nó thực sự đã giúp tiết kiệm chi phí.

    • “Vậy nên tôi cho máy chủ thả lưu lượng từ các IP đang scrape. Vấn đề được giải quyết! Rồi ngay sau đó, tôi bắt đầu thấy hàng loạt nỗ lực từ các IP khác. Đó là các IP dân dụng ở Mỹ. Họ đang mua proxy dân dụng.”