Back

API10:2019 Insufficient Logging & Monitoring - Overview

What is Insufficient Logging & Monitoring?

Insufficient Logging & Monitoring (API10 in the 2019 OWASP API Security Top 10) is not a flaw an attacker exploits—it is the flaw that lets every other attack proceed undetected. When an API fails to record security-relevant events, fails to centralise and watch those records, and fails to alert and respond when something looks wrong, an intruder can probe, enumerate, brute-force, and exfiltrate for days, weeks, or months with nobody noticing.

This category is defined by three linked failures, any one of which is enough to be blind:

The OWASP definition is deliberately outcome-focused: the problem is measured by how long an attack can run before it is seen. The industry term for that gap is dwell time—the interval between initial compromise and detection. Insufficient logging and monitoring is what makes dwell time long.

Core Concept

Sufficient logging & monitoring:
  Auth events   -> every login success/failure logged with client id + source IP
  Authz events  -> every 403 / object-access denial logged with subject + object id
  Validation    -> every rejected/malformed input logged with endpoint + reason
  Format        -> consistent structured (JSON) records, machine-parseable
  Centralised   -> shipped to a SIEM/log store, tamper-resistant, time-synced
  Alerting      -> tuned thresholds fire on spikes of 401/403/429 + enumeration
  Response      -> alerts feed an incident-response runbook with an owner

Insufficient logging & monitoring:
  Auth events   -> failed logins not recorded; brute force is invisible
  Authz events  -> 403s dropped; BOLA enumeration leaves no trace
  Validation    -> malformed/hostile input silently discarded
  Format        -> free-text logs, no client/object context, unparseable
  Centralised   -> logs live only on the box, rotated away, never read
  Alerting      -> no thresholds; a 10,000-request scrape triggers nothing
  Response      -> breach first learned about from a third party, months later

Why It's Critical for APIs

APIs concentrate several conditions that make missing telemetry especially costly:

Why Does This Matter?

Business Impact

Technical Impact

Technical Context

Failure Modes

The 2019 category is best understood as a checklist of things that are not happening. Each row below is a distinct way an API ends up blind.

Failure modeWhat is missingConsequence
Auth/authz failures not loggedFailed logins and 403 denials never recordedBrute force and BOLA enumeration invisible
Input-validation failures not loggedMalformed/hostile payloads silently rejectedProbing and fuzzing leave no trace
No per-client / per-token monitoringNo baseline of normal volume per callerSlow abuse blends into aggregate traffic
Logs lack contextNo client id, endpoint, object id, or outcomeRecords exist but cannot be investigated
No centralisation / SIEMLogs stay on the host, rotated awayNobody is watching; nothing correlates
No alerting thresholdsNo rule fires on spikes or patternsData exists but no one is notified
No rate-of-error monitoring401/403/429 rates never trendedThe clearest attack signal is ignored
Logs not integrity-protectedWritable, unsigned, non-centralised logsAttacker edits or deletes the evidence
Sensitive data logged in cleartextTokens, passwords, PII written to logsThe log store itself becomes a breach target

What a Useful Security Event Looks Like

The difference between a log that helps and a log that does not is context. Compare:

# Useless: free text, no actor, no object, no outcome
ERROR user request failed

# Useful: structured, attributable, correlatable
{
  "ts": "2026-08-28T14:03:11.482Z",
  "event": "authz.denied",
  "outcome": "failure",
  "client_id": "acct_8842",
  "auth_subject": "user_1021",
  "source_ip": "203.0.113.44",
  "method": "GET",
  "endpoint": "/api/v1/invoices/{id}",
  "object_id": "inv_990771",
  "status": 403,
  "request_id": "b1f2c3d4"
}

With the structured record, a SIEM can answer “did user_1021 just try to read 500 invoices that are not theirs?” The free-text line cannot answer anything.

The Signals Monitoring Should Watch

Real-World Impact

Rather than cite specific fabricated figures, it is more durable to describe the classes of incident that recur precisely because logging and monitoring were insufficient.

Incident Class 1: Credential Stuffing That Ran for Months

Pattern:

Outcome: A slice of accounts (those reusing passwords) is quietly taken over. The activity is frequently only recognised after downstream fraud, or after a customer reports it—long after the API could have flagged the failed-login spike.

