New · Security testing

API security testing, built from the tests you already have

Generate OWASP-mapped security checks beside your functional REST, SOAP, GraphQL and JSON-RPC tests. BOLA, injection, SSRF, auth and config checks that run in your packs and CI — with findings that lead with what they could not check.

Security checks generated beside your tests, then run: a request with no credentials and an expired token are refused, a database quote is stored as text, but a second user reads another user's order, and the run ends with a critical BOLA finding

A paid add-on to Professional, Custom and Enterprise licences. Included in the 15-day trial. Who can use it

Why a separate security scan rarely tells the truth

A functional test asks whether your API gives the right answer to a correct request. A security check asks the opposite: when someone sends a request they should not be allowed to send, does your API refuse it?

  • A scanner that lives apart

    A standalone DAST tool keeps its own copy of your endpoints, environments and credentials. It drifts out of step with every release, so the scan tests an API you no longer ship.

  • A score that hides the fire

    One number rolls a critical authorization hole in with a dozen cosmetic header warnings. Nobody can tell from the grade which category is actually on fire.

  • Unanswerable probes counted as passes

    A gateway answers instead of the API, or a probe hits an id that does not exist, and a lazy report quietly scores it green. A clean grade then means nothing.

From functional suite to security coverage in five steps

  1. 1

    Generate

    Shift-Left API works through every endpoint and creates security checks as ordinary tests. Running it again refreshes rather than duplicates.

  2. 2

    Add a second user

    Add a second authentication profile as a principal. Without one, the checks that find the most serious flaws cannot run.

  3. 3

    Fill the access matrix

    Per endpoint, say who should be refused: Deny, Own data only, or Allow for a shared resource. Your answer always wins.

  4. 4

    Run

    Run the checks against a test environment you are allowed to test. Intrusive and data-changing checks stay off until allowed.

  5. 5

    Read the findings

    Read “What was not checked” first, then the posture in words and each finding with its CVSS, evidence and fix.

What carries over from your functional tests

There is nothing separate to install and no second copy of your endpoints, environments or credentials. Security checks are your own tests, asking the opposite question.

  • Generated beside your tests

    Shift-Left API creates security checks in the same project, as ordinary tests marked with a Security check chip. Nothing separate to install, no second copy of your endpoints.

  • Your environments and credentials

    Checks use the environments and authentication profiles you already have. Without a profile that can sign in, a credentialed check reports itself not evaluated rather than passing.

  • Real objects, not made-up ids

    A by-id probe copies your project’s own passing create test to make a real object, threads its id in, then copies the delete test to remove it afterwards.

  • They run where your tests run

    Security checks live in your packs, so they run on your schedules and from your CI like any other test — including the CI gate with a SARIF file.

  • Passive checks send nothing extra

    Many checks just read responses your other tests already received — a missing header, a cookie without protection, a card number in a body. No extra request is sent.

  • A fix belongs in the API

    A generated security check cannot be edited to accept what it exists to detect. Fix with AI, bulk repair and the assistant all refuse, and say why.

Nine areas, every one mapped to a standard

Each check maps to the OWASP API Security Top 10 (2023), OWASP ASVS and CWE. That mapping is evidence of testing, not a certification. 94 of the 100 checks in the catalogue run today; the six that do not are listed on every report with the reason.

Nine areas the security checks cover, each with the question it asks, mapped to the OWASP API Security Top 10
AreaWhat it asks
Getting in without a credentialIs a request with no credentials refused? A malformed, expired, wrong-issuer or someone-else’s token? A credential in the URL, or over plain HTTP?
One user reading another’s dataIs a second test user refused an object they do not own, or one belonging to another tenant? The commonest serious API flaw (BOLA).
Fields the caller should not setCan a role or admin flag be set from the body? Do responses carry secrets — keys, card numbers — or fields the specification never documented?
Being overwhelmedIs an oversized body refused without a server error? Is a burst rate-limited, and can the limit be bypassed by spoofing a forwarding header?
Operations the caller should not reachDoes an operation refuse a user marked Deny? Are management paths closed, undocumented methods refused, a destructive MCP tool refused to a lesser user?
ConfigurationSecurity headers, cookie attributes, no version number in server headers, TLS version and certificate, plain HTTP refused, CORS not echoing an untrusted origin.
Input treated as dataDatabase quotes, shell characters, path sequences, template expressions — each must be stored or rejected as text, with no database error or stack trace coming back.
Requests your API makesDoes a URL field refuse internal destinations? Several are sent — the cloud metadata address, a loopback, a decimal-encoded host — because each defeats a different defence (SSRF).
Old and undocumented versionsAre older or undocumented versions of a path still answering?

