Skip to main content
The state of ai impact assessment
8.8 Million Records Breached With '123456'Breach & Risk Assessment
4 min readFor IT Security and Risk Teams

8.8 Million Records Breached With '123456'

What Happened

On September 10, an attacker accessed Denmark's Central Register of Persons (CPR) using credentials from Pays ApS, an IT company with legitimate access. The attacker used the password "123456" to authenticate and performed 14 million automated searches between September 10 and September 20, accessing data for 8.8 million people.

The breach went unnoticed for 12 days after the final unauthorized searches. A government employee discovered it on October 2 when reviewing an invoice showing unusual activity from Pays. The Danish government notified Datatilsynet on October 4 and publicly disclosed the breach on October 5.

Reports indicate that at least three company accounts, including an administrator account, were protected by the same weak password.

Timeline

September 10: Unauthorized access gained through Pays ApS credentials

September 10-20: Attacker conducts 14 million automated searches in the CPR system

September 20: Last unauthorized searches recorded

October 2: Breach detected by government staffer reviewing invoice

October 4: Datatilsynet notified

October 5: Public breach disclosure

Which Controls Failed or Were Missing

Password Strength Requirements

Pays ApS used "123456" on at least three accounts with access to a national identity register. This password is easily cracked and appears on every compromised credentials list. No technical control prevented its use.

The administrator account also used this password, allowing a single compromise to grant elevated access across the vendor's systems.

Multi-Factor Authentication

The system relied solely on passwords. No second factor was required, even though the account accessed sensitive government data.

Account Activity Monitoring

The attacker executed 14 million searches over 10 days without triggering any alerts. The breach was discovered manually through invoice review, not security monitoring.

Vendor Security Assessments

Pays ApS had authorized access to validate customer records. The CPR administration granted this access without enforcing password complexity or detecting credential misuse.

Access Provisioning Controls

Three accounts shared the same password, indicating no process ensured unique, strong credentials. No automated system enforced password policies at account creation.

What the Relevant Standard Requires

GDPR Article 32: Security of Processing

Article 32 mandates "appropriate technical and organisational measures" based on the state of the art and processing risks. Measures must include:

  • Pseudonymisation and encryption where appropriate
  • Systems ensuring ongoing confidentiality, integrity, and availability
  • The ability to restore availability after incidents
  • Regular testing and evaluation of measure effectiveness

A password like "123456" doesn't meet the "state of the art" standard. Basic password complexity requirements have been standard for decades.

GDPR Article 28: Processor Obligations

Article 28(3)(c) requires controllers to ensure processors implement "appropriate technical and organisational measures." The controller must verify these measures before granting access.

The CPR administration's failure to audit or enforce security standards at Pays violates this obligation.

ISO/IEC 27001 A.9.4.3: Password Management System

This control requires enforcing password quality rules, including minimum length, complexity, and prohibition of common passwords. Administrator accounts must use stronger authentication than standard users.

NIST SP 800-63B: Digital Identity Guidelines

NIST requires checking proposed passwords against lists of commonly used or compromised values. "123456" appears on all such lists. NIST also recommends multi-factor authentication for accounts accessing sensitive data.

Lessons and Action Items for Your Team

Implement Technical Password Controls

Use automated password screening against breach databases. Tools like Have I Been Pwned's API can reject compromised passwords at creation. Enforce strong passwords programmatically.

Prevent password reuse across accounts. If identical passwords are detected, especially on administrator accounts, force immediate resets.

Require Multi-Factor Authentication on Third-Party Access

Require MFA for any vendor account accessing personal data. Configure your identity provider to enforce this at the authentication layer. Use time-based one-time passwords (TOTP) at minimum; prefer hardware tokens or biometric factors for administrator access.

Monitor Vendor Activity Baselines

Establish normal activity ranges for each vendor account. If Pays typically runs 500 searches per day, alert when searches hit 50,000. Configure your logging infrastructure to track API calls, search volumes, and data exports per account per hour.

Don't rely on invoices to reveal anomalies. Your security information and event management (SIEM) system should detect unusual patterns in real time.

Audit Vendor Security Before Granting Access

Article 28 makes you responsible for your processor's security measures. Before granting vendor access:

  • Request evidence of password policies (minimum length, complexity, rotation requirements)
  • Verify MFA is enabled on all accounts accessing your systems
  • Review their access logging and monitoring capabilities
  • Require annual security assessments or SOC 2 reports

Document these reviews. If a breach occurs, you'll need to demonstrate due diligence.

Segment Vendor Access by Function

Pays needed to validate customer records, not search 8.8 million records in 10 days. Implement rate limiting on vendor API access. Define maximum searches per hour based on legitimate business need and enforce it technically.

Use role-based access control to restrict vendors to the minimum data set required for their function. If they validate addresses, they don't need access to full identity records.

Test Your Detection Capabilities

The 12-day gap between the final unauthorized searches and detection is unacceptable. Run tabletop exercises simulating a credential compromise. Measure detection time. If detection relies on invoice review, you have a gap.

Deploy user and entity behavior analytics (UEBA) tools that baseline normal account behavior and flag deviations automatically. Configure alerts to notify your security operations center when vendor accounts exceed activity thresholds.

This breach was preventable. The password "123456" has been known as insecure since the early 2000s. Every failed control is documented in frameworks you reference. The question isn't what to do; it's whether you're doing it.

a promotional banner asking how ready are you for PCI DSS 4.0? With a call-to-action to get the checklist now.

You Might Also Like