We value your privacy

We use cookies to analyze site traffic and improve your experience. You can accept all cookies or reject non-essential ones. See our Privacy Policy for details.

GR IT SERVICES
  • Contact
Get a quote
  1. Cybersecurity
  2. API security assessment
API security assessment for US businesses

Seven of the top ten API risks are authorization problems a scanner cannot find.

The first entry in the OWASP API list is broken object level authorization, and on the wire it is indistinguishable from a legitimate call with one number changed. Testing for it means understanding what every object represents and who is entitled to reach it. That is human work, and no product on the market does it for you.

Book an API security assessmentSee the ten risks
API security assessment for US organizations
  • 10 risksIn the published API Security Top 10
  • Object levelThe first and most exploited category
  • Business flowsA risk category with no technical signature
  • InventoryA risk in its own right, ranked ninth
Why scanners miss most of this

No scanner on earth knows that record 4471 belongs to a different customer.

That one blind spot is the whole reason an assessment surfaces things a year of scanning never did.

  • An object-level authorization failure is indistinguishable from ordinary traffic. The method is right, the token is genuine, the body is well formed, and only the identifier belongs to someone else. There is no bad input to catch and no error to raise, because the interface simply answers the question it was asked.
  • Property-level problems hide just as well. A response carrying fields this caller has no business seeing is still a valid response. A request that quietly sets a field the caller should never control is still a valid request. Catching either means knowing what the data model was supposed to allow.
  • Abuse of a business flow leaves no technical fingerprint whatsoever. Running a process at machine speed that was designed for a person clicking is not a defect in any individual request. The damage lands on the balance sheet rather than in a log, which is precisely why no tool has anything to raise.
  • What actually finds them is a person with two accounts, a clear picture of what each object represents, and the patience to walk identifiers one at a time. That work depends on documentation, which is one more reason the standard treats inventory as a risk in its own right.
Ask us how we test authorization
What an API assessment covers

Why testing an interface is not the same job as testing a website.

The failure mode is unfamiliar if you come from web testing. Nothing is malformed. The request parses, the response is correct, the status code is two hundred. The defect is that this caller should never have been permitted to ask the question at all.

Object level authorization is the first risk

Endpoints deal in object identifiers, and every identifier is a door. That produces an enormous surface of object-level access control problems. Editing a number in an otherwise legitimate request is about the least sophisticated attack available, and it still works more often than anything else.

Authentication is often implemented incorrectly

Authentication is often built in ways that let an attacker capture a token, or exploit a flaw in how identity is established to become another user for a while or for good. In practice the weakness almost always turns out to be how tokens are issued, validated, or allowed to expire.

Property level authorization is separate

The third entry combines excessive data exposure and mass assignment, emphasizing the lack of or improper authorization validation at the object property level. An endpoint can be correctly authorized and still return or accept fields it should not.

Resource consumption is a security risk

Every request costs bandwidth, processor time, memory, and storage. Leave that unbounded and an attacker can either take the service down or simply run your bill up, which on consumption-priced cloud infrastructure is an attack with a dollar figure attached.

Function level authorization fails in complex models

Access control built from overlapping hierarchies, groups, and roles, with a fuzzy line between what an administrator can do and what an ordinary user can do, reliably produces authorization defects. Almost every production system we assess has exactly that shape.

Business flows can be abused without any flaw

Here a business process is exposed with no thought given to what happens when a script runs it ten thousand times an hour. No code is defective, every request is legitimate, and the commercial damage is real.

Inventory is a risk category in itself

There are simply more endpoints here than a web application ever had, which puts unusual weight on documentation being both complete and current. Forgotten, undocumented, and deprecated interfaces are a named risk in the standard, not a tidiness problem to get to eventually.

Consuming other APIs carries its own risk

Data arriving from another company API gets treated as trustworthy in a way user input never would, so it is validated less carefully. That inverted assumption is the tenth entry in the standard, and in our experience nobody tests it.

The published list

Ten risks, and what each one actually looks like.

These come straight from the published edition, and the identifiers do not move. That stability makes them a common language between the people testing, the people writing the code, and the enterprise customer whose questionnaire asks how you handle each one.

Identifier

API1:2023

Risk
Broken Object Level Authorization
What it looks like in practice
A valid request with somebody else's identifier

