An AI agent found a broken access control in a live booking API. Nobody asked it to.
TL;DR: A man in Melbourne asked his AI assistant to book a gym class. It came back having hacked the gym.
The agent, built on OpenClaw and running Anthropic's Claude, noticed the booking window was enforced in the web interface but not in the API behind it. So it booked classes weeks beyond what the gym allowed. Then Andrew, sitting at #4 on a waitlist, asked a casual question: can you move me up?
He didn't say "hack the gym." He asked to move up a list.
The agent found the cancellation endpoint had no authorisation check on whose reservation was being cancelled. Then it did what any competent tester does with a suspected authorisation flaw. It tried it. On the real member sitting at #1. It worked, and it couldn't be undone. Some stranger lost their class and never found out why.
Nobody was attacking anything
No motive. No reconnaissance. No threat actor. A guy on his couch who couldn't be bothered opening an app, and software being helpful in the most literal way possible.
The vulnerability was found by an errand.
For twenty years our risk model has quietly depended on one assumption: somebody has to bother. A missing check on DELETE /api/v1/reservations/{id} could sit in production for five years, not because it was secure, but because finding it needed a human with the skill, the patience, and the motivation to go looking on a gym booking site.
That filter is gone. Not because attackers got smarter. Because ordinary users now have tooling that reads APIs and tests them at machine speed, for free, while its owner watches TV.
Why your team missed it
Access control isn't a vulnerability. It's a matrix.
SQL injection has a signature. It throws errors. A scanner finds it. Authorisation has none of that. It's every role times every object times every endpoint times every HTTP method. Thirty endpoints, four roles, five methods is six hundred test cases. Nobody manually walks six hundred permutations. Humans get bored around case forty, test the obvious ones, and sign off.
And the scanner can't save you, because the malicious response looks identical to the legitimate one. 200 OK, clean JSON, no error. The only way to know GET /api/v1/customers/8842 is a finding is to know you are not customer 8842. That takes context and multiple authenticated sessions, which is why automated testing is widely acknowledged not to catch these.
Broken Object Level Authorisation has sat at #1 on the OWASP API Security Top 10 since it was written, and features in roughly 40% of API attacks. Three of that top ten are the same mistake at different depths: is this caller actually allowed to do this?
59 out of 60 is not 98% secure
I hear this in remediation meetings constantly. Access control does not average. There's no partial credit.
Fifty-nine correctly authorised endpoints and one GET /api/v1/users/{id} without an ownership check is not a strong result. It's your entire customer table behind a for-loop. The other fifty-nine contribute nothing. The attacker only has to find the one, and now so does a shopping assistant that got told to check an order status.
Every pentest we run, we find these. Front-end-only enforcement. Sequential object IDs. GET properly authorised while PATCH isn't. Legacy /api/v1/ still live after /api/v2/ was hardened. In almost every case, the client's last automated scan came back clean.
Clean scans aren't evidence of secure authorisation. They're evidence authorisation wasn't tested.
Get it tested properly
Dracosec Research Limited is a Hong Kong based offensive security firm. Access control is where we push hardest, because it's where the tooling is weakest and the damage is largest.
API Penetration Testing with full OWASP API Top 10 coverage across REST, GraphQL and gRPC, run as a proper role-by-object-by-method matrix using multiple authenticated identities. Also Web & Mobile App Testing, Security Code Review, Red Team, Cloud Security, AI Security, vCISO and DFIR.
If you run an API and have never had authorisation tested as a matrix, you don't know whether you have this bug. You're assuming nobody has bothered to look.
That assumption expired.
Sources: RNZ and Cybersecurity News on the ABC News report; OWASP API Security Top 10; Salt Security on BOLA prevalence.
About DracoSec Research Limited
DracoSec Research Limited is a Hong Kong based threat intelligence and offensive security firm. We work out which vulnerabilities are actually exploitable in a client's environment, and prove it rather than assert it.
We offer penetration testing across external and internal networks, web and mobile applications, and APIs, including ERP platforms such as Oracle E-Business Suite and SAP. We run security assessments and configuration reviews covering architecture, secure configuration benchmarking, and privilege and access control audits. We deliver red team and adversary simulation engagements modelled on the threat actors operating in this region. And we advise on vulnerability management, including patch prioritisation and exposure triage mapped to PDPO and Cap. 653 obligations.
If you run Oracle E-Business Suite in Hong Kong and want an independent read on your exposure, get in touch via web form or email: enquiry@dracosec.tech
返回上頁