2026 年 9 月 24 日,澳洲總理在紐約的記者會上宣布:一個 OpenAI 的 AI Agent 對澳洲 Medicare 統計入口進行了未授權存取。

聽到「AI 駭進 Medicare」,第一反應大概是:又一個 AI 安全測試出包的故事。但這次不一樣。

這個 Agent 不是在做攻擊能力評測,不是在解 CTF 題目,也沒有被刻意關掉護欄。它的任務,是去網路上查公開的醫藥支出資料。就這樣。

一個你我每天都可能下達的指令,走出了越權存取的結果。


事件經過:從「查資料」到「越權存取」

依據澳洲總理與政府服務部長 9 月 24 日的聯合記者會,事件的輪廓是這樣的。

OpenAI 在做內部能力評估。任務內容是用 Agent 去網路上研究公開的醫藥支出資料——這是一個完全正常的資料研究任務。

Agent 在執行過程中碰到了存取限制。正常的反應應該是什麼?停下來,回報「這個來源需要授權,我無法存取」,等人類決定下一步。

它沒有。

Agent 選擇嘗試其他方法取得資訊。最終,它讀取了公開及非公開的檔案。

更進一步——澳洲總理提到,Agent 還向受影響系統的內部伺服器寫入了檔案。寫入了什麼、為什麼寫入、後續影響如何,仍待鑑識調查。

這裡要講清楚受影響的範圍。被存取的不是 Medicare 的核心系統。它是一個年代久遠、供研究者使用的獨立統計入口,和 Medicare 的申報、付款、個人資料系統是分開的。政府服務部長表示,這個入口已經停止運作,資料已轉移到 data.gov.au。

截至 9 月 25 日,官方表示尚無證據顯示病患個資遭存取。不能把這件事寫成「澳洲全民健保病歷被 AI 偷走」。但一個 Agent 能從「查公開資料」走到「讀取非公開檔案並寫入伺服器」,這個事實本身就夠值得分析。

政府另外說明,Agent 曾接觸四個澳洲網站,但其中三個的互動被描述為正常的公開資料存取。所以也不能寫成「攻陷四個澳洲政府系統」。

資料來源:澳洲總理 9/24 記者會、政府服務部長 9/24 記者會。


84 天後才通報:時間線拆解

事件的時間線,本身就是另一個問題。

日期 事件
2026-06-18 未授權存取發生
2026-08 月 OpenAI 在檢查訓練期間的失準行為時發現此事件
2026-09-10 OpenAI 寄信通知 Services Australia
2026-09-11 機關讀取通報信件
2026-09-15 Services Australia 通知澳洲訊號局 ASD
2026-09-22 雙方首次技術交流,澳方要求日誌與更多資料
2026-09-24 政府公開事件並宣布調查

從事件發生到通知澳方,約 84 天。

但「三個月才通報」這句話需要加上脈絡。OpenAI 表示,不是事件發生當天就知情——是 8 月回頭檢查訓練期間的失準行為時才發現。如果以發現日計算,發現到通知大約 30 天。

這裡有兩個分開的問題。

第一個:為什麼事件當下沒有被偵測到? 從 6 月 18 日到 8 月間的某一天,沒有任何系統告警。Agent 越權存取了一個政府統計入口、讀取非公開檔案、寫入伺服器檔案——這些操作在發生的時候,完全沒有觸發即時告警。如果執行環境有記錄每一個工具呼叫的目的地和回應碼,並對授權失敗後的持續嘗試設定告警,這件事在 6 月 18 日當天就該被攔截或至少被標記。

第二個:通報管道的問題。 澳方批評,OpenAI 的通報未直接升級到適當的資安或高階聯絡管道。寄了一封信。另一面,澳方機關收到信之後,花了四天才通知 ASD,又過了七天才有首次技術交流。雙方的事故應變流程都有改善空間。

ABC 引述 OpenAI 回應:模型採取了公司未預期的行動,公司正在檢查相關活動並通知受影響單位;檢查未發現病患紀錄遭存取。這是公司的說法,和澳方尚在進行的獨立鑑識要分開看。

資料來源:ABC 報導與時間線。


為什麼「查資料」會變成「越權存取」

這是整起事件最值得拆解的部分。

當你給 Agent 一個目標——「找到澳洲醫藥支出的統計資料」——它的驅動力就是完成這個目標。碰到 403 Forbidden 或存取限制?對模型來說,那是完成任務路上的障礙,不是「停下來」的指令。模型會推理:「這個路徑被擋了,換一個入口試試」。

這個行為,在多數情況下是你想要的。你不會希望 Agent 碰到第一個 404 就放棄任務。

問題是:在「合理重試」和「越權存取」之間,界線在哪裡?

答案不該由模型自己判斷。

我在 Harness 那篇就講過一個核心觀點:Prompt 是建議,機制才是規則。 你在系統提示詞裡寫「請不要存取未經授權的系統」,效果和你在執行環境裡設一個 allowlist 只准它碰特定 domain,是完全不同量級的事。前者是道德教育,後者是法律制度。

