5.7 Million Records Exposed: What the Qantas Breach Reveals About Business Logic Blind Spots

Picture of Shikha Patra
Shikha Patra
Product Marketing Manager
• ⏱︎ 7 min read

TL;DR

  • One phone call talked a Qantas agent into authorizing a fake app in Salesforce; no password stolen, no MFA triggered. 
  • The attacker inherited the agent’s own permissions and pulled 5.67M customer records via bulk API queries. 
  • OAIC closed its inquiry in July 2026 with zero penalty, despite a theoretical A$7B+ maximum fine. 
  • Root cause was a business logic gap, not an identity failure as nothing was watching what an authorized session was doing 
  • Fix: continuous behavioral monitoring of sessions and connected apps, not just tighter access control. 

One phone call. One deceived agent. 5.7 million exposed records and zero regulatory penalty. That’s the uncomfortable arithmetic behind the Office of the Australian Information Commissioner’s July 2026 decision to close its inquiry into the 2025 Qantas data breach without action. The airline had spent a year under the shadow of Australia’s toughest privacy penalty regime, facing a theoretical maximum exceeding A$7 billion. In the end, it will pay nothing. Not because the breach wasn’t serious. Attackers extracted 5.67 million customer records, including Frequent Flyer data, contact details, and personal information for 1.7 million people, and later leaked them through an extortion group. The regulator simply concluded that no reasonable set of controls, including ISO 27001 compliance, would have stopped this specific attack. 

That finding should unsettle every security and product leader relying on identity and access management as the primary line of defense. The Qantas breach wasn’t a failure of authentication. It was a failure to see what an authenticated, authorized, perfectly legitimate session was doing once it had the keys. 

What Happened

The attack never touched a password. On a Saturday in June 2025, a threat actor called an overseas contact center agent working for a third-party Qantas provider, posing as internal IT support. The agent was walked through what looked like a routine ticket-closing process on Salesforce’s connected-app setup page, entering an eight-digit code that registered the attacker’s modified version of Salesforce’s own Data Loader tool as a trusted application. 

From that point, the attacker didn’t need to log in at all. The agent’s own session authorized the connection, and Salesforce issued an OAuth token carrying every permission that agent already held, including visibility into the full customer contact database. The attacker’s tool used that access to run bulk API queries, quietly pulling records over a weekend while two resulting login-anomaly alerts sat unread until Monday morning. 

By the time Qantas froze the account, the exposure was done. The company disclosed publicly within days and notified affected customers by 9 July, but the underlying vulnerability: a default Salesforce setting that let any end user, not just administrators, approve third-party app connections, had already done its damage. 

Root Causes

The phishing call was just the entry point. The real story is four compounding gaps that let one deceived employee become a 5.7 million record breach. 

  • Permissions design flaw: Salesforce’s default configuration let ordinary end users, not just admins, authorize new connected apps. Role-based access controls never came into play: the attacker’s tool didn’t bypass anything, it simply inherited whatever the deceived employee was already allowed to do. Access control correctly answered “who is this?” at every step. It never asked “should this session be doing this?” 
  • Consent-phishing blind spot in training: Security awareness programs are built almost entirely around credential theft: don’t click the link, don’t type your password into a fake page. Almost none address consent phishing, where the victim isn’t tricked into handing over a secret but into actively approving something that looks like routine IT process. The OAIC flagged this as an industry-wide gap, not a Qantas-specific one, and concluded standard training likely wouldn’t have stopped it. 
  • Unbounded blast radius: A single contact center agent could see the entire customer base. That’s how many CRM platforms are scoped by default, not a misconfiguration but it meant the distance between “one employee deceived” and “5.7 million records exposed” was zero additional steps. 
  • Detection lag: Two login-anomaly alerts fired during the attack but sat unread until Monday morning, because detection depended on a human reviewing alerts during business hours. The attack landed on a Saturday specifically because that assumption holds. 

What Could Have Prevented It