Identifier

API2:2023

Risk
Broken Authentication
What it looks like in practice
Token compromise or assuming another identity

Identifier

API3:2023

Risk
Broken Object Property Level Authorization
What it looks like in practice
Fields returned or accepted that should not be

Identifier

API4:2023

Risk
Unrestricted Resource Consumption
What it looks like in practice
Denial of service or a runaway cloud bill

Identifier

API5:2023

Risk
Broken Function Level Authorization
What it looks like in practice
Regular users reaching administrative functions

Identifier

API6:2023

Risk
Unrestricted Access to Sensitive Business Flows
What it looks like in practice
Automation of a flow designed for humans

Identifier

API7:2023

Risk
Server Side Request Forgery
What it looks like in practice
Fetching a remote resource from an unvalidated URI

Identifier

API8:2023

Risk
Security Misconfiguration
What it looks like in practice
Complex configuration with missed settings

Identifier

API9:2023

Risk
Improper Inventory Management
What it looks like in practice
Endpoints nobody documented or retired

Identifier

API10:2023

Risk
Unsafe Consumption of APIs
What it looks like in practice
Trusting third party responses more than user input
IdentifierRiskWhat it looks like in practice
API1:2023Broken Object Level AuthorizationA valid request with somebody else's identifier
API2:2023Broken AuthenticationToken compromise or assuming another identity
API3:2023Broken Object Property Level AuthorizationFields returned or accepted that should not be
API4:2023Unrestricted Resource ConsumptionDenial of service or a runaway cloud bill
API5:2023Broken Function Level AuthorizationRegular users reaching administrative functions
API6:2023Unrestricted Access to Sensitive Business FlowsAutomation of a flow designed for humans
API7:2023Server Side Request ForgeryFetching a remote resource from an unvalidated URI
API8:2023Security MisconfigurationComplex configuration with missed settings
API9:2023Improper Inventory ManagementEndpoints nobody documented or retired
API10:2023Unsafe Consumption of APIsTrusting third party responses more than user input
How we approach it

Four things that make an API assessment worth commissioning.

Nearly all of the value comes out of the manual authorization work, which is why the scoping conversation is about getting us accounts and documentation rather than about which tools we run.

We test with real accounts at different privilege levels

A single account proves nothing here, because the entire test is whether one customer can reach another customer records. Having several accounts provisioned before we start is the largest single factor in how good the findings turn out to be.

We enumerate before we test

Inventory is a named risk and the precondition for everything after it. Retired-but-running versions, undocumented endpoints, and test environments answering from the public internet all surface in this phase, and they are frequently the worst things in the report.

We include business flow abuse

The standard covers business flows exposed without any thought for what automation at scale would do to the company. Assessing that requires understanding how the business makes money, and it is the category most testing quietly skips.

We report against stable identifiers

Findings mapped to the published identifiers give developers, security teams, and enterprise customers a shared vocabulary. It also lets you compare assessments over time and across products without translating between report formats, which matters when a SOC 2 auditor or a customer's security team reads it.

How an engagement runs

Three phases across roughly four to eight weeks.

Length depends on endpoint count and how much documentation exists. Authorization testing is the slow part because it is genuinely manual.
  1. 01
    Weeks 1 to 2

    Inventory and understand

    Every endpoint in every version and every environment, what each one exposes, how authorization was meant to work, and which flows carry commercial weight. Documentation quality is assessed here too, because inventory is itself one of the named risks.

    • Endpoint inventory across versions and environments
    • Object and property model documented
    • Intended authorization model captured
    • Sensitive business flows identified
  2. 02
    Weeks 3 to 6

    Test authorization properly

    Authorization gets tested at the object, the property, and the function level, using several accounts sitting at different privilege levels. This phase is where the findings come from, and it resists automation entirely because it rests on knowing what ought to be allowed in the first place.

    • Object level authorization tested per endpoint
    • Property level exposure and mass assignment tested
    • Function level separation tested across roles
    • Findings evidenced with reproducible requests
  3. 03
    Weeks 7 to 8

    The remaining categories and the report

    How authentication and tokens behave, whether consumption is bounded, how business flows hold up under automation, whether user-supplied URLs can be turned against your own network, per-environment configuration, and how safely you consume other people interfaces. The report is then organized around the standard identifiers.

    • Authentication and token handling assessed
    • Rate and resource limits tested
    • Business flow abuse scenarios exercised
    • Report structured by the published risk identifiers
