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:
T-Mobile (2023): API vulnerability exposed 37 million customer records
Optus (2022): API misconfiguration leaked 9.8 million Australian records
Peloton (2021): BOLA vulnerability exposed all user data
Facebook (2019): API flaw exposed 50 million accounts
Why APIs Are Targeted:
Direct Database Access: APIs often connect directly to databases
Authentication Complexity: Token-based auth introduces new attack vectors
Insufficient Testing: APIs often lack the same security rigor as web UIs
Documentation Exposure: API docs reveal attack surface
Third-Party Integration: External APIs introduce supply chain risks
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
/graphqlClient-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:
Attacker initiates OAuth flow, gets authorization code
Attacker tricks victim into visiting:
https://app.com/callback?code=ATTACKER_CODEVictim'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
API Security is Critical: 83% of web traffic is API traffic; vulnerabilities lead to massive breaches
BOLA is #1 Threat: Always validate authorization at the object level, not just authentication
GraphQL Requires Special Attention: Introspection, batching, and query complexity attacks are unique to GraphQL
JWT Must Be Implemented Correctly: Algorithm confusion, weak secrets, and missing expiration are common pitfalls
OAuth 2.0 Needs CSRF Protection: Always use state parameter and validate redirect URIs exactly
Rate Limiting is Essential: APIs are susceptible to brute force and DoS without proper rate limits
Validate All Data: Never trust external APIs or client input; always validate and sanitize
Defense in Depth: Combine authentication, authorization, rate limiting, input validation, and monitoring
Keep APIs Documented: Maintain an accurate inventory of all API endpoints and versions
Test Continuously: Use automated tools and manual testing to identify API vulnerabilities
Hands-On Exercises
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
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)
JWT Attacks:
Create vulnerable JWT implementation
Test none algorithm attack
Crack weak JWT secret
Perform algorithm confusion attack
Implement secure JWT handling
OAuth 2.0 Security:
Build OAuth 2.0 authorization server
Test redirect URI manipulation
Exploit missing state parameter (CSRF)
Implement PKCE flow
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
OWASP API Security Top 10:2023: https://owasp.org/API-Security/editions/2023/en/0x11-t10/
GraphQL Security: https://graphql.org/learn/security/
JWT Best Practices: https://tools.ietf.org/html/rfc8725
OAuth 2.0 Security: https://tools.ietf.org/html/rfc6749
OAuth 2.0 Threat Model: https://tools.ietf.org/html/rfc6819
Practice Labs
PortSwigger API Testing Labs: https://portswigger.net/web-security/all-labs#api-testing
crAPI (Completely Ridiculous API): https://github.com/OWASP/crAPI
VAmPI (Vulnerable API): https://github.com/erev0s/VAmPI
DVGA (Damn Vulnerable GraphQL App): https://github.com/dolevf/Damn-Vulnerable-GraphQL-Application
Juice Shop (includes APIs): https://github.com/juice-shop/juice-shop
Security Tools
Burp Suite: https://portswigger.net/burp
Postman: https://www.postman.com/
OWASP ZAP: https://www.zaproxy.org/
jwt_tool: https://github.com/ticarpi/jwt_tool
GraphQL Armor: https://github.com/Escape-Technologies/graphql-armor
Arjun (API endpoint discovery): https://github.com/s0md3v/Arjun
Learning Resources
APIsecurity.io: https://apisecurity.io/
GraphQL Security Report 2024: https://escape.tech/blog/the-state-of-graphql-security-2024/
JWT Security Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/JSON_Web_Token_for_Java_Cheat_Sheet.html
OAuth 2.0 Playground: https://www.oauth.com/playground/
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