Attack Patterns · 3 of 5

Default or Trivial Credentials: When a Factory-Set Password Guards Every Record

Published September 15, 2026 · secureFlows

This is the third post in a series on the most common attack patterns. Patterns 1 and 2 were both missing checks — a broken ownership check or a missing rate limit. Pattern 3 doesn't even need a bug. The door was left on its factory lock, and nobody ever changed it.

Icon: an open padlock still wearing its factory-default tag An open padlock with a tag reading "admin / admin" still attached, and a fan of record cards peeking out from behind it, illustrating that a default password never really locked anything. admin / admin never changed after setup EVERY RECORD, ONE GUESS AWAY
A factory-default password isn't a weak lock — it's a lock that was never actually set.

What Is "Default or Trivial Credentials", Really?

Admin panels, internal dashboards, hiring tools, and backend APIs almost always ship with some account already set up, so whoever installs the software has a way in on day one: admin / admin, admin / 123456, or no password at all. That account is meant to be replaced during setup. The problem is how often it just isn't — especially when the whole app, backend included, was generated by an AI tool in minutes and nobody on the team ever saw a "set your admin password" step to skip.

Unlike pattern 1 and pattern 2, there's no logic bug to point at here. The access control works exactly as designed. The design just assumed someone would replace a placeholder that, in practice, was left sitting in production, reachable from the open internet. Taken to its extreme, this pattern doesn't even need a guessable password: the panel has no login gate at all, and anyone who finds the URL is already an admin.

How It Actually Happens

A team spins up an internal admin dashboard — for support staff, for HR, for whoever needs to look something up — using an AI app builder or a quick backend template. The template ships with a seed account for local testing. It works, the team moves on to the actual feature, and the dashboard goes live on a public URL because nobody put it behind a VPN or an allowlist. The seed account is still exactly what the template shipped with.

Diagram: the default-credentials bug An attacker submits the vendor's documented default username and password to a public admin login form. The server accepts it, because the credentials were never rotated, and grants full admin access. Attacker user: admin pass: admin found in the vendor's public setup docs Admin panel Credentials match ✓ Rotated on setup? ✗ Same as the day it was installed Full admin access Every record, export, and setting
There's no clever exploit here. The credentials that come pre-printed in the vendor's setup guide still work, because nobody was ever forced to replace them.

The misleading part: from the inside, everything looks fine. There's a login screen, it asks for a username and password, and it rejects the wrong ones. It looks like access control. It just never got a real secret behind it.

An Example from the Press

In July 2025, CSO Online reported that an AI hiring platform used by a major fast-food chain's franchisees to screen job applicants could be reached with the username and password "123456" — a credential pair anyone could guess in one try. The exposure reportedly touched data tied to an estimated 64 million applicant records. No injection, no stolen session token: just a login form that had never been given a real password to defend.

Read the article on CSO Online →

That's the same pattern behind several of the incidents surveyed in the main post — just in its more extreme form: not a weak default password, but no login gate at all. When researchers scanned thousands of AI-generated "vibe coded" apps in May 2026, roughly 40% of the sampled set were exposing sensitive data with little or no access control sitting in front of it — not "admin/admin" guessed correctly, just no door to knock on in the first place. When there's no gate at all, even the weakest possible password is already beside the point.

How to Fix It

There is no single magic button here either, but the checklist is short:

Diagram: the fix · forced rotation plus MFA The same login attempt with the default password, but this time the server has never accepted that password (it was rotated at setup) and additionally requires a second MFA factor, so the attempt is rejected. Attacker user: admin pass: admin still the vendor default Admin panel Rotated at setup ✓ Credentials match? ✗ Even if guessed: MFA still required 401 Unauthorized
Same guess, same panel. The difference is that there was never a real default to guess correctly, and even a correct guess would still need a second factor.

How to Check If Your App Is Exposed to This Pattern

This one takes five minutes and no special tools:

  1. List every admin panel, internal dashboard, and API management console your app — or the tool that built it — created.
  2. For each one, try the obvious credentials: admin/admin, admin/123456, admin/password, or an empty password.
  3. Check whether the panel even asks for a password at all — some don't, and that's the same pattern taken one step further.
  4. Confirm each one sits behind MFA, or isn't reachable from the public internet in the first place.

If any of these get you in, the fix isn't a stronger password — it's making sure a default never ships to production in the first place.

How secureFlows Solves This From the Start

secureFlows doesn't give your app a separate admin panel to secure, because login itself is hosted: there's no local admin account, seed account, or factory password shipped anywhere in your stack for someone to leave unchanged. Authentication runs through OAuth and secureFlows' own hosted login, the same way for every environment.

Workspace admins and owners still have a way to look at session data when they genuinely need to — but that access goes through the authenticated, audited API, not a forgotten login form on a public URL. Every read is logged, so "who accessed what" is answerable, instead of unknowable.

secureFlows logo

Want hosted, audited access instead of one more admin panel to keep patched? Hit the button below and start building with secureFlows.

Start Building for Free