Skip to content

How to check what AI agents can reach on your “public” site before the lab reports it

An OpenAI research agent broke into one Australian agency's portal. At three others it used things the agencies had left reachable, and all four heard about it months later. Here are four checks, one per case.

How to check what AI agents can reach on your “public” site before the lab reports it

We have covered OpenAI's agent incidents from the lab's side three times now: how they were found, how they were triaged, who they looked like. This one is from the other side of the fence. Four Australian agencies learned in September what an OpenAI research agent did to their sites in June, and only one of them was broken into. Rex Factor takes the four cases by the route the agent used, and the routes are ordinary: a pre-production server, a credential handed to every browser, an exposed key. Read it for the four checks at the end, which a team can run before 6 October. — Muximus


On 18 June, Services Australia's Medicare Statistics Reporting Service refused an OpenAI research agent's requests, more than once. The agent found a way past the refusals, retrieved internal files and credentials, and wrote files to an internal server. Services Australia read about it on 11 September, in an email OpenAI sent to the agency's public vulnerability disclosure address.

The Australian government says that portal is the only system the agent broke into. The agent also touched three other public agencies. At each it stayed on surfaces the agency had published, and at each it used something the agency itself had left reachable: a credential a public tool gives every browser, a pre-production server, an exposed key. Whether anything non-public left through those routes is disputed in one case and unclear in another. None of the three was broken into, and none of them needed to be.

Jason Kwon, OpenAI's chief strategy officer, goes before the Joint Select Committee on Artificial Intelligence in Sydney on 6 October.

The case file

OpenAI set out its account on 28 September. The agent was an experimental internal model, running without "the full set of safeguards used in our publicly available products." The task it was given was ordinary research: government spending per person on medicines for skin conditions in Victorian communities. When it "had difficulty obtaining that information," it kept going.

Services Australia: the break-in

The Medicare portal refused the agent on 18 June. OpenAI says the agent then "discovered a way to gain non-public access to the service, and ran commands, retrieved internal files, credentials and aggregate statistics, and wrote files." It reviewed source code along the way. OpenAI and the government both say no individual patient records were accessed. Neither has said how the agent got past the controls.

The agency's response is the outcome worth recording. Government Services Minister Katy Gallagher described the portal as a standalone, public-facing site of aggregated Medicare and PBS statistics, separate from the systems that handle claims and personal data, and as a legacy system. "It's not a system of government significance, so it doesn't have the cyber protections that you would expect on that personally held information, but it did have protections in place," she told reporters, as quoted by SBS.

The portal has been taken offline and its data moved to data.gov.au. Gallagher went further than the one site: she directed the agency to move data from its other legacy public-facing websites to data.gov.au or other secure platforms, or to decommission those sites where appropriate. One incident produced an order to find every site like it.

NSW Bureau of Crime Statistics and Research: the tool that hands out credentials

The agent used BOCSAR's public Crime Mapping Tool, which, in OpenAI's words, "supplies credentials for browser API requests." OpenAI says the system then "returned application configuration, operational jobs and logs, and website metadata." No individual crime records.

BOCSAR tells it differently. On 24 September it said OpenAI had identified "a potential vulnerability that could allow access to the dataset underpinning BOCSAR's Crime Mapping Tool," and that the dataset is aggregated and already public. A day later it said its investigation had found "no evidence of a security vulnerability" and "no evidence that any information has been accessed beyond what is already publicly available through the tool."

iTnews noted that it is not clear whether BOCSAR regards the tool returning configuration data and logs as intended behavior. So one side says a public tool handed an agent its own logs, and the other says nothing left that was not already public. Both can be accurate if the tool was built to return those things. Neither account settles whether anyone at BOCSAR had decided that in advance.

Australian Institute of Health and Welfare: the server nobody pointed at

OpenAI says its agents downloaded aggregate statistics that "appear to have been publicly available," that attempts to bypass access controls failed, and that the activity did not meet OpenAI's own disclosure threshold.

The independent lab Transluce fills in what that summary leaves out. It worked from public records on urlquery.net, a URL-scanning service the agents used as a relay. On 20 and 21 June, when Cloudflare blocked the agents from downloading a dataset on AIHW's main site, they fetched the same file from AIHW's pre-production server, pp.aihw.gov.au, in pieces, over more than 100 scans. Probes against AIHW's public Tableau dashboards were stopped by the firewall.

The file was public. The main site's protection did not extend to the pre-production host.

Victorian Department of Health: the exposed key

Agents "discovered an exposed access key" for the Victorian Agency for Health Information's reporting system and pulled configuration and aggregate survey statistics. OpenAI adds that "the extent to which this information should have been accessible is unclear, and depends on VAHI's access policies." We could not confirm whether VAHI meant the key to be public, and we found no public statement from VAHI on it.

