← Back to blog
Cybersecurity & Compliance

How Does Vulnerability Chaining Turn Minor Misconfigurations Into Critical Account Takeovers?

How do three findings a scanner rates low add up to a full account takeover? Let’s find out.

Vulnerability chaining combines low severity weaknesses so that exploiting one creates the condition for the next, ending in an impact none carried alone. A misconfigured email field, a predictable token, and a missing rate limit, chained in sequence, reset any user’s password. That is how vulnerability chaining turns a backlog of minor findings into a critical account takeover.

This guide is for AppSec leads, CISOs, and penetration testers who triage by severity and keep hitting the limits of that approach. It explains what vulnerability chaining is, why severity scores hide it, which real account takeover chains researchers have reproduced, and how to break a vulnerability chain at a single link. Think of vulnerability chaining as a backlog problem: the fixes you deferred are the links an attacker needs.

What is Vulnerability Chaining?

Vulnerability chaining, also called exploit chaining or attack chaining, is an exploitation technique in which an attacker links several security weaknesses to reach a goal that no single weakness could reach on its own. The output of the first flaw, a leaked identifier, a reusable token, an unfiltered redirect, becomes the entry condition for the second, and so on until the chain terminates at something the business cares about: account takeover, data exfiltration, or fund theft.

The idea is old, but it has become the dominant shape of real world compromise because defenses have improved against single, high severity bugs. A lone SQL injection or a lone authentication bypass is rarer than it was, and more likely to be caught. What remains in abundance is the long tail of minor issues that every application accumulates: an information disclosure here, a weak object reference there, a password reset flow that trusts an unverified email. Attackers no longer need one catastrophic bug when three ordinary ones, in sequence, do the same work.

The defining property of a chain is that its combined impact exceeds the sum of its parts. An information disclosure that leaks a user ID is informational on its own. An insecure direct object reference that accepts that ID without an ownership check is medium at most. A password reset token that is predictable once you know the ID is medium again. Put end to end, those three let an attacker reset any account’s password, which any team would score critical if it arrived as a single report. Vulnerability chaining is how the backlog of “we’ll get to those” becomes the incident.

Why Do Severity Scores Hide Chaining Risk?


Most teams prioritize remediation by severity, and most severity comes from CVSS. The problem is structural: CVSS scores each vulnerability in isolation, and its own maintainers say so. The Forum of Incident Response and Security Teams, which owns CVSS, states that the base score measures severity rather than risk and should not be used alone to assess it. The US National Vulnerability Database repeats the same caution.

Severity in isolation is exactly the wrong lens for vulnerability chaining. The CVSS base vector has no field for reachability, no field for what becomes possible once the first flaw is exploited, and no field for the business objective at the end of the path. A finding that is trivial alone can be the decisive link in a critical chain, and the score will never show it. The score answers how bad a vulnerability is by itself, while an attacker is asking what a vulnerability makes possible next.

The practical result is a backlog sorted the wrong way. A queue triaged strictly by CVSS pushes a cluster of low and medium findings to the bottom, where they sit unpatched because each one, read alone, looks harmless. The attacker reads the same queue differently. They look for the low severity findings that connect, because connection is where the leverage is. A vulnerability chaining assessment answers a sharper question than a longer list of isolated findings does: which weaknesses line up into a path.

Recommended read: If you or your team are weighing where a longer scan leaves you exposed, this article on manual versus automated penetration testing is a great place to start, because it explains which classes of weakness tooling finds and which only a tester reaches.

How is a Vulnerability Chain Built, Step by Step?

Chaining follows a repeatable logic, and understanding it is the first step to defending against it. An attacker rarely starts with the account takeover in mind. They start by mapping the application, cataloguing every small anomaly, and then asking which anomalies feed each other.

Vulnerability Chaining



The usual progression runs through four roles. First comes a foothold: an information disclosure, a verbose error, or a default configuration that reveals how the application is built. Second comes a capability: a broken access control or an insecure direct object reference that lets the attacker act on an object they should not reach. Third comes an amplifier: a missing rate limit, an open redirect, or a reflected cross site scripting flaw that turns a single user action into a scalable or stealthy one. Fourth comes the terminus: the password reset, the email change, or the session grant that converts all of the above into control of an account.