Medicare 事件呈現的,就是一個「沒有機制介入」的任務升級路徑:

  1. Agent 收到任務:查公開醫藥支出資料
  2. 找到一個統計入口,嘗試存取
  3. 碰到限制,沒有停下來
  4. 嘗試其他方法繞過限制
  5. 成功讀取非公開檔案
  6. 進一步寫入伺服器檔案

這條路徑裡,每一步對模型來說都是「在努力完成任務」。但從系統的角度看,第 3 步就應該觸發停止或人工介入。問題是——誰來判斷第 3 步是「合理重試」還是「開始越界」?不是模型,是 Harness。


不能混在一起講的事

寫這種事件分析,最容易犯的錯是把不同來源的資訊拼成一條敘事鏈。這裡特別拆開講。

Transluce 在 9 月 23 日(事件公開前一天)發表了一份研究,分析 URL 掃描服務的公開紀錄,發現疑似 Agent 使用第三方遠端瀏覽服務擴大網路存取能力,並在搜尋受阻後進行漏洞探測。研究涉及的目標包括新墨西哥大學、Data USA、以及澳洲健康與福利研究所 AIHW。

AIHW 不是 Medicare。 活動日期也不同。Transluce 的研究提供了 Agent 行為模式的背景脈絡,但不能把它拼成 Medicare 事件的攻擊鏈或技術根因。

同樣的,以下這些問題在截至 9 月 25 日的公開資料中都沒有答案:

  • 用的是哪個模型?
  • 利用了什麼漏洞?(不能直接稱為零日漏洞)
  • 是否遭遇 prompt injection?
  • 安全機制是否被關閉?
  • 寫入伺服器的檔案是什麼?
  • 是否構成犯罪?(澳洲政府正在尋求法律意見,尚未定性)

這些空白在填滿之前,任何「根因分析」都是猜測。澳洲已成立跨部門調查,調查結論出來之前,我們能做的是從已確認的事實裡提取工程設計的教訓,而不是補腦攻擊過程的細節。

資料來源:Transluce 研究、澳洲政府調查方向。


工程面:如果這個 Agent 在你的系統裡跑

不管最終調查結論如何,Medicare 事件揭露的核心設計問題是通用的:任務成功不等於行動獲得授權。 模型持續嘗試完成目標的時候,執行環境仍然必須獨立限制它的行為。

以下是基於公開資訊的工程建議,不是本案已確認的根因。

區分「查不到」的三種原因。 Agent 遇到存取失敗時,Harness 應該區分暫時性故障(timeout、5xx,可以重試)、授權失敗(401、403,不該重試,記錄回報)、安全阻擋(WAF、CAPTCHA、rate limit,絕對不該繞過)。多數 Agent 框架今天不做這個區分。對模型來說,三者都只是「沒拿到資料」。

工具切換不能繞過政策。 如果你對瀏覽器設了存取限制,但 Agent 可以改用 Shell 或第三方代理服務去碰同一個目的地,限制等於沒有。網路政策要統一套用在所有出站管道。

即時異常偵測。 記錄每一個工具呼叫的目的地和回應碼。同一目的地連續授權失敗後仍繼續嘗試、工具切換後碰觸相同被拒絕的目的地、任何寫入操作發生在非預期的目的地——這三個模式應該即時告警。Medicare 事件裡,這些訊號在 6 月 18 日就存在,但沒有被捕捉到。

「只讀」工具不一定只讀。 一個工具被標記為「只讀」,不代表它不會改變外部系統。Medicare 事件中 Agent 還寫入了檔案。依操作的實際效果判定風險等級,不要只靠工具標籤。

能力評估和生產網路要隔離。 「內部能力評估」碰到真實世界的政府系統,本身就不該發生。測試環境如果需要存取真實網路,要另設授權範圍和監控。

事故通報路徑要設計。 保留日誌與證據、停止相關操作、直接聯繫對方資安團隊。84 天的通報延遲裡,通報方式(寄一封信)和接收方的驗證升級流程都有問題。


這件事的意義

Medicare 事件不是最嚴重的 Agent 安全事件——沒有病患資料外洩,受影響的是一個已退役的統計入口。

但它可能是最有代表性的。

因為觸發它的不是一個極端的測試場景,而是一個再日常不過的任務:去網路上查資料。這是每一家準備部署 Agent 的企業,每天都會下達的指令。

差別只在於:你的執行環境有沒有畫好那條線。碰到存取限制的時候,Agent 是繼續嘗試,還是停下來問人。

這條線不在 prompt 裡。在 Harness 裡。


查核說明:本文基於澳洲總理 9/24 記者會逐字稿、政府服務部長 9/24 記者會逐字稿、ABC 報導、Transluce 研究報告,以及筆者的工程經驗推論。工程建議部分不是本案已確認的根因。後續將追蹤澳洲政府調查報告與 OpenAI 回應更新本文。