Harbor Default Credentials: A Case Study in Container Registry Security
#07MEDIUM/ FirewallFables/ Oct 3, 2026/ 4 min read
#Introduction
During a routine reconnaissance engagement, we identified an exposed Harbor Container Registry instance at harbor.example-registry.internal. Harbor is an open-source container registry used by organizations to store, sign, and scan container images. When misconfigured, it can leak the entire software supply chain of an organization.
This post documents our discovery, the impact assessment, and the responsible disclosure process.
#Discovery
The instance was identified through standard subdomain enumeration. Upon navigating to the Harbor web UI, we were prompted for login credentials. We tested the default credentials that ship with every Harbor installation:
- Username: admin
- Password: Harbor12345
The login succeeded immediately.
#What We Found
Once logged in, we had full administrative access to the registry. The instance contained:
- 65 container repositories across 7 projects
- Approximately 92 GB of container images
- Repositories belonging to the registry operator organization (59 repos), including production services, monitoring stacks, and internal tooling
- A Mattermost project with OIDC-enabled images suggesting Keycloak integration
- A personal user project with personal images
Notable repositories included:
- registry-operator/opsmondo — the main ops platform
- registry-operator/auth-gateway — authentication gateway service
- registry-operator/monitoring-stack — Prometheus/Grafana infrastructure
- mattermost/mattermost-server — team communication platform
- Various proxy cache repositories for Docker Hub images
#Potential Impact
The exposure of a container registry with administrative access carries severe supply chain risks:
| Risk | Description |
|---|---|
| Secret Extraction | Container images often contain hardcoded API keys, database credentials, and TLS certificates in their layers |
| Malicious Image Injection | An attacker could push compromised images that would be pulled into production |
| Image Tampering | Existing images could be replaced with backdoored versions |
| Source Code Leakage | Application source code embedded in image layers could be extracted |
| Infrastructure Reconnaissance | Image configurations reveal internal network architecture, service dependencies, and third-party integrations |
#Responsible Disclosure Timeline
| Date | Event |
|---|---|
| 2026-07-14 | Vulnerability discovered and verified |
| 2026-07-14 | Report sent to the registry operator |
| 2026-07-14 | The registry operator acknowledged, rotated credentials, and began RCA |
The disclosure process was straightforward — we reported the finding directly to the registry operator, and their team responded the same day. Within hours, the default credentials were disabled and an internal investigation was underway.
#Remediation
The registry operator took the following steps:
- Rotated credentials — The default admin password was replaced with a strong, unique credential
- Initiated an RCA — Root cause analysis to determine how long the exposure existed and whether any unauthorized access occurred
- Incident response — Reviewing image access logs and audit trails
#Recommendations for Organizations Using Harbor
If you run a Harbor instance, here are the minimum security measures you should implement:
- Never use default credentials. Change the admin password immediately after installation.
- Enforce strong passwords. Harbor supports configurable password policies — use them.
- Enable OIDC/LDAP authentication. Integrate with your organization's identity provider rather than using local accounts.
- Use robot accounts for automation. Robot accounts support granular permissions and can be scoped to specific projects and actions.
- Enable vulnerability scanning. Harbor's built-in scanner (Trivy, Clair) should be mandatory for all projects.
- Set up audit logging. Monitor login attempts, image pulls, and configuration changes.
- Restrict network access. Harbor should not be exposed to the public internet. Use VPNs, Cloudflare Tunnels, or IP whitelisting.
- Tag images immutably. Prevent overwriting existing tags to avoid tag-confusion attacks.
#Conclusion
Default credentials remain one of the most common and most dangerous misconfigurations in production environments. Harbor's default credentials (admin:Harbor12345) are well-known and routinely targeted by automated scanners.
We commend the registry operator for their rapid response and professional handling of this disclosure. Their team acknowledged the issue, took immediate corrective action, and began a thorough RCA — all within hours of our initial report.
#About Firewall Fables
Firewall Fables is a security research initiative focused on identifying and responsibly disclosing vulnerabilities in production systems. Our goal is to make the internet safer by documenting real-world exposures and helping organizations understand how to protect themselves.
If you found this post valuable, consider supporting our work. Donations help us dedicate more time to research and disclosure.
This disclosure followed our standard responsible disclosure process: identify → verify → report → wait for remediation → publish. No sensitive data was extracted or stored during this research.
Pass it on
More fables
No Auth, 164 Million Records: The Malawi Credit Bureau Exposure
A Kibana dashboard with zero authentication exposed the entire Malawian credit bureau — 2.4 million full identity profiles, 49 million loan records and live application logs — to anyone who knew the IP.
Shai-Hulud Supply Chain Attack
How a self-spreading npm worm turned stolen maintainer tokens into a cascading supply-chain compromise across hundreds of packages.
The SQLite File That Exposed a Monitoring Environment
A three-year-old Grafana path traversal led to a plaintext database, then to Zabbix API access, then to a full infrastructure map.