Penligent Header

暗号取引所データ流出の深層:MongoDBの設定ミス、2FAシードの流出、そしてコンプライアンスへの影響(2025年)

Summary
A crypto exchange identified as NCX allegedly left an internal MongoDB instance exposed on the public internet with no authentication. The database was reachable for months, held ~1GB of data and more than 5 million records, and included names, emails, dates of birth, KYC document links, hashed passwords, 2FA seeds/URLs, internal API keys, IP history, account wallet addresses and transaction logs.(Daily Security Review) This is not just “PII leak.” It’s a full-stack compromise surface: identity theft, KYC fraud, account takeover, on-chain targeting, regulatory exposure, and incident response obligations under modern data protection regimes that require disclosure within 72 hours.(GDPR)

This article approaches the NCX-style breach from two angles:

  1. Offensive testing / red team reality — how this misconfiguration turns into active exploitation.
  2. Compliance and response — what you’re required to do once you know you’ve lost control of customer identity data and multi-factor secrets.

We’ll also map how a continuous offensive testing platform like Penligent can surface and simulate these exact failure modes before a regulator, attacker, or journalist does.

Incident Overview: What Leaked and Why It Matters

The reported issue is simple in phrasing and brutal in consequences: an internet-facing MongoDB instance with no auth. Anyone who knew (or could guess/scan) the IP and port could browse collections in plaintext.(Daily Security Review)

Data Types Exposed

According to the disclosure, the NCX dataset contained (per-record, over millions of rows):

  • Full name / email / date of birth
  • KYC image or document links (passport, ID scans)
  • 2FA seed values and enrollment URLs
  • Hashed passwords
  • IP address history and login metadata
  • Internal API keys / service tokens
  • Wallet addresses, deposit / withdrawal history, chain activity
  • Account status flags (ban / freeze / risk)
  • Support ticket logs

This is unusually bad for three reasons:

  1. Identity takeover at scale
    If an attacker has your legal name + DoB + passport image, they can open accounts elsewhere, social-engineer “account recovery,” or pass KYC at weaker venues. This is textbook identity theft leverage.(Daily Security Review)
  2. MFA bypass through 2FA seed exposure
    If time-based one-time password (TOTP) seeds are stored and leaked, an attacker can generate valid 2FA codes on demand and log in as you — even if you never shared your password. Compromised 2FA seeds are essentially “pre-baked session tokens.”(Daily Security Review)
  3. Custodial + on-chain targeting
    Wallet addresses and transaction histories let an adversary map which users actually move size. Those high-value targets can then be phished (“Your withdrawal is blocked, please sign here”) or SIM-swapped. We’ve seen crypto platforms warn breached users to expect personalized phishing using exactly this playbook.(Daily Security Review)

No-Response Problem

The researchers who found the open MongoDB reportedly attempted responsible disclosure multiple times and did not receive a timely reply.(Daily Security Review)
From a regulatory point of view, that is catastrophic: GDPR-class regimes and many national data protection authorities expect rapid containment, evidence preservation, breach notification to regulators within 72 hours, and in many cases, user notification if the risk to users is high.(GDPR)

Crypto Exchange

Attack Chain: How a Red Team Turns “Open MongoDB” into Full Account Compromise

This section is written like a penetration test narrative, because that’s how an attacker (or a responsible tester) would walk it.

Step 1: Enumeration of exposed MongoDB

  • Port scan wide swaths of cloud address space for classic MongoDB ports (27017/27018).
  • Grab banner / server status to confirm unauthenticated access.
  • List databases and collections (db.getCollectionNames() etc.).
  • Dump high-value collections: users, auth, kyc, wallet, transactions, apiKeys, tickets.

In other words, this isn’t “0-day.” It’s 1990s-level misconfiguration: database on the internet, no auth, no firewall. CISA and NIST repeatedly warn that internet-exposed datastores without authentication remain one of the most common breach entry points.(European Commission)

Here’s a simplified pseudo-session an attacker might run from a test box (don’t run this against systems you do not own or have permission to assess; performing unauthorized access is illegal):

# Discover open MongoDB hosts (example logic only)
nmap -p 27017 --open <CIDR> -oG mongo_hosts.txt

# Connect to a discovered host without credentials
mongosh --host <FOUND_IP>:27017 --eval "db.adminCommand('listDatabases')"

# Enumerate collections in a target DB
mongosh --host <FOUND_IP>:27017 --eval "use ncx_users; db.getCollectionNames()"

# Dump user-related documents
mongosh --host <FOUND_IP>:27017 --eval "use ncx_users; db.users.find().limit(5).pretty()"

For a real red team, this is table stakes. For a regulator or plaintiff’s lawyer, this is smoking-gun evidence that the system had “no reasonable security controls.”

Step 2: Harvest secrets and auth material

Once inside, an attacker pulls:

  • password_hash or equivalent
  • totp_seed / 2fa_secret
  • api_key / api_secret
  • KYC file URLs

This is the jackpot. Password hashes can be cracked offline; TOTP seeds let you mint valid MFA codes; API keys may talk to internal admin or trading backends.