Where this comes up

Six situations that prompt an assessment.

This work usually gets funded for one of two reasons: an outside party asked, or something already went wrong.

A SaaS company whose product is mostly API

When the interface is the product, its security is the product security. Testing that treats it as plumbing behind a front end misses the surface your customers actually call, and the one attackers reach for first. Enterprise buyers have caught on, and their questionnaires now ask about this specifically rather than about application testing generally.

A fintech exposing financial data interfaces

Financial interfaces draw knowledgeable attackers and equally knowledgeable reviewers, whether that is a banking partner, a GLBA examination, or an FTC Safeguards assessment. Authorization across nested account hierarchies is precisely the complex access control the fifth risk describes, and it does not get tested by accident.

A business suffering automated abuse

Mass account signups, inventory held in carts to starve real buyers, promo codes guessed at machine speed, and wholesale scraping are all abuse of a working feature rather than exploitation of a broken one. The standard names them as their own risk, which is what makes them something you can actually assign and fix.

An organization with an unexplained cloud bill

Unbounded consumption produces either an outage or a bill. When cloud spending climbs without a business reason anyone can point at, an endpoint with no limits on it is a genuinely plausible explanation and worth testing before the next invoice.

A team that has accumulated API versions

Any version that was never properly retired is still attack surface, and by definition it gets less attention than whatever the team is shipping now. Walking through versions and environments routinely uncovers interfaces the current engineers had no idea were still answering.

A product that integrates several third party services

Responses from another company interface get trusted in a way user input never is, and validated to a lower standard as a result. If your product consumes payment, identity, shipping, or data-provider responses, that assumption is worth putting under pressure.

Three positions

How US organizations test their APIs.

The middle column describes most companies, and it is dangerous precisely because it feels like coverage. The scan comes back clean on exactly the categories that make up most of the standard.
Object level authorization tested
Manual assessment against the listYes, with multiple accounts
Automated scanning onlyNo
Tested as part of the web appRarely
Property level issues found
Manual assessment against the listYes
Automated scanning onlyNo
Tested as part of the web appNo
Function level separation tested
Manual assessment against the listYes
Automated scanning onlyPartially
Tested as part of the web appNo
Business flow abuse considered
Manual assessment against the listYes
Automated scanning onlyNo
Tested as part of the web appNo
Full endpoint inventory produced
Manual assessment against the listYes
Automated scanning onlyCrawled only
Tested as part of the web appPartial
Old versions included
Manual assessment against the listYes
Automated scanning onlyIf discovered
Tested as part of the web appNo
Third party consumption assessed
Manual assessment against the listYes
Automated scanning onlyNo
Tested as part of the web appNo
Findings reproducible
Manual assessment against the listWith exact requests
Automated scanning onlyTool output
Tested as part of the web appVaries
Maps to a published risk list
Manual assessment against the listYes
Automated scanning onlyLoosely
Tested as part of the web appNo
Effort
Manual assessment against the listWeeks, mostly manual
Automated scanning onlyHours
Tested as part of the web appIncluded, superficially
Feature
Manual assessment against the list
Automated scanning only
Tested as part of the web app
Object level authorization tested
Yes, with multiple accountsNoRarely
Property level issues found
YesNoNo
Function level separation tested
YesPartiallyNo
Business flow abuse considered
YesNoNo
Full endpoint inventory produced
YesCrawled onlyPartial
Old versions included
YesIf discoveredNo
Third party consumption assessed
YesNoNo
Findings reproducible
With exact requestsTool outputVaries
Maps to a published risk list
YesLooselyNo
Effort
Weeks, mostly manualHoursIncluded, superficially
The one to fix first

Ninth in the standard, first in every engagement we have run.

