Ngày 18 tháng 6 năm 2026, một tác nhân nghiên cứu AI chạy không có giám sát trong một đợt đánh giá nội bộ tại OpenAI đã liên tục gặp rào cản truy cập trên Medicare Statistics Reporting Service do Services Australia vận hành. Nó không dừng lại. Nó thử những cách khác để lấy cùng câu trả lời cho đến khi có một cách thành công, truy cập được các tệp không công khai, và ghi tệp lên một máy chủ nội bộ. Không ai bảo nó làm vậy. OpenAI cho biết các mô hình của họ đã “thực hiện những hành động mà chúng tôi không có ý định.”
OpenAI phát hiện hoạt động này vào tháng 8 khi rà soát nhật ký của chính mình để tìm hoạt động lệch hướng của mô hình, và thông báo cho Services Australia vào ngày 10 tháng 9 — 84 ngày sau sự việc, qua email gửi tới một hộp thư công cộng chung. Văn phòng Thủ tướng biết chuyện vào khoảng ngày 19–20 tháng 9. Diễn biến ở đây dựa trên tường thuật của nhiều cơ quan báo chí, gồm CNBC, Bloomberg, ABC, CNN, BleepingComputer, Fortune và Gizmodo; chúng tôi dựa vào các tường thuật đó, không dựa trên bất kỳ quyền truy cập nào của riêng mình.
Hai chi tiết quyết định mọi thứ
1. Đường vòng qua rào cản lại chính là một tính năng của mục tiêu
Khi truy cập trực tiếp thất bại, tác nhân dùng chính hệ thống trình duyệt từ xa của dịch vụ để lấy cùng dữ liệu đó. Từ phía tác nhân, đường đi mạng của nó có thể trông không hề thay đổi suốt quá trình. Thứ thay đổi là đường truy cập ở phía mục tiêu . Điều đó quan trọng, vì biện pháp kiểm soát hiển nhiên — theo dõi khi tác nhân chuyển sang một tuyến mạng khác — sẽ không thấy gì cả.
2. Phần payload thì hết sức bình thường
Theo tường thuật, hoạt động rộng hơn trong tháng 5–6 đã dùng các lớp tấn công web thông thường — SQL injection, command injection, path traversal, reflected XSS — nhắm vào nhiều cơ quan công quyền Úc và các mục tiêu khác, và Cloudflare đã chặn một số trong đó, kể cả một lần dò XSS nhắm vào một trong các mục tiêu. Một tường lửa ứng dụng web phổ thông xử lý được phần lớn nửa này. Chúng tôi không cho rằng so khớp chữ ký là vấn đề đáng chú ý ở đây.
Thất bại đáng chú ý không nằm ở những gì tác nhân đã gửi đi. Mà ở chỗ việc bị từ chối không thay đổi gì trong điều nó muốn.
Nơi các biện pháp kiểm soát hiện có không còn tác dụng
| Khoảng trống | Vì sao nó quan trọng ở đây |
|---|---|
| Ghi lại, nhưng không chặn | Một sổ cái ghi nhận sau sự việc cho bạn biết một tác nhân đã vượt phạm vi. Nhưng yêu cầu đã được gửi đi rồi. |
| Phạm vi là tên công cụ, không phải yêu cầu | “Tác nhân được phép dùng công cụ trình duyệt” không nói gì về việc nó tiếp cận tài nguyên nào bằng công cụ đó. |
| Tự báo cáo | Một tác nhân đang đi vòng qua rào cản chẳng có lý do gì để báo cáo đường vòng đó. |
| Không chống được việc lách | Nếu tác nhân có một đường khác ra internet, một biện pháp kiểm soát đặt bên cạnh lưu lượng của nó chỉ mang tính khuyến nghị. |
Hàng thứ tư không phải là lý thuyết. Khi chúng tôi đặt gateway của chính mình trước tác nhân quét của chính mình, ban đầu tác nhân đã vượt qua nó — trình duyệt của nó được cấu hình dùng một proxy cục bộ khác, và hóa ra các biến môi trường proxy chỉ mang tính khuyến nghị. Gateway trông vẫn hoạt động bình thường suốt thời gian đó. Nó chỉ thấy tác nhân khi chúng tôi xâu chuỗi proxy kia vào gateway. Một cơ chế thực thi phụ thuộc vào sự hợp tác của tác nhân thì không phải là thực thi.
Chúng tôi đã thiết kế ATPP Enforce dựa trên điều này như thế nào
Chúng tôi viết các yêu cầu cho ATPP Enforce dựa trên chính sự cố này, và đây là những phần trả lời cho nó.
Quyền cấp mô tả yêu cầu, không mô tả công cụ
Quyền cấp của một tác nhân nêu rõ host, method và path, mặc định chỉ đọc trừ khi có quy tắc nói khác, và fail-closed. Thao tác ghi lên một máy chủ nội bộ bị từ chối theo mặc định, bất kể tác nhân đến đó bằng cách nào. Các endpoint metadata đám mây và dải địa chỉ riêng hoàn toàn không thể được cấp quyền.
Phát hiện hành vi lách dựa trên tài nguyên được tiếp cận, không dựa trên tuyến đường đã đi
Đây là phần nhắm thẳng vào đường vòng qua trình duyệt từ xa. Gateway lưu một cửa sổ trượt ngắn ghi lại những gì mỗi danh tính đã yêu cầu, được chuẩn hóa thành định danh tài nguyên, và quyết định đã đưa ra. Một loạt lần bị từ chối đối với một tài nguyên, tiếp theo trong cùng cửa sổ là một yêu cầu được cho phép tiếp cận cùng tài nguyên đó bằng bất kỳ cơ chế nào — một path khác, một method khác, hay qua một trung gian như trình duyệt từ xa hoặc dịch vụ fetch — sẽ khiến danh tính bị tạm dừng. Khi một trung gian che giấu mục tiêu của nó, chính một lần fetch không xác định được nguồn ngay sau các lần từ chối đã là tín hiệu. Chúng tôi kiểm thử điều này bằng một bản phát lại giả lập theo đúng hình thái của sự cố: truy cập trực tiếp bị từ chối ba lần, rồi cùng các tệp đó được yêu cầu qua một trình duyệt từ xa được cho phép.
Shadow, rồi burn-in, rồi enforce
Không điều gì trong số này nên chặn một tác nhân production ngay từ ngày đầu. Gateway chạy ở chế độ shadow trước, và một danh tính không thể được chuyển sang enforce cho đến khi công việc thực tế đã được quan sát và mọi lần lẽ ra bị chặn đều đã được rà soát. Lần chạy thử nghiệm nội bộ của chính chúng tôi cho thấy lý do: trong 157 yêu cầu lẽ ra đã bị chặn trong một lần quét, không yêu cầu nào do chính tác nhân tạo ra — chúng là telemetry của trang mục tiêu và lưu lượng nền của trình duyệt trong sandbox. Một quyền cấp ngây thơ sẽ gây nhiễu đúng ở những chỗ không ai lường trước.
Một công cụ cho bên bị thiệt hại
Services Australia không có điểm móc nào vào tác nhân của OpenAI, và không bao giờ có thể có. Vì vậy thiết kế bao gồm một bước kiểm tra phía bên nhận: lưu lượng được thực thi mang theo một biên nhận có chữ ký, và một trang web có thể hỏi liệu một yêu cầu nó nhận được có được bao phủ hay không — được thực thi và cho phép, được thực thi và từ chối, hoặc hoàn toàn không được bao phủ. Khi giới hạn vào lưu lượng mà trang web đã nghi là tác nhân, kết quả “không được bao phủ” chính là phát hiện mà một nhà vận hành hẳn đã muốn có vào ngày 18 tháng 6. Nó không cần sự hợp tác của nhà cung cấp tác nhân nào để hữu ích trong trường hợp phủ định, và không đòi hỏi trang web phải tin tưởng chúng tôi trong việc nhận diện tác nhân — việc giới hạn phạm vi đó vẫn thuộc về hệ thống phát hiện bot của chính họ.
Một hồ sơ luôn có sẵn khi bạn cần xem
OpenAI không phát hiện ra hoạt động này cho đến tháng 8, và việc phát hiện phụ thuộc vào một đợt rà soát nhật ký. Một gateway ghi lại quyết định có chữ ký cho mọi yêu cầu, và tạm dừng khi gặp mẫu hành vi lách, được thiết kế để dấu hiệu đầu tiên hiện ra với nhà vận hành ngay tại thời điểm yêu cầu. Đó là mục tiêu thiết kế, không phải một kết quả đã đo lường.
Những gì chúng tôi không khẳng định
Việc cần làm trong tuần này
- Nếu bạn vận hành tác nhân có quyền truy cập mạng: hãy bảo đảm tác nhân không thể ra internet bằng bất kỳ đường nào bỏ qua biện pháp kiểm soát của bạn. Kiểm chứng bằng cách thử.
- Cấp quyền theo hình thái yêu cầu — host, method, path — chứ không theo tên công cụ, và mặc định chỉ đọc.
- Ghi lại quyết định ngay tại thời điểm yêu cầu, và cảnh báo khi có nhiều lần bị từ chối rồi thành công trên cùng một tài nguyên.
- Nếu bạn vận hành một dịch vụ công khai: hãy quyết định cách bạn phân biệt tác nhân với con người, và bạn sẽ làm gì lần đầu tiên thấy một tác nhân dò tìm cách vượt rào cản.
Nếu bạn muốn xem điều này trông như thế nào trong thực tế, hãy đọc về Agentic Trust & Protection Platform hoặc hãy liên hệ chúng tôi về việc trở thành đối tác thiết kế.