Every control the OAIC pointed to shares a common thread: each one lives at the layer of what an authorized session does, not who was authorized to log in. That’s the gap between an identity-focused security posture and a business logic-aware one and it’s exactly where this breach slipped through. 

  • Admin-only app authorization: Restricting connected-app approval to administrators; the fix Salesforce has since made the global default closes the specific entry point used here. 
  • Real-time exfiltration monitoring: Bulk extraction of millions of records through a valid, authenticated API session isn’t a login anomaly, it’s a behavioral one. Flagging that pattern the moment it starts, rather than waiting for a human to review alerts, is what turns a 36-hour undisturbed window into a blocked session. 
  • 24/7 alert triage: Attackers deliberately strike on weekends because they know detection is business-hours-only. Around-the-clock monitoring removes that window. 
  • Rate limits and approval gates on mass retrieval: Even a successfully deceived session shouldn’t be able to pull millions of rows unchallenged. Throttling or step-up approval on bulk queries shrinks the blast radius after authorization has already succeeded. 
  • Callback verification for unsolicited IT contact: A mandatory ticket-number check or callback to a known internal line directly counters the social engineering pretext that started the chain. 

Every one of the controls above depends on watching behavior inside an authorized session, not just verifying the session’s credentials and that’s the layer identity and access tools were never built to see. AppSentinels’ Business Logic Graph continuously maps how users, apps, and API sessions actually interact with data and workflows, so a contact center agent’s session suddenly running bulk extraction queries it has never run before shows up as a deviation in real time, not a login alert someone reads two days later. The Qantas breach didn’t need a stolen password to succeed. Catching it required watching the business logic, not the login page. 

The Regulatory Signal Worth Noting

The OAIC’s decision not to penalize Qantas is not an endorsement of the status quo; the regulator said as much explicitly, and complaints over the breach are still being handled separately. But the underlying finding is worth sitting with: an organization can maintain ISO 27001 compliance, require it of its vendors, and still be found to have done everything reasonable available at the time and still lose 5.7 million customer records to a single phone call. Compliance frameworks and access controls set a floor. They were never designed to catch a legitimately authorized session doing something it shouldn’t. 

For security and product leaders, the lesson isn’t that Qantas got lucky with the regulator. It’s that “reasonable” defenses, as currently defined across the industry, have a structural blind spot at exactly the layer where this attack and a growing number like it actually happened.

Book a demo to learn how AppSentinels helps you stay ahead of such breaches.

FAQs

What caused the Qantas data breach?+

A threat actor called a Qantas contact center agent posing as internal IT support and convinced them to authorize a malicious third-party app inside Salesforce. The agent’s own valid session then issued the attacker an OAuth token with full existing permissions, no password was stolen and no MFA challenge was triggered.

How many records were exposed in the Qantas breach?  +

Approximately 5.67 million customer records were extracted, including about 5.12 million belonging to Australians. Around 4 million records contained names, phone numbers, emails, and Frequent Flyer details; a further 1.7 million also included addresses, dates of birth, gender, or meal preferences. No credit card, financial, or passport data was accessed.

Why wasn’t Qantas fined for the breach? +

Australia’s privacy regulator, the OAIC, closed its preliminary inquiry in July 2026 without action, concluding Qantas could not have reasonably foreseen or prevented an attack of this specific kind, despite the airline requiring ISO 27001 compliance from its contact center vendor. The regulator noted the finding is not a concluded endorsement of Qantas’s practices, and related complaints are still being handled separately.

Could multi-factor authentication have stopped this attack?  +

No. The attacker never logged in and never needed to bypass MFA, because the compromised agent’s own already-authenticated session approved the malicious app. This is a defining feature of consent phishing and OAuth-token abuse: it bypasses credential-based defenses entirely by working through legitimate authorization flows.

What is the single change that would have prevented the Qantas breach?  +

The OAIC identified Salesforce’s default setting allowing any end user, not just administrators, to authorize third-party connected apps as the central vulnerability. Salesforce has since changed that default globally. Beyond that fix, real-time monitoring for anomalous bulk data extraction and around-the-clock alert triage would have shortened or stopped the attack even after authorization succeeded.

Table of Contents

Related Content