An endpoint nobody knows about cannot be assessed, defended, or switched off. That makes this the prerequisite for doing anything about the other nine.

  • The standard puts it plainly: there are more endpoints here than a web application ever had, which makes accurate and current documentation unusually important. Counts in the hundreds are entirely normal, and complete documentation almost never is.
  • Old versions are the textbook example. Shipping version two rarely means retiring version one, because some integration partner somewhere is still calling it. From that day forward version one gets none of the attention version two receives, while continuing to hand out the same data behind older, weaker controls.
  • The other classic is everything that is not production. Staging and test interfaces routinely hold real customer data behind visibly weaker authentication, and they are reachable from the public internet far more often than the teams running them believe.
  • Every engagement opens here, for entirely practical reasons. Establishing what exists across versions and environments is what defines the scope of all the later work, and it reliably turns up interfaces that nobody in the kickoff meeting knew were still serving traffic.
Ask us to enumerate your API estate
How an engagement runs

Five phases, of which the middle three cannot be automated.

Tooling earns its place on inventory and configuration work. The authorization categories that make up most of the standard need a human being who understands the data model.
  1. 1

    Enumerate the API estate

    We enumerate every endpoint across every version and environment, because there are far more of them here than in a web application and the documentation is rarely complete. Anything undocumented or deprecated is written up as a finding rather than a footnote.

  2. 2

    Understand the intended authorization model

    We establish what each object actually is, who should be able to read it and who should be able to change it, which fields are sensitive, and exactly where administrative capability is supposed to stop. You cannot test authorization without first knowing what correct behavior looks like.

  3. 3

    Test object, property, and function level authorization

    Using several accounts at different privilege levels, we walk identifiers, try to set fields that should be off limits, and reach for functions that should be separated from ordinary users. These three categories account for the majority of findings in almost every engagement.

  4. 4

    Cover the remaining categories

    Then authentication and token behavior, whether consumption has limits, sensitive business flows driven at machine speed, forged server-side requests wherever your code fetches a remote resource, configuration checked per environment, and how you handle what other providers send back.

  5. 5

    Report against the published identifiers

    Every finding carries its standard identifier, the exact request needed to reproduce it, and a priority based on how exploitable it is and what it would cost you, not on where its category happens to sit in the list. That structure is what lets a developer be assigned the work and a manager measure whether it got done.

Straight answers

What organizations ask about API security assessment.

Because the bulk of the standard describes authorization failures. A request bearing a valid token and another customer identifier is perfectly well formed and gets a perfectly normal response, so a scanner has nothing to alert on. Scanning does useful work on inventory and configuration. The findings that matter come from a person.

Endpoints deal in object identifiers, which produces a broad surface of access control problems at the object level. Concretely: change a number in an otherwise legitimate request and receive somebody else data. It sits first in the standard because it is both extremely common and trivially easy to exploit.

Two at minimum sharing the same privilege level, so we can test whether one reaches the other data, plus one account at every distinct level your model defines. This is the single most valuable thing you can prepare, and it is usually the slowest to arrange, which is why we raise it at scoping rather than on day one.

It means shipping a working business process with no consideration of what a script would do to it. Mass registration, inventory hoarded in abandoned carts, and discount codes guessed in bulk are the usual examples. None of them involves a bug, which is exactly why they require deliberate testing and are invisible to scanning.

Because there are far more endpoints here than a web application ever had, which puts real weight on documentation being current. Anything nobody knows about gets no patching, no review, and no monitoring at all. Old versions still answering and staging environments reachable from the internet are regularly the most serious things we report.

Not necessarily. A representative environment with realistic data and the same authorization model works well, provided it genuinely mirrors production. Where the environments differ in authorization logic, testing the wrong one produces misleading assurance, so we confirm the match during scoping.

Scope, request rates, and timing are all settled beforehand, with a named person on your side reachable for the duration. Authorization testing is overwhelmingly a read activity, and where a write is genuinely required it is agreed in advance and confined to test records.

The same risk categories apply and the testing technique differs. Object and property level authorization questions are, if anything, more acute where a single endpoint can return arbitrary shapes of data based on the query supplied.

Yes, and they are frequently the most productive target. Mobile clients are trusted more than they should be, and the assumption that only your own application will call the backend produces exactly the authorization gaps this list describes.

An API assessment is a focused penetration test with a defined risk taxonomy. General application testing frequently treats APIs as plumbing behind the interface, which means the authorization categories that dominate the published list go untested. If you need both, we scope them together so nothing is tested twice or missed between them.

