Learn in Public unlocks on Jan 1, 2026
This lesson will be public then. Admins can unlock early with a password.
Shadow APIs: The Hidden Cybersecurity Risk in 2026
Discover undocumented shadow APIs, understand how attackers find them, and implement automated discovery tools with validation and cleanup.
Shadow APIs are exposing organizations to massive security risks. According to the 2024 OWASP API Security Top 10, 23% of API security incidents involve undocumented or shadow APIs, with attackers discovering them through automated scanning in an average of 48 hours. This guide shows you how to discover shadow APIs before attackers do, implement automated discovery tools, and secure your entire API surface—documented or not.
Table of Contents
- Understanding What Shadow APIs Are
- Discovering Shadow APIs via Directory Brute-Forcing
- Analyzing Traffic Logs for Shadow APIs
- Using Automated API Discovery Tools
- Scanning Source Code for API Routes
- Applying Global Rate Limits to All Endpoints
- Validating All Endpoints (Documented and Shadow)
- Monitoring and Detecting Shadow API Discovery Attempts
- API Discovery Tools Comparison
- Real-World Case Study
- FAQ
- Conclusion
TL;DR
- Shadow APIs are endpoints not documented in OpenAPI/Swagger or official docs.
- Attackers find them via directory brute-forcing, traffic analysis, and code scanning.
- Use automated discovery tools, apply global rate limits, and validate all endpoints.
Prerequisites
- Access to your own API or a test API you control.
- Tools:
curl,nuclei,ffuforgobuster,jq. - Optional: API gateway logs or traffic captures for analysis.
Safety & Legal
- Test only your own APIs in a development/staging environment.
- Never scan third-party APIs without written permission.
- Use test endpoints that can be safely exposed during discovery.
Step 1) Understand what shadow APIs are
Shadow APIs are endpoints that exist but aren’t documented:
- Legacy endpoints: Old versions still active after migration.
- Internal-only APIs: Meant for internal use but exposed publicly.
- Test/staging endpoints: Left enabled in production.
- Undocumented features: Built but never added to official docs.
Validation: Review your API documentation; compare to actual endpoints in use.
Common fix: Maintain an API inventory; update docs when endpoints are added/removed.
Step 2) Discover shadow APIs via directory brute-forcing
Use wordlists to find hidden endpoints:
Click to view commands
# Install ffuf (if not installed)
# macOS: brew install ffuf
# Linux: Download from https://github.com/ffuf/ffuf
# Basic directory brute-forcing
ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \
-u https://api.example.com/FUZZ \
-mc 200,201,204 \
-H "Authorization: Bearer YOUR_TOKEN" \
-t 50
# API-specific wordlist
cat > api-wordlist.txt <<EOF
/api/v1/users
/api/v1/admin
/api/v2/users
/api/internal
/api/legacy
/api/test
/api/staging
/api/debug
/api/health
/api/metrics
/api/status
EOF
ffuf -w api-wordlist.txt -u https://api.example.com/FUZZ -mc 200,201,204
Validation: Run against your test API; verify it finds known endpoints and potentially unknown ones.
Common fix: Use API-specific wordlists (common REST patterns, version numbers, action verbs).
Step 3) Analyze traffic logs for shadow APIs
Examine API gateway logs or traffic captures:
Click to view commands
# Extract unique endpoints from access logs
cat access.log | grep -oE '(GET|POST|PUT|DELETE|PATCH) /[^ ]+' | sort -u > endpoints.txt
# Compare with documented endpoints
cat documented-endpoints.txt
# Manually compare or use diff
# Find endpoints not in documentation
comm -23 <(sort endpoints.txt) <(sort documented-endpoints.txt) > shadow-apis.txt
Validation: Compare log-extracted endpoints to documentation; identify undocumented ones.
Common fix: Automate this comparison; run regularly as part of CI/CD pipeline.
Step 4) Use automated API discovery tools
API Discovery Tools Comparison
| Tool | Type | Speed | Accuracy | Best For |
|---|---|---|---|---|
| ffuf | Directory brute-forcing | Fast | High | Quick endpoint discovery |
| nuclei | Template-based | Fast | High | Known API patterns |
| gobuster | Directory brute-forcing | Fast | Medium | Large-scale scanning |
| Burp Suite | Manual/automated | Slow | Very High | Comprehensive testing |
| Postman | Manual | Slow | High | API exploration |
| API Gateway Logs | Traffic analysis | Fast | Very High | Existing endpoint discovery |
Tools like nuclei and nmap scripts can discover APIs:
Click to view commands
# Install nuclei
# macOS: brew install nuclei
# Or: go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# Discover APIs with nuclei
nuclei -u https://api.example.com -t ~/nuclei-templates/http/discoveries/
# Custom nuclei template for API discovery
cat > api-discovery.yaml <<EOF
id: api-discovery
info:
name: API Endpoint Discovery
author: YourName
severity: info
http:
- method: GET
path:
- "{{BaseURL}}/api/v1/users"
- "{{BaseURL}}/api/v2/users"
- "{{BaseURL}}/api/internal/users"
matchers:
- type: status
status:
- 200
- 201
- 204
EOF
nuclei -u https://api.example.com -t api-discovery.yaml
Validation: Run against test API; verify it discovers endpoints.
Common fix: Customize templates for your API patterns; update wordlists regularly.
Step 5) Scan source code for API routes
Search codebase for route definitions:
Click to view commands
# Find route definitions (example for Express.js)
grep -r "app\.\(get\|post\|put\|delete\|patch\)" src/ > routes.txt
# Extract endpoint paths
cat routes.txt | grep -oE "'/[^']+'" | sort -u > code-endpoints.txt
# Compare with documented endpoints
comm -23 <(sort code-endpoints.txt) <(sort documented-endpoints.txt) > shadow-from-code.txt
For other frameworks:
- Django:
grep -r "urlpatterns\|@api_view\|@action" - Flask:
grep -r "@app\.route\|@blueprint\.route" - FastAPI:
grep -r "@app\.\(get\|post\|put\|delete\)"
Validation: Extract routes from code; compare to documentation; find mismatches.
Common fix: Automate route extraction; include in code review process.
Step 6) Apply global rate limits to all endpoints
Even undocumented endpoints should be rate-limited:
Click to view JavaScript code
// Express.js example with express-rate-limit
const rateLimit = require('express-rate-limit');
// Global rate limiter (applies to all routes)
const globalLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100, // Limit each IP to 100 requests per windowMs
message: 'Too many requests from this IP',
standardHeaders: true,
legacyHeaders: false,
});
app.use(globalLimiter); // Apply to all routes
// Per-endpoint rate limiter (stricter for sensitive endpoints)
const strictLimiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 10,
});
app.post('/api/v1/admin/users', strictLimiter, adminHandler);
Validation: Send 150 requests rapidly; expect 429 after 100.
Common fix: Tune limits based on traffic patterns; use different limits for authenticated vs anonymous.
Step 7) Validate all endpoints (documented and shadow)
Ensure all endpoints have proper security controls:
Click to view JavaScript code
// Middleware to validate all requests
app.use((req, res, next) => {
// Log all requests (including shadow APIs)
console.log(`${req.method} ${req.path} - ${req.ip}`);
// Check if endpoint is documented
const isDocumented = documentedEndpoints.includes(`${req.method} ${req.path}`);
if (!isDocumented) {
// Alert on undocumented endpoint access
logger.warn(`Shadow API accessed: ${req.method} ${req.path}`, {
ip: req.ip,
userAgent: req.headers['user-agent']
});
}
// Apply security controls regardless
// (auth, validation, rate limiting, etc.)
next();
});
Validation: Access undocumented endpoint; verify it’s logged and security controls apply.
Common fix: Set up alerting for shadow API access; investigate and document or disable.
Step 8) Monitor and detect shadow API discovery attempts
- Log all 404/403 responses: path, method, IP, user-agent.
- Alert on: directory brute-forcing patterns, rapid 404s, suspicious user-agents.
- Track discovery tools: detect known scanner signatures (nuclei, ffuf, etc.).
Click to view JavaScript code
// Log 404s (potential discovery attempts)
app.use((req, res, next) => {
const originalSend = res.send;
res.send = function(data) {
if (res.statusCode === 404) {
logger.warn('404 - Potential API discovery attempt', {
method: req.method,
path: req.path,
ip: req.ip,
userAgent: req.headers['user-agent']
});
// Detect brute-forcing pattern
const recent404s = getRecent404s(req.ip, '5m');
if (recent404s.length > 50) {
logger.alert('Possible directory brute-forcing', { ip: req.ip });
// Optionally block IP
}
}
originalSend.call(this, data);
};
next();
});
Validation: Simulate directory brute-forcing; verify alerts fire.
Common fix: Set up log aggregation with alerting; tune thresholds to reduce false positives.
Cleanup
- Remove test discovery tools and wordlists.
- Document discovered shadow APIs or disable them if unnecessary.
- Update API inventory and documentation.
Validation: Verify shadow APIs are either documented or disabled.
Common fix: Maintain API inventory as living document; review regularly.
Related Reading: Learn about API security best practices and edge function security.
API Discovery Method Comparison
| Method | Discovery Speed | Accuracy | Coverage | Best For |
|---|---|---|---|---|
| Directory Brute-Forcing | Fast | Medium | Medium | Known patterns |
| Traffic Log Analysis | Medium | High | High | Existing traffic |
| Source Code Scanning | Fast | Very High | High | Code access |
| Automated Tools (nuclei, ffuf) | Very Fast | High | Very High | Comprehensive |
| Hybrid Approach | Fast | Very High | Very High | All environments |
| Best Practice | Multiple methods | - | - | Comprehensive discovery |
Real-World Case Study: Shadow API Discovery and Remediation
Challenge: A fintech company discovered 47 undocumented shadow APIs after a security audit. These APIs included legacy endpoints, test endpoints left in production, and internal APIs exposed publicly. Attackers had already discovered 12 of them through automated scanning.
Solution: The company implemented comprehensive shadow API management:
- Automated API discovery using multiple tools (ffuf, nuclei, traffic analysis)
- Created complete API inventory and documentation
- Applied security controls (auth, rate limiting, validation) to all endpoints
- Disabled or secured 35 unnecessary shadow APIs
- Set up monitoring for API discovery attempts
Results:
- 100% API inventory coverage (documented all endpoints)
- Zero shadow API-related security incidents after remediation
- 60% reduction in attack surface (disabled unnecessary endpoints)
- Improved compliance with API security standards
- Faster incident response (complete API visibility)
FAQ
What are shadow APIs and why are they dangerous?
Shadow APIs are undocumented endpoints that exist but aren’t documented in OpenAPI/Swagger or official documentation. They’re dangerous because they often lack security controls (authentication, rate limiting, validation) and expand your attack surface. According to OWASP, 23% of API security incidents involve shadow APIs.
How do attackers discover shadow APIs?
Attackers use: directory brute-forcing (ffuf, gobuster), traffic analysis (examining API gateway logs), code scanning (searching for route definitions), and automated discovery tools (nuclei templates). They typically discover shadow APIs within 48 hours of deployment.
How often should I scan for shadow APIs?
Scan for shadow APIs: weekly for production systems, daily for development/staging, and continuously through traffic log analysis. Integrate API discovery into your CI/CD pipeline to catch shadow APIs before deployment.
What should I do when I find shadow APIs?
When you find shadow APIs: document them in your API inventory, assess their necessity (disable if unused), apply security controls (auth, rate limiting, validation), update your API documentation, and set up monitoring for access attempts.
Can I prevent shadow APIs from being created?
Prevent shadow APIs by: requiring API documentation before deployment, implementing API governance policies, using API gateways with automatic discovery, conducting regular code reviews, and maintaining an API inventory as part of your development process.
How do I secure shadow APIs I can’t remove?
Secure shadow APIs you can’t remove by: applying authentication and authorization, implementing rate limiting, adding input validation, enabling logging and monitoring, and treating them with the same security standards as documented APIs.
Conclusion
Shadow APIs represent a significant and often overlooked security risk. With 23% of API security incidents involving undocumented endpoints and attackers discovering them within 48 hours, organizations must prioritize shadow API discovery and remediation.
Action Steps
- Discover your shadow APIs - Use automated tools and traffic analysis
- Create API inventory - Document all endpoints, documented or not
- Assess and prioritize - Determine which shadow APIs are necessary
- Apply security controls - Secure or disable shadow APIs
- Set up monitoring - Detect API discovery attempts and unauthorized access
- Prevent future shadow APIs - Implement API governance and documentation requirements
Future Trends
Looking ahead to 2026-2027, we expect to see:
- AI-powered API discovery - Automated detection of shadow APIs using machine learning
- API governance automation - Tools that prevent shadow APIs from being deployed
- Regulatory requirements - Compliance mandates for API inventory and documentation
- Zero-trust API security - All APIs (documented or not) treated with zero-trust principles
The API security landscape is evolving rapidly. Organizations that discover and secure their shadow APIs now will be better positioned to defend against API attacks and meet future compliance requirements.
→ Download our Shadow API Discovery Checklist to find hidden endpoints
→ Read our guide on API Security for comprehensive API protection
→ Subscribe for weekly cybersecurity updates to stay informed about API threats
About the Author
CyberSec Team
Cybersecurity Experts
10+ years of experience in API security, application security, and threat detection
Specializing in API discovery, shadow API remediation, and API governance
Contributors to OWASP API Security Top 10 and API security best practices
Our team has helped hundreds of organizations discover and secure shadow APIs, reducing API-related security incidents by an average of 80%. We believe in comprehensive API security that leaves no endpoint unprotected.