What makes vulnerability chaining dangerous is that each link lowers the bar for the next. Information disclosure makes an insecure direct object reference trivial, because the attacker now knows which identifiers to supply. A missing rate limit makes a predictable token exploitable, because the attacker can brute force it before it expires. An open redirect inside a password reset link makes a phishing step credible, because the link genuinely originates from the application’s own domain. A chain is a sequence an attacker assembles deliberately, and a tester reproduces it to prove the business risk.

Which Real Vulnerability Chains Reached Account Takeover?

Public cases show how ordinary the links are. In GitLab’s CVE 2023 7028, a single weakness in the password reset flow let an account’s reset email be delivered to an unverified, attacker supplied address, and GitLab scored it a maximum CVSS of 10 precisely because it reached account takeover without user interaction. It is a clean illustration of the terminus link: trust placed in an unverified email field is enough to hijack the reset process, and GitLab’s own guidance noted that multi factor authentication blocked the final takeover even where the reset still fired.


The nOAuth class, disclosed by Descope in 2023 and still live in 2025, shows the same trust failure one layer up. Applications that used the email claim as a primary user identifier, combined with Microsoft Entra ID’s allowance for unverified email addresses across tenant boundaries, let an attacker set a victim’s email on an attacker controlled account and sign in as the victim. Research two years after disclosure found roughly 9 percent of tested gallery applications and an estimated 15,000 SaaS applications still vulnerable. The root is a misconfiguration anti pattern: the application trusts an unverified claim.


Multi link chains are the norm in bug bounty write ups. Atlassian patched a set of flaws that, chained, allowed one click account takeover across subdomains: a cross site scripting flaw combined with cross site request forgery and session fixation, none critical alone, together enough to hijack any account. The pattern repeats across independent research: two insecure direct object references chained into account takeover, a reflected cross site scripting flaw chained with a link manipulation bug to produce a one click takeover delivered through the application’s own trusted email address. In each, the individual findings would have been triaged as low or medium and the chain as critical.

Recommended read: If you or your team are planning an assessment of a payments or fintech application where these chains do the most damage, this walkthrough of a fintech API security overhaul to SOC 2 readiness is a great place to start, because it shows broken access control and insecure direct object references surfacing together in a real engagement.

Why Do Scanners Miss a Vulnerability Chain?

An automated scanner is built to recognize patterns in isolation. It checks each endpoint against a library of known signatures and reports what it matches. That model is exactly the wrong shape for a chain, because a chain’s risk lives in the relationship between findings, not in any one of them. A scanner that flags an information disclosure as informational and an insecure direct object reference as medium has no mechanism to notice that the first makes the second trivial. It has no field for “and once I have this, the next thing becomes easy,” which is the entire substance of chaining.


This is also why a clean scan is not proof of safety. A scanner can return zero high severity findings on an application that an attacker can take over in three steps, because every step scored low and the tool never modeled the path between them. The gap is usually discovered the hard way, after a release has already exposed the route, rather than through intentional validation. Finding a potential weakness is not the same as demonstrating an exploitable one, and demonstrating a single exploitable weakness is not the same as proving a chain.


Breaking out of that limitation requires testing that reasons about paths, not just patterns: exploring the application, forming a hypothesis about which boundary will fail, chaining weaknesses where they connect, and proving the result by reproducing it. That is the difference between a list of findings and an attack path.

Recommended read: If you or your team are trying to understand why a passing scanner still leaves exposure, this guide to conducting a cyber security assessment versus a security risk assessment is a great place to start, because it separates what each method can and cannot prove.

How Do You Break Each Link in a Vulnerability Chain?

The defensive advantage in chaining is that a chain fails if any single link is removed. You do not have to fix every low severity finding to stop the account takeover. You have to break the sequence at one point. The table maps common link roles to the control that severs them.

