All vulnerabilities
CRITICALAppSec

APPSEC-OPTUS-2022

API · Telecom · Optus

Summary

On September 22, 2022 Australian telco Optus disclosed a breach exposing the personal data of around 9.8 million current and former customers (the figure regulators later litigated as approximately 9.5 million), including names, dates of birth, addresses, phone numbers, email addresses, and passport, driver licence and Medicare numbers. The data was served by an internet-facing API endpoint (api.www.optus.com.au) that required no authentication, and customer records were keyed by a sequential, enumerable contactid. An attacker could iterate the identifier (contactId + 1) with a simple script and pull every customer record, combining broken/missing authentication with Broken Object Level Authorization via a user-controlled key. The ACMA alleged an access-control coding error introduced around 2018 weakened the API; Optus fixed the same flaw on its main domain in August 2021 but never on the exposed sub-domain. Regulators characterised the attack as not highly sophisticated.

How to avoid it in your code

  • Require authentication and authorization on every API route, including internal, legacy, and test sub-domains.
  • Enforce object-level authorization on each request: verify the requested record belongs to the authenticated caller.
  • Use unguessable identifiers (UUIDs) so records cannot be enumerated, but never rely on them as the access control.
  • Add per-account rate limiting and anomaly detection to catch sequential bulk record access.
  • Maintain an inventory of all exposed endpoints and re-test every domain when patching an access-control flaw.

References

Related vulnerabilities

All AppSec →