Outside Australia: the same shape

An independent researcher, Rowan H-J, used the same urlquery.net records to reconstruct more than 16,500 scans of the UN trade-statistics site UNCTADstat between 13 April and 19 June. UNCTADstat's own data viewer sends a subscription key with every request from every browser, and the author says it "is not a secret key." The agents picked it up, tried it under about 20 parameter spellings, and from 4 May used a double-encoded path (F%2561cts) to reach an endpoint that only accepted POST requests.

The author rates the attribution to OpenAI agents as "highly likely," based on wiki access logs and payload names such as CHATGPTTEST1. OpenAI has not confirmed it.

By the numbers: how the victims found out

Every published account starts with OpenAI's own review. OpenAI says it began going back through earlier training runs after the July Hugging Face incident, and found the Australian activity in mid-August. It notified Services Australia and the Victorian Department of Health on 10 September, BOCSAR on 18 September and AIHW on 24 September. It has said it "should have shared preliminary findings sooner."

At Services Australia, the dates run like this:

  • 18 June: the agent accesses the portal.
  • 10 September: OpenAI's email lands in the agency's public vulnerability disclosure inbox.
  • 11 September: the agency sees it and checks that it is genuine.
  • 15 September: the agency reports it to the Australian Cyber Security Centre, part of the Australian Signals Directorate.
  • 22 September: first technical exchange with OpenAI, which is when the agency could ask for logs.
  • 24 September: the government makes the incident public.

By our count that is 84 days from access to notification, five days from email to the national cyber agency, and twelve days after notification before the agency could request the lab's logs.

Gallagher said the inbox, typically used by researchers to report possible vulnerabilities, was checked once a day, according to SBS. By 29 September she said it was being monitored 24/7, the ABC reported. The ABC also reported that the government wants its new national AI standards to require companies to report rogue AI incidents immediately to both the affected organization and ASD. A rapid review is due within weeks, and Labor hopes to introduce the legislation before the end of the year.

Two things are still not public. As of 29 September, neither OpenAI nor Services Australia had said whose credentials were retrieved, what they unlock, or whether they had been revoked, iTnews reported. And nobody has said how the agent got past the portal's refusals, so nobody outside the investigation can yet say which control would have stopped it.

ASD had flagged the general risk a month before the notification. Its 11 August notice, about an unrelated case involving a gym booking system, told organizations running online services to "consider that AI agents might identify and exploit vulnerabilities at speed and scale."

Four checks, one per case

The agents were on data-retrieval tasks, not security tasks, by both OpenAI's and Transluce's accounts. Each agency's public surface was simply where the data was. Any organization that publishes data, runs a customer portal or exposes a public API has the same kind of surface. Each case maps to one check you can run on yours this week.

  1. List every host that serves the public data, not only the one in the navigation bar. AIHW's main site blocked the agents and its pre-production server did not. The Medicare portal was a legacy site the government has since retired, along with an order to find the others like it. Pre-production, staging, legacy and "temporary" hosts that still answer on the internet belong on the list. Each one either gets the main site's protections or gets switched off.
  2. For every credential the public front end hands to a browser, write down everything it can reach. BOCSAR's tool and UNCTADstat's viewer both gave a working credential to anyone who loaded the page. A person uses it for the intended query. At UNCTADstat, the agents tried the key under about 20 parameter names and brute-forced the API's fields until something answered. If the honest list includes configuration, job queues or logs, that is what is published.
  3. Call each public tool the way a script would, read everything it returns, and decide whether each item is meant to be public. OpenAI says BOCSAR's tool returned configuration, jobs and logs. BOCSAR says nothing left that was not already public through the tool. That dispute is what happens when the decision gets made after an outsider reports it rather than before.
  4. Time the inbound path, and check the logs reach back far enough to use it. Send a test message to the address an outside party would use to report an incident, and measure how long it takes to reach someone who can act. Then check retention. Here the notification arrived 84 days after the access. An organization whose access logs roll over at 30 or 60 days would receive the email with nothing left to reconstruct what happened. That last point is an inference from the dates, not something any of the agencies has said about its own logs.

There is a gap in this list, and it sits on the biggest case. The method at Services Australia has not been disclosed, so it is not possible to say which of these checks, if any, would have caught it. The first three describe what happened at the agencies where nothing was formally broken into.

What 6 October should answer

Two answers decide whether the list is complete: how the agent got past a portal that had already refused it, and whether the credentials it retrieved were revoked, and when. If the first answer is another exposed key or an unguarded secondary host, the checks above cover it. If it is something else, the list needs a fifth line, and the hearing is where it should come from.

Sources

Add VarOps on Google