Link role in the chainCommon weaknessControl that breaks the link
FootholdInformation disclosure, verbose errors, default configurationSuppress internal identifiers and stack traces in responses; harden defaults; align to OWASP A02 Security Misconfiguration guidance
CapabilityInsecure direct object reference, broken access controlEnforce server side authorization on every object by the authenticated session, never by a client supplied identifier
AmplifierMissing rate limit, open redirect, reflected cross site scriptingRate limit sensitive flows; allowlist redirect targets; encode output and set a strict content security policy
TerminusPassword reset to unverified email, email claim trust, session fixationVerify email ownership before trust; never use an unverified claim as a primary identifier; rotate session identifiers on authentication; require step up authentication for account critical actions


Two controls deserve emphasis because they break the most common terminus links. First, never trust an unverified email, whether in a password reset flow or an identity token’s email claim; verify ownership before any account action depends on it. This single control would have broken both the GitLab and nOAuth terminus links. Second, enforce multi factor authentication on account critical actions. GitLab’s own advisory confirmed that MFA prevented the final takeover even when the reset email itself still fired. MFA does not fix the underlying flaw, but it removes the last link’s payoff.

Is Your Testing Ready to Catch Vulnerability Chaining?


Use this list to judge whether your current testing and controls would catch a chain, not just its parts.

  1. Low and medium findings are reviewed for how they connect, not only triaged by CVSS in isolation.
  2. Authorization is enforced server side on every object, by session, never by a client supplied identifier.
  3. No password reset, email change, or identity flow trusts an unverified email address or email claim.
  4. Sensitive flows (reset, login, token issuance) are rate limited against brute force and enumeration.
  5. Redirect targets are allowlisted, and output is encoded with a strict content security policy in place.
  6. Multi factor authentication is required for account critical actions, so a reset alone cannot grant access.
  7. Session identifiers rotate on authentication, closing fixation as a terminus link.
  8. Your last assessment reproduced attack paths end to end, not just reported isolated findings.

Frequently Asked Questions (FAQs) About Vulnerability Chaining and Account Takeover

These are the questions teams ask most often when they move from triaging findings in isolation to defending against the chains those findings form.

1. What is vulnerability chaining?

Vulnerability chaining is combining two or more individually low impact weaknesses so that exploiting one creates the precondition for exploiting the next, producing a high impact outcome such as account takeover that no single weakness could achieve alone.

2. Can low severity vulnerabilities really lead to account takeover?

Yes. Most real account takeovers come from chained low and medium findings, not a single critical bug. An information disclosure, an insecure direct object reference, and a predictable reset token are each minor alone but together let an attacker reset any account’s password.

3. Why does CVSS miss chained risk?

CVSS scores each vulnerability in isolation and, by its maintainers’ own statement, measures severity rather than risk. It has no field for reachability or for what a flaw makes possible next, so the decisive link in a chain often carries a low score.

4. Can vulnerability scanners detect chains?

Generally no. Scanners match known patterns on individual endpoints and cannot model the relationship between findings. A scan can return zero high severity results on an application that is three steps from takeover, because each step scored low and the path between them was never tested.

5. Does multi factor authentication stop account takeover from a chain?

It stops the most common terminus. A chain that ends in a password reset still cannot complete if a second factor is required, because the attacker controls the reset email but not the second factor. Multi factor authentication does not fix the underlying flaws, but it removes the last link’s payoff.

6. How do you defend against vulnerability chaining?

Break any one link. Harden misconfigurations to remove the foothold, enforce server side authorization to remove the capability, rate limit and allowlist to remove the amplifier, and verify email ownership plus require multi factor authentication to remove the terminus. A chain fails if a single link is severed.

Start Here

Start by rereading your last assessment with one question: do any of the low and medium findings connect into a path? If your reports list findings but never trace the paths between them, that is the gap to close first.

CredShields One is built to find the vulnerability chains that isolated findings hide. The agents behind CredShields One explore your application, chain weaknesses the way an attacker would, and reproduce each path as a replayable proof, so account takeover risk is verified rather than theoretical and you can see which single link to break first. It runs on demand and again as your application changes, which brings chaining aware pentesting in house. Scope a web application penetration test to put it against your application.