API Security

Modern applications increasingly rely on APIs (Application Programming Interfaces) to enable communication between services, mobile apps, and third-party integrations. While APIs provide powerful functionality and enable modern architectures like microservices, they also introduce significant security challenges. API vulnerabilities can lead to data breaches, unauthorized access, and complete system compromise.

This lecture covers the critical security considerations for REST APIs, GraphQL, authentication mechanisms, and the OWASP API Security Top 10.

Why API Security Matters

The API Security Crisis:

  • 83% of web traffic is API traffic (Cloudflare, 2024)

  • 69% of API services vulnerable to DoS attacks (2024)

  • APIs are 200% more vulnerable than web applications to attacks

  • API attacks increased 400% from 2022 to 2024

  • Over 60% of enterprises will use GraphQL by 2027

Real-World Breaches:

  1. T-Mobile (2023): API vulnerability exposed 37 million customer records

  2. Optus (2022): API misconfiguration leaked 9.8 million Australian records

  3. Peloton (2021): BOLA vulnerability exposed all user data

  4. Facebook (2019): API flaw exposed 50 million accounts

Why APIs Are Targeted:

  1. Direct Database Access: APIs often connect directly to databases

  2. Authentication Complexity: Token-based auth introduces new attack vectors

  3. Insufficient Testing: APIs often lack the same security rigor as web UIs

  4. Documentation Exposure: API docs reveal attack surface

  5. Third-Party Integration: External APIs introduce supply chain risks

  6. Rate Limiting Gaps: Resource exhaustion easier than traditional web apps


REST API Security

REST (Representational State Transfer) is the most common API architectural style, using HTTP methods for CRUD operations. REST APIs present unique security challenges compared to traditional web applications.

REST API Fundamentals

Key Characteristics:

  • Stateless: Each request contains all necessary information

  • Resource-Based: Operations on resources (e.g., /users/123)

  • HTTP Methods: GET, POST, PUT, PATCH, DELETE

  • Standard Status Codes: 200, 401, 403, 404, 500, etc.

  • Content Negotiation: JSON, XML response formats

Typical REST Endpoint:

Response:


Common REST API Vulnerabilities

1. Broken Object Level Authorization (BOLA/IDOR)

Definition: API fails to validate that the authenticated user has permission to access the requested object.

Example Vulnerable Endpoint:

Attack:

Prevention:

Automated BOLA Testing:

2. Excessive Data Exposure

Definition: API returns more data than necessary, exposing sensitive information.

Vulnerable Code:

Attack Response:

Prevention (Data Transfer Objects):

3. Mass Assignment

Definition: API automatically binds client input to internal object properties without filtering, allowing attackers to modify unintended fields.

Vulnerable Code:

Attack Payload:

Result: Attacker gains admin privileges and arbitrary account balance!

Prevention (Whitelist Fields):

4. Lack of Rate Limiting

Definition: API doesn't limit the number of requests, enabling brute force, DoS, and resource exhaustion attacks.

Attack Scenarios:

Prevention:

Advanced Rate Limiting (Token Bucket):

5. API Authentication Bypass

Common Weaknesses:

a) Predictable API Keys:

b) Missing Authentication on Endpoints:

c) JWT Algorithm Confusion:

Prevention:


REST API Security Best Practices

1. API Versioning

Benefits:

  • Deprecate insecure endpoints gradually

  • Maintain backward compatibility

  • Clear security policy per version

2. Input Validation

3. Security Headers for APIs

4. Logging and Monitoring


GraphQL Security

GraphQL is a query language for APIs that allows clients to request exactly the data they need. While this flexibility is powerful, it introduces unique security challenges not present in REST APIs.

GraphQL Fundamentals

Basic Query:

Key Differences from REST:

  • Single Endpoint: All queries go to /graphql

  • Client-Specified Queries: Client controls data structure

  • Introspection: Schema is discoverable

  • Flexible Relationships: Deep nested queries possible


GraphQL Vulnerabilities

1. Introspection Abuse

Definition: GraphQL exposes its entire schema through introspection, revealing all available queries, mutations, and data types.

Introspection Query:

Response:

Risk: Attacker learns entire API structure, including sensitive fields.

Prevention:

2. Batching Attacks (Authentication Bypass)

Definition: GraphQL allows multiple queries in a single request, enabling brute-force attacks that bypass rate limiting.

Attack Payload:

Result: 10,000 login attempts in a single HTTP request, bypassing traditional rate limiting.

Prevention:

3. Query Depth / Complexity DoS

Definition: Deeply nested queries exhaust server resources, causing denial of service.

Attack Query:

Impact: Exponential database queries, server crash, DoS.

Prevention:

4. Authorization Bypass in Resolvers

Vulnerable Resolver:

Secure Resolver:

5. Injection in GraphQL

SQL Injection via GraphQL:

Attack Query:

Prevention:


GraphQL Security Best Practices


JWT Security

JSON Web Tokens (JWT) are the most common authentication mechanism for modern APIs. However, improper implementation can lead to critical vulnerabilities.

JWT Structure

Decoded Structure:


JWT Vulnerabilities

1. None Algorithm Attack

Definition: JWT "none" algorithm allows unsigned tokens.

Vulnerable Code:

Attack:

Prevention:

2. Weak Secret Keys

Vulnerable:

Cracking Weak JWT:

Prevention:

3. Missing or Excessive Expiration

Vulnerable:

Attack: Stolen token usable indefinitely.

Prevention:

4. Algorithm Confusion (HS256 vs RS256)

Definition: Attacker changes algorithm from RS256 (asymmetric) to HS256 (symmetric), using public key as HMAC secret.