Yes. Enterprise security questionnaires increasingly ask whether the API layer has been tested specifically, and a report structured around the published identifiers answers that in a vocabulary reviewers recognize. For SOC 2, the assessment feeds the vulnerability identification and remediation evidence your auditor samples. Your auditor owns the interpretation; we own the technical evidence.

Annually as a baseline, and after significant changes to the authorization model, the data model, or the API surface. Adding an endpoint that exposes a new object type is exactly the change that reintroduces object level authorization risk. Engagements are scoped by endpoint count and authorization complexity, with a custom quote after the scoping conversation. The free first step: ask your team how many API endpoints you expose in total, including old versions. The gap between the answer and reality is usually the story.
API readiness check

Fifteen questions to ask your development team.

None of these needs a tool to answer, and which ones cause a pause in the room predicts the findings with unsettling accuracy.

Inventory

  • How many endpoints do we expose?
    An exact number.
  • Which old versions are still live?
    Usually more than expected.
  • Are staging APIs internet reachable?
    Often, unintentionally.
  • Is the documentation current?
    A named risk category.
  • Who owns each endpoint?
    Retirement needs an owner.

Authorization

  • Is object ownership checked every request?
    The first risk.
  • Can a user set fields they should not?
    Mass assignment.
  • Do responses include hidden fields?
    Excessive exposure.
  • Are admin functions separated clearly?
    Function level risk.
  • Have we tested with two real accounts?
    The essential test.

Everything else

  • Are there rate and size limits?
    Resource consumption.
  • Could a business flow be automated?
    A distinct risk.
  • Do we fetch user supplied URIs?
    Server side request forgery.
  • Do we validate third party responses?
    The tenth risk.
  • Is configuration reviewed per environment?
    Misconfiguration.
Related reading

The pages around this one.

Penetration testing

Broader offensive testing across the estate.

Learn more

Defender for APIs

The Microsoft runtime protection layer for APIs on Azure.

Learn more

Zero trust architecture assessment

The access model your APIs should be enforcing.

Learn more
Next step

Put one question to your engineers: how many endpoints do we expose, counting old versions?

Then hold that number against what a proper enumeration turns up. The standard names inventory as a risk for a reason, and the distance between those two figures is usually where the serious findings are sitting.

Book an API security assessmentSee cybersecurity services

Related Services

Explore more solutions that work great with this service

Penetration Testing

Penetration testing for US businesses across external, internal, web

Learn more

Vulnerability Assessment

Vulnerability assessment for US businesses across external attack

Learn more

Zero Trust Architecture Assessment

Your architecture measured against NIST SP 800-207

Learn more

SOC 2 Readiness

Get audit-ready for the report your buyers ask for

Learn more

Microsoft Defender

Advanced endpoint and email threat protection

Learn more
GR IT SERVICES

IT services for US businesses,
delivering enterprise-grade solutions
remotely, coast to coast.

Microsoft CSP PartnerApple Jamf PartnerCISGuard

Microsoft 365

  • Microsoft 365 Administration
  • M365 Reporting & Auditing
  • Microsoft 365 Licensing
  • Microsoft Copilot
  • Microsoft 365 Apps
  • Windows 365 Cloud PC
  • Microsoft SharePoint
  • Outlook & Exchange

Security

  • Microsoft Defender
  • Microsoft Purview
  • Microsoft Intune
  • Microsoft Entra
  • Compliance Manager
  • Cybersecurity Audits
  • Copilot for Security
  • Microsoft Sentinel
  • Microsoft Priva

Infrastructure

  • Google Workspace
  • Cloud Migration Services
  • Data Analytics & BI
  • Active Directory
  • Server Management
  • Apple Business
  • Apple Jamf Pro
  • IP Telephone
  • Data Backup
  • Website Development

IT Services

  • Managed IT Services
  • IT Support USA
  • IT AMC USA
  • New Office IT Setup
  • IT Relocation
  • Remote IT Support
  • On-Call IT Support
  • Startup IT Business Kit
  • Disaster Recovery & BC

Company

  • About Us
  • Careers
  • Contact
  • Blog

Contact

  • hello@gritservices.io
  • gritservices.io

© 2026 GR IT Services. All rights reserved.

Privacy PolicyTerms of UseCookie PolicyCCPA/CPRA