A report that leads with what it could not check

“Not evaluated” is not a pass. A gateway answered instead of your API, a probe hit an id that does not exist, a request-forgery probe was accepted and showed nothing — each is reported honestly, first, with the reason. Then the posture in words, and each finding with its CVSS score and vector, the evidence, the standards it fails and how to fix it.

  • What was not checked, first

    Every report opens with what it could not judge and why. A report that quietly counts an unanswerable probe as a pass is worse than no report.

  • No single score

    The posture is the worst open finding, in words — critical weaknesses open, high open, or every check that ran passed. One number would hide which category is on fire.

  • A finding per endpoint, check and field

    A failed check becomes one finding with a severity, a CVSS v3.1 base score and vector, the standards it maps to, the evidence and how to fix it.

  • CVSS calculated, never guessed

    The base score comes from fixed values per check, never from a model, so it pastes straight into a tracker. Shift-Left API’s own adjustments (production raises, no-auth-to-bypass lowers) are shown separately.

  • Only a person changes a finding

    Accepting a risk or marking a false positive needs a reason, kept with the decision. A run never overwrites a decision a person made.

  • Evidence redacted before it is stored

    Credentials, cookies and response bodies are never saved. A leaked card is reported by its last four digits, a private key as “a private key block (not shown)”.

A critical object-level authorization finding with its CVSS score and vector, what a safe API does, what was seen and how to fix it, beside a report that lists what was not checked before counting findings by severity

A finding stays yours: only a person can accept a risk or mark a false positive, always with a reason, and a run never overwrites that decision.

The question only a second user can answer

Object-level authorization — OWASP calls it BOLA — is the commonest serious API flaw: one user reading or changing another user’s order or profile just by putting its id in the URL. A scanner with a single identity cannot see it.

Add a second test user as a principal, then fill an access matrix: per endpoint, mark Deny (must be refused), Own data only (may call it, but only on objects it owns) or Allow (a shared resource, never probed). Deny builds the privilege checks; Own data only builds the object-level checks. Where you have not answered, Shift-Left API infers a likely rule, marks it inferred, and any finding resting on it is flagged Suspected — it never infers Deny.

How the checks are generated →
A second test user set up as a principal and an access matrix saying who should be refused what per endpoint, with a BOLA finding where user B was allowed another user's order

Detects, does not attack

  • Shift-Left API detects; it does not attack — benign, inert markers, never a working exploit
  • Checks are refused on production unless an Administrator specifically allows them, per environment
  • Intrusive checks (request bursts, overloaded bodies) are off until switched on, and never run against production
  • Data-changing checks are off until an Administrator allows a specific non-production environment, and never run against production
  • Shift-Left API never invents a request, a principal, an id or a body — where it cannot derive a step from a passing test, the check is not built rather than guessed
  • AI agents connected through the MCP server can read your posture and findings but cannot start a security run

Gate your build on it

Security checks run inside your packs, so they run wherever your packs run. The headless runner writes a SARIF file for GitHub code scanning or Azure DevOps, and fails the build on severity. --only-new lets a team adopt the gate without first clearing its backlog.

node backend/scripts/run-pack-cli.js \
  --pack <packId> --project <projectId> \
  --sarif security.sarif \
  --fail-on-severity high --only-new

Exports also include HTML, CSV, JUnit XML and JSON. Ready-made templates ship for GitHub Actions, GitLab, Azure Pipelines, Jenkins and TeamCity.

Paid add-on

API Security Testing add-on

API security testing is a paid add-on to a Professional, Custom or Enterprise licence. No edition includes it on its own, Enterprise included. The 15-day Trial includes it, so you can evaluate it before you buy.

  • Included in the Trial

    A 15-day Trial runs security checks so you can evaluate the whole feature before buying the add-on.

  • Citizen Developer (Free)

    Sees a locked preview with example data. The add-on cannot be bought on the free edition.

  • If the add-on ends

    Findings, runs and reports stay readable. New runs and changes to findings stop until it is renewed; an Administrator is warned 14 days before.

  • Permissions

    Separate permissions to view findings, run checks, manage findings and manage settings. A project you cannot see answers like one that does not exist.

Built-in security testing vs a separate scanner