Scenario:

Attack:

Prevention:

5. Token Storage (Client-Side)

Vulnerable:

Attack: Any XSS vulnerability can steal token from localStorage.

Better Approach:


JWT Best Practices


OAuth 2.0 & OpenID Connect

OAuth 2.0 is an authorization framework that enables third-party applications to obtain limited access to a service. OpenID Connect (OIDC) builds on OAuth 2.0 to add authentication.

OAuth 2.0 Flows

1. Authorization Code Flow (Most Secure)

Use Case: Web applications with backend server

Flow:

Implementation:


OAuth 2.0 Vulnerabilities

1. Redirect URI Manipulation

Vulnerable Configuration:

Attack:

Result: Authorization code sent to attacker's server.

Prevention:

2. State Parameter Missing (CSRF)

Vulnerable Flow:

Attack:

  1. Attacker initiates OAuth flow, gets authorization code

  2. Attacker tricks victim into visiting: https://app.com/callback?code=ATTACKER_CODE

  3. Victim's account linked to attacker's OAuth account

Prevention:

3. Implicit Flow (Deprecated, Insecure)

Vulnerable:

Issues:

  • Token exposed in browser history

  • Token in URL can leak via Referer header

  • No client authentication

Prevention: Use Authorization Code Flow with PKCE instead.

4. Open Redirect via OAuth

Scenario:


OAuth 2.0 Best Practices


OWASP API Security Top 10:2023

API1:2023 - Broken Object Level Authorization

Covered extensively in REST API section above.

API2:2023 - Broken Authentication

Examples:

  • Weak password requirements

  • No rate limiting on authentication endpoints

  • Missing MFA

  • Predictable session tokens

Prevention: See JWT and OAuth sections above.

API3:2023 - Broken Object Property Level Authorization

Example:

Prevention: Whitelist allowed fields (mass assignment prevention shown earlier).

API4:2023 - Unrestricted Resource Consumption

Prevention: Rate limiting, resource quotas, pagination.

API5:2023 - Broken Function Level Authorization

Example:

Prevention:

API6:2023 - Unrestricted Access to Sensitive Business Flows

Example: Automated ticket purchasing bots

Prevention:

API7:2023 - Server-Side Request Forgery

Covered in Lecture 4 - Server-Side Vulnerabilities

API8:2023 - Security Misconfiguration

Examples:

  • Default credentials

  • Verbose error messages

  • CORS misconfiguration

  • Missing security headers

Prevention:

API9:2023 - Improper Inventory Management

Issue: Unknown/undocumented API endpoints

Prevention:

  • Maintain API documentation (OpenAPI/Swagger)

  • Version APIs properly

  • Decommission old API versions

  • Regular API endpoint audits

API10:2023 - Unsafe Consumption of APIs

Issue: Trusting third-party API responses without validation

Example:

Prevention:


API Security Testing

Tools

1. Burp Suite:

  • Intercept API requests

  • Test for BOLA/IDOR

  • Automated scanning (Pro)

2. Postman:

  • API testing and automation

  • Collection runner for fuzzing

  • Pre-request scripts for auth

3. OWASP ZAP:

  • Free alternative to Burp

  • API scanning

  • Automation via CLI

4. Custom Scripts:


Key Takeaways

  1. API Security is Critical: 83% of web traffic is API traffic; vulnerabilities lead to massive breaches

  2. BOLA is #1 Threat: Always validate authorization at the object level, not just authentication

  3. GraphQL Requires Special Attention: Introspection, batching, and query complexity attacks are unique to GraphQL

  4. JWT Must Be Implemented Correctly: Algorithm confusion, weak secrets, and missing expiration are common pitfalls

  5. OAuth 2.0 Needs CSRF Protection: Always use state parameter and validate redirect URIs exactly

  6. Rate Limiting is Essential: APIs are susceptible to brute force and DoS without proper rate limits

  7. Validate All Data: Never trust external APIs or client input; always validate and sanitize

  8. Defense in Depth: Combine authentication, authorization, rate limiting, input validation, and monitoring

  9. Keep APIs Documented: Maintain an accurate inventory of all API endpoints and versions

  10. Test Continuously: Use automated tools and manual testing to identify API vulnerabilities


Hands-On Exercises

  1. REST API Security Lab:

    • Deploy a vulnerable REST API (e.g., crAPI, VAmPI)

    • Test for BOLA/IDOR vulnerabilities

    • Exploit mass assignment

    • Implement fixes and retest

  2. GraphQL Exploitation:

    • Set up DVGA (Damn Vulnerable GraphQL Application)

    • Perform introspection to map schema

    • Execute batching attack for brute force

    • Craft deeply nested query for DoS

    • Implement protections (depth limiting, cost analysis)

  3. JWT Attacks:

    • Create vulnerable JWT implementation

    • Test none algorithm attack

    • Crack weak JWT secret

    • Perform algorithm confusion attack

    • Implement secure JWT handling

  4. OAuth 2.0 Security:

    • Build OAuth 2.0 authorization server

    • Test redirect URI manipulation

    • Exploit missing state parameter (CSRF)

    • Implement PKCE flow

  5. API Security Assessment:

    • Choose a public API or bug bounty target

    • Test OWASP API Top 10 vulnerabilities

    • Document findings in professional report

    • Submit responsible disclosure if vulnerabilities found


Resources

Official Documentation

Practice Labs

Security Tools

Learning Resources

Books

  • "API Security in Action" by Neil Madden

  • "Hacking APIs" by Corey Ball

  • "OAuth 2 in Action" by Justin Richer and Antonio Sanso

Last updated