Security researchers and DFIR teams have noted repeatedly that leaked 2FA seeds and “reusable” API credentials are high-value loot because they turn into direct account takeover and lateral movement.(Daily Security Review)

Step 3: Simulated account takeover

With a username/email + password (or hash cracked offline) + stolen TOTP seed, an attacker can generate valid 6-digit codes locally. That means full login without ever touching the victim’s phone.

If the exchange supports password reset by email plus 2FA, and both are compromised, the attacker can lock the user out entirely. This scenario — MFA bypass using stolen TOTP or reset-factor data — is exactly why crypto breach response guides tell affected users to immediately rotate credentials, re-enroll MFA, and monitor withdrawals.(CCN.com)

Step 4: KYC and identity abuse

Because KYC image links and ID scans were reportedly in the clear (or behind guessable / long-lived URLs), attackers can use them:

  • to open new exchange accounts elsewhere as someone else;
  • to social-engineer customer support at other services (“I’ll send you my passport now, please unlock”);
  • to phish high-value users with highly personal detail (“Hi , per AML we froze your withdrawal…”).

We’re already seeing crypto platforms publicly warn that leaked KYC artifacts become fuel for tailored phishing and fraud.(Daily Security Review)

KYC

Step 5: On-chain targeting

Wallet addresses and transaction logs tell you who actually moves serious volume. That list is gold for:

  • spear-phishing (“security verification” scams),
  • extortion threats,
  • dusting attacks and approval hijack scams (sign this, lose funds).

Attackers have pivoted from “steal exchange passwords” to “weaponize leaked financial metadata” because it scales and it social-engineers better.(Daily Security Review)

Defensive and Remediation Checklist (Technical)

This is what NCX (or any crypto exchange, fintech wallet, or KYC-heavy platform) should be doing immediately after discovering an open MongoDB leak.

Database security baseline

  • Kill public exposure now: remove the instance from public routing or lock it behind firewall rules / VPC-only access.
  • Require auth: enable MongoDB authentication and role-based access; never allow anonymous reads from the internet.
  • TLS everywhere: force encrypted transport, not plaintext.
  • Principle of least privilege: user-facing microservices should see only the collections they absolutely need.
  • Logging & alerting: wire up continuous audit logs on access attempts and anomalous queries. NIST and EU regulators expect records showing who accessed what, when, during and after a breach.(European Commission)

Secret and key governance

  • Rotate API keys found in the dump, assume they’re compromised.
  • Invalidate long-lived “private URLs” to KYC images; move those assets behind short-lived signed URLs with strict ACL (e.g. presigned S3 URLs with minute-scale expiry, IP limits, and audit).
  • Harden internal admin APIs that the leaked keys could hit: e.g. require mutual TLS, IP allowlists, device posture.

2FA / MFA reset at scale

  • Treat all exposed TOTP seeds as burned. Force re-enrollment for affected accounts.
  • Require fresh 2FA setup with new seeds that are never stored in plaintext.
  • For high-risk accounts (e.g. large balances), temporarily add step-up verification for withdrawals and password changes. Security teams and even regulators encourage post-breach “adaptive friction” on high-value operations.(CCN.com)

KYC data handling

  • Move KYC docs into encrypted storage with strict access control and short-lived retrieval tokens, not permanent public-ish links.
  • Add access logging at the object layer (who viewed passport X at time Y).
  • Minimize retention — GDPR requires data minimization and purpose limitation. If you don’t need a full-res passport scan forever, don’t keep it forever.(GDPR)

Forensics + incident response discipline

  • Snapshot the exposed DB for evidence.
  • Capture access logs before/after takedown for timeline reconstruction.
  • Begin breach notification workflow:
    • notify data protection authority within 72 hours of awareness, unless you can prove low risk;
    • notify impacted users “without undue delay” if there’s high risk to them (identity theft, account takeover clearly qualifies).(GDPR)
  • Document the entire chain of custody. Both GDPR and most cyber insurers expect you to preserve evidence and remediation steps.(Perkins Coie)

Below is a simplified remediation timeline you’d expect to execute in the first 48 hours after discovery:

Time windowAction
First 2-4 hoursPull DB off the internet / firewall it, snapshot evidence, start logging everything.
First 12 hoursRevoke API keys, invalidate exposed URLs, freeze high-risk withdrawals.
First 24 hoursForce password + 2FA reset for exposed accounts; trigger adaptive friction.
Within 48 hoursDraft regulator notification, draft customer notification, brief legal & compliance.
≤72 hours (GDPR window)Notify relevant authority + impacted users, provide incident summary + mitigation.

Regulators like the EU DPAs and the UK ICO explicitly call out that breach reporting to authorities generally must happen within 72 hours of awareness, and that you must also be ready to notify affected individuals if there’s “high risk” to them.(GDPR)

Compliance Mapping: GDPR, SOC 2 / SOC 3, and Crypto-Specific Expectations

GDPR / EU-style data protection