Shift-Left APISeparate DAST scanner
Where endpoints come fromThe functional tests, environments and credentials already in your projectA separate copy of endpoints and auth, maintained in the scanner
Authorization flaws (BOLA)A second principal and an access matrix drive object-level and privilege checksOften missed — a scanner with one identity cannot ask “is this user refused?”
Unanswerable probesListed as “not evaluated”, first, never scored as a passFrequently counted as a pass, inflating the grade
ResultPosture in words plus findings with CVSS, evidence and a fixA score or a wall of alerts to triage
Where it runsIn your packs, schedules and CI gate (SARIF, JUnit), self-hosted or cloudA separate stage, often cloud-only

What it deliberately does not do

  • It is not a penetration test and no substitute for one. It detects; it does not exploit or chain weaknesses.
  • Blind request-forgery confirmation and intrusive amplification are off by default — the first needs a cloud-only collector, the second an Administrator’s allowance.
  • It never guesses default passwords or runs working exploits; probes use recognisable but inert markers.

API security testing: frequently asked questions

Contact us at

info@totalshiftleft.com

to learn more

  • Is this a penetration test?
    No, and it is no substitute for one. Shift-Left API sends benign, inert probes and reads the answers. It does not exploit anything, it does not chain weaknesses together, and it has none of the judgment about your business that a person brings. It is a regression net: it catches the classes of weakness it knows about, every time your tests run.
  • How is this different from a standalone DAST scanner?
    Security checks are generated beside the functional tests you already have, in the same project, using the same endpoints, environments and credentials. There is no second copy to drift out of step. Because you can add a second test user and an access matrix, Shift-Left API can ask the question a single-identity scanner cannot — “is this user refused another user’s data?” — which finds the most serious API flaws (BOLA).
  • What does it check, and how much runs today?
    94 of the 100 checks in the catalogue run today. They cover getting in without a credential, one user reading another’s data, fields the caller should not set, being overwhelmed, operations the caller should not reach, configuration, input treated as data, server-side request forgery, and old or undocumented versions. The six that do not run are listed on every report with the reason — they are either intrusive bursts that are off until switched on, or need a collector that only the cloud service hosts.
  • Does “no findings” mean my API is secure?
    No. It means the checks that ran passed. The checks that could not be judged, and the ones not available at all, are listed on every report and on the CI gate precisely so that sentence is never read as more than it says. Every report opens with “What was not checked”, and a probe that could not reach what it tests is reported “not evaluated”, never as a pass.
  • Which protocols does it cover?
    REST, SOAP, GraphQL, JSON-RPC 2.0 / MCP and WebSocket-RPC. The authentication, input and configuration checks apply across all of them; a few are protocol-specific, such as GraphQL introspection, a SOAP operation under the wrong SOAPAction, a destructive MCP tool offered to a lesser user, and a WebSocket type-confusion probe.
  • Which plans include security testing?
    API security testing is a paid add-on to a Professional, Custom or Enterprise licence. No edition includes it on its own, Enterprise included. A Trial includes it so it can be evaluated. A Citizen Developer (Free) licence sees a locked preview with example data and cannot buy the add-on. Contact sales for add-on pricing.
  • Can I run security checks from CI/CD?
    Yes. Security checks run inside your packs, so they run wherever your packs run. The headless runner can write a SARIF file and fail the build with --fail-on-severity (critical, high, medium or low), and --only-new limits the gate to findings first seen in this run so a team can adopt it without first clearing its backlog. Reports export as HTML, CSV, JUnit XML, SARIF and JSON, and ready-made CI templates ship for GitHub Actions, GitLab, Azure Pipelines, Jenkins and TeamCity.
  • What is stored as evidence?
    Evidence is redacted and capped before it is saved. Credentials, cookies and authorization values are never stored, and neither are response bodies. A leaked card number is reported by its last four digits only, and a private key as “a private key block (not shown)”. You set how many days evidence is kept; findings and their history are always kept, because that is how “fixed” and “came back” are known.
  • Does it map to compliance frameworks?
    Each check maps to the OWASP API Security Top 10 (2023), ASVS and CWE, and a compliance view rolls those up against PCI DSS 4.0, SOC 2, ISO 27001:2022, NIST SSDF, GDPR and HIPAA. It is evidence of testing, not a certification.

Security test your APIs with the tests you already have

The 15-day trial includes API security testing: OWASP-mapped checks, a second-user access matrix and a CI gate, with findings that never count an unanswerable probe as a pass. No credit card required.