Root cause: No authentication-failure logging with per-client context and no rate-of-error alerting.

Incident Class 2: Object-ID Enumeration Discovered by a Researcher

Pattern:

Outcome: Bulk personal data is collected over hours or days. The organisation typically learns of it only when a security researcher or journalist demonstrates the enumeration—i.e., detection came from outside.

Root cause: No monitoring of denied-access rate and no per-client volume baseline that would have flagged one caller touching thousands of objects.

Incident Class 3: High-Volume Scraping Mistaken for Traffic

Pattern:

Outcome: A substantial fraction of the dataset is exfiltrated through the front door. Without per-client monitoring, the scrape is indistinguishable from growth until the data surfaces elsewhere.

Root cause: No per-client/per-token volume monitoring and no alerting on abnormal single-caller throughput.

Note: these are recurring incident classes, not a single named breach. The durable lesson is identical across all of them—the attack technique varied, but the reason it succeeded quietly was always the same: security-relevant events were not logged, not centralised, and not alerted on.

Prevalence and Detection

Insufficient logging and monitoring is difficult to see from the outside—an attacker cannot tell whether they are being watched—yet it is one of the most consistently reported weaknesses in breach post-mortems.

Rather than quote a single statistic, the defensible picture is:

Common Misunderstandings

Myth 1: “We have logs, so we are covered”

Reality: Having logs and using them are different things. Logs that are never centralised, never alerted on, and lack client/object context are write-only—they help nobody until after a breach, if at all.

Myth 2: “Logging is an ops concern, not a security one”

Reality: Ops logging answers “is the service up?” Security logging answers “is someone attacking it?” The two overlap but are not the same; auth failures, authz denials, and validation rejections must be captured deliberately for security.

Myth 3: “Log everything and we will find it later”

Reality: Volume without structure and alerting just hides the signal. You need the right events, in a parseable format, with thresholds that page someone—not a firehose nobody reads.

Myth 4: “A spike in errors is just noise”

Reality: A spike in 401/403/429 is the single clearest signal of an attack in progress. Treating rate-of-error as noise is discarding your best early-warning system.

Myth 5: “More detail in logs is always better”

Reality: Logging tokens, passwords, full card numbers, or PII in cleartext turns your log store into a second breach target and can itself violate regulation. Log identifiers and outcomes, never secrets.

Myth 6: “If we are attacked, the logs will be there”

Reality: Logs that live only on the compromised host, are world-writable, or are unsigned can be edited or wiped by the intruder. Ship them off-box to a tamper-resistant store in real time.

A Note on the 2023 Edition

In the 2019 OWASP API Security Top 10, Insufficient Logging & Monitoring was a standalone entry (API10:2019). In the 2023 revision it was dropped as a dedicated item; the list changed shape and this concern is now treated as a cross-cutting operational practice rather than a numbered risk. That editorial change does not make the problem less real—detection capability is still essential, and it remains a numbered item (A09:2021) in the broader OWASP Top 10 for web applications. This lesson intentionally keeps the 2019 framing because it states the requirement most clearly: an API must log security-relevant events, watch them, and respond.

How This Differs from Related Issues

AspectInsufficient Logging & MonitoringBroken Authentication (API2)Resource Consumption (API4)
NatureFailure to detect attacksFailure to prevent auth bypassFailure to limit usage
Exploited directly?No—it enables other attacks to run unseenYesYes
SymptomLong dwell time, external discoveryAccount takeoverExhaustion / cost
Fix domainTelemetry, SIEM, alerting, IRAuth logicRate limits / quotas

Key Takeaways

  1. This is the flaw that hides the others—it is measured in dwell time, not in a single exploit.
  2. Log the security events, not just the ops events—auth failures, authz denials, and validation rejections, each with client and object context.
  3. Logging without monitoring is write-only—centralise to a SIEM and put tuned thresholds on 401/403/429 and enumeration patterns.
  4. Protect the logs—ship them off-box, make them tamper-resistant, and never write secrets or PII into them.
  5. Detection must connect to response—an alert that pages nobody is the same as no alert.

How to Identify if You're Vulnerable

Ask these questions about your API:

If you answered “no” or “not sure” to several of these, an attacker could be operating against your API right now without your knowledge.

Next Steps