Under GDPR Article 33 and Article 34, if you suffer a personal data breach that risks people’s rights and freedoms, you must:

  1. notify the supervisory authority within 72 hours of becoming aware, and
  2. inform impacted users “without undue delay,” describing what was exposed and what you’re doing about it.(GDPR)

For crypto, leaking KYC + identity docs + login metadata + 2FA seeds is absolutely “high risk” to individuals. It enables identity fraud, financial loss, and social engineering — regulators will not accept silence.

SOC 2 / SOC 3 style controls

In SOC 2 / SOC 3 language (security, availability, confidentiality), an open, unauthenticated production database is a straight violation of access control, network security, and change management expectations. You cannot pass a mature SOC audit if “critical customer PII and secrets are on a public IP with no auth.”

Breach notification and crypto trust

Crypto exchanges sit in a weird zone: some aren’t fully licensed banks but still handle customer money, passports, and AML/KYC data. That means:

  • You’re judged both like a fintech custodian (protect customer balances, prevent fraud) and like a data controller (protect personal data, notify breaches).(Daily Security Review)
  • If you don’t notify, you don’t just risk fines. You risk permanent brand damage inside crypto communities, who are already paranoid after years of exchange hacks and rug pulls.(CCN.com)

How to Catch “NCX-Class” Failures Before the Internet Does (Penligent View)

Let’s be blunt: “public MongoDB with no auth exposing 5M+ records” is the sort of thing a decent offensive testing loop should catch long before journalists do.(Daily Security Review)

Penligent (https://penligent.ai/) approaches this as continuous, automated adversarial testing — basically an always-on red team. Here’s how that maps:

Asset mapping and exposure monitoring

Penligent’s agents continuously map external attack surface (cloud IP ranges, subdomains, leaked services) and flag internet-facing datastores like unauthenticated MongoDB, Redis, Elasticsearch, object storage buckets, etc. This is exactly the class of misconfiguration that led to the NCX exposure.(Daily Security Review)

Sensitive data / key discovery simulation

Within authorized scope, Penligent attempts to identify high-value “crown jewels” in exposed services:

  • 2FA/TOTP seeds
  • API keys and service tokens
  • KYC document links or buckets
  • Wallet / withdrawal metadata

The platform then constructs an exploitation path (“with this seed we can generate MFA codes,” “with this key we can hit internal admin API”), which is what real attackers would do — but does so in a controlled sandbox instead of actually hijacking accounts. This creates an evidence-backed risk narrative security teams can take to leadership.

MFA and withdrawal path testing

Penligent can simulate conditional account takeover: “If an attacker stole this seed, could they log in? Could they withdraw without manual review? Could they reset email?” That gives you an ordered fix list instead of a panic spiral.

Compliance reporting

Finally, Penligent maps findings to GDPR 72-hour breach duties, SOC 2 / SOC 3 control failures, and crypto custodial risk. This matters because you don’t just need to fix the bug — you need to prove you had a process, you took action, and you can brief regulators.(GDPR)

In practice, that’s the difference between “we had no idea our DB was public for months” and “we have continuous discovery, we caught it, we contained it, here’s the log.”

FAQ (For Security, GRC, and Engineering)

Q1. What is the most common MongoDB misconfig that leads to breaches like NCX?

Publicly routable MongoDB with no authentication and no network ACL. Often dev/test instances get promoted to “temporary prod” and never get locked down. CISA/NIST have warned for years that exposed databases without auth are a recurring cause of large-scale leaks.(European Commission)

Q2. If a 2FA/TOTP seed leaks, can an attacker log in as me?

Yes, if the attacker also has your username/email and either your password or a cracked hash. With the seed, they can generate valid 6-digit codes endlessly. That’s why post-breach guidance always says: reset MFA, not just password.(Daily Security Review)

Q3. How should KYC images and ID scans be stored?

They should be encrypted, access-controlled, and retrievable only via short-lived signed URLs tied to an auth’d session — not static links that live forever. Every access should be logged. GDPR also expects “data minimization”: don’t hoard more personal data than you need.(GDPR)

Q4. How fast do we legally have to notify regulators and users?

Under GDPR-style regimes, you generally must notify the relevant authority within 72 hours of becoming aware of a breach that risks individuals, and you must inform impacted users “without undue delay” if the risk to them is high.(GDPR)

Bottom Line

“Misconfigured MongoDB” sounds like a rookie mistake. In crypto, it’s existential.
When you leak 5M+ user records with KYC IDs, hashed passwords, IP logs, wallets, and even TOTP seeds, you’re not just leaking emails — you’re leaking identity, liquidity, and trust.(Daily Security Review)

From a red team view, this is a near-automatic takeover path.
From a compliance view, it’s a regulatory clock you can’t stop.(GDPR)

This is why continuous, automated, evidence-driven offensive testing (asset discovery → exploit simulation → compliance mapping) is quickly becoming mandatory for any crypto platform that stores KYC and holds user funds. And if you’re a user on an exchange that had a breach like this? Change passwords, rotate 2FA, assume targeted phishing is coming, and seriously consider leaving.(CCN.com)

記事を共有する
関連記事