Repository navigation
Releases
APILeak v1.0.0
APILeak v1.0.0 — MCP Server + AI Integration
This is the first production-stable release of APILeak, adding a full Model Context Protocol (MCP) server that exposes every scan capability as a tool invocable by AI agents (Claude Desktop, Kiro, custom LLM workflows).
What's New
MCP Server (apileaks mcp-server)
- 16+ MCP tools — every CLI command exposed as a typed, schema-validated MCP tool
- stdio transport — connect Claude Desktop, Kiro, or any MCP client with a single config line
- HTTP/SSE transport — persistent server with Bearer token auth and optional TLS
- Destructive Confirmation Gate — AI cannot execute destructive scans without a human
ConfirmationToken - Append-only audit log — every tool invocation logged as JSON Lines (OWASP MCP08)
- Rate limiting + timeouts — 60 req/min per client, 300s max per tool (OWASP MCP05)
- Tool manifest hash — SHA-256 of registered tools logged at startup (OWASP MCP03)
- All 10 OWASP MCP Top 10 controls implemented
AI Assistance (apileaks[ai])
--ai-triage— LLM-powered finding prioritisation (Anthropic / OpenAI / Amazon Bedrock)--ai-dedup— semantic deduplication of overlapping module findings- Graceful degradation — AI errors never fail the scan
Offensive MCP Auditing (apileaks mcp-audit)
- Tool poisoning detection (hidden prompt instructions in descriptions)
- SSRF probing via URL-accepting tools
- Missing confirmation gate check on destructive tools
- Credential leak detection in tool responses
Docker
Dockerfile.mcp— dedicated MCP server image (Alpine, non-root, hash-verified deps)docker compose --profile mcp up— one command to start the full stackdocker compose --profile mcp-audit up— security self-audit in Docker
Documentation & GitHub Pages
- Full docs site: https://moisestapia.github.io/apileaks/
- MCP Server Guide, Docker Deployment, AI Providers, Tools Reference, Security docs
Installation
# MCP server only
pip install 'apileaks[mcp]'
# MCP + AI triage/dedup (Anthropic + OpenAI)
pip install 'apileaks[mcp,ai]'
# MCP + AI + Amazon Bedrock
pip install 'apileaks[mcp,ai,aws]'Quick Start
# Connect to Claude Desktop or Kiro (stdio)
apileaks mcp-server --transport stdio
# HTTP server
export APILEAKS_MCP_AUTH_TOKEN=$(python -c "import secrets; print(secrets.token_urlsafe(32))")
apileaks mcp-server --transport http --port 8080
# Docker
APILEAKS_MCP_AUTH_TOKEN=secret docker compose --profile mcp upSecurity Self-Audit
The MCP server passes its own apileaks mcp-audit security check on every release (dogfooding). Results are attached as a workflow artifact.
See the full MCP Security documentation for OWASP MCP Top 10 control details.
Full Changelog: v0.3.0...v1.0.0
apileaks v0.3.0
Instalación
pip / uv (recomendado):
pip install apileaks
uv tool install apileaks
pipx install apileaksKali Linux / Parrot OS / Debian / Ubuntu:
wget https://github.com/MoisesTapia/apileaks/releases/download/v0.3.0/apileaks_*.deb
sudo dpkg -i apileaks_*.deb
sudo apt-get install -fmacOS (Homebrew):
brew tap MoisesTapia/apileaks
brew install apileaksapileaks v0.2.2
v0.2.2 - JWT Algorithm Confusion SSH key support & HTTP engine fix
New Features:
- SSH public key support for algorithm confusion attacks (ssh-rsa, ecdsa-sha2)
- Automatic detection and loading of OpenSSH key format without manual PEM conversion
- SSH key variants (ssh_original, ssh_serialized) tried first as HMAC secrets
- Response body displayed when content length differs from baseline
Bug Fixes:
- Fixed HTTPRequestEngine passing empty params={} to httpx which corrupted
URLs containing query strings (caused 400 Bad Request on Flask/Werkzeug servers) - Improved response analyzer to detect same-status-code vulnerabilities when
response body changes significantly (common in CTF/lab environments)
Improvements:
- Reordered algorithm confusion key variants for faster exploitation
- Better vulnerability detection confidence scoring for content-based analysis
apileaks v0.2.1
This release ships a complete JWT security testing toolkit, both as a standalone CLI and as the owasp auth automated scanner (OWASP API2 — Broken Authentication).
JWT CLI (apileaks jwt)
A dedicated jwt command group with the following subcommands:
| Command | Description |
|---|---|
| jwt decode | Decode any JWT and display header, payload, and signature |
| jwt encode | Encode a new token with custom header/payload (HS256 or RSA) |
| jwt verify | Verify a token signature against a secret, key file, PEM, or JWKS |
| jwt genkey | Generate RSA or EC keypairs for testing |
| jwt jwks-to-key | Reconstruct a PEM public key from a JWKS endpoint |
| jwt brute-secret | Brute-force weak HMAC secrets against a wordlist |
| jwt test-alg-none | Probe endpoints for alg:none acceptance (signature bypass) |
| jwt test-null-signature | Probe for null/empty signature acceptance |
| jwt test-alg-confusion | RS256 → HS256 algorithm confusion attack using the server's public key |
| jwt test-kid-injection | kid header injection (path traversal / SQL injection payloads) |
| jwt test-jwks-spoof | Spoof a jku / x5u header to point to attacker-controlled JWKS |
| jwt test-inline-jwks | Embed a self-signed JWKS inline in the token header |
| jwt attack-test | Run all attack vectors sequentially against a target endpoint and save full report |
Automated detection (owasp auth --jwt-testing)
The owasp auth module now detects the following JWT findings automatically:
JWT_WEAK_SECRET — HMAC secret brute-forced against a bundled wordlist (severity: HIGH)
JWT_NONE_ALGORITHM — endpoint accepts a token with alg:none (severity: CRITICAL)
JWT_NO_EXPIRATION — token is issued without an exp claim (severity: HIGH)
JWT_EXPIRED_TOKEN_ACCEPTED — endpoint accepts a token past its expiration (severity: HIGH)
JWT_TOKEN_NOT_INVALIDATED_AFTER_LOGOUT — token remains valid after calling the logout endpoint (severity: HIGH)
JWT_ALGORITHM_CONFUSION — RS256 public key used as HMAC secret to forge a valid HS256 token (severity: CRITICAL)
JWT_MISSING_EXP_CLAIM / JWT_MISSING_ISS_CLAIM / JWT_MISSING_AUD_CLAIM / JWT_MISSING_JTI_CLAIM — static claim hygiene checks
JWT_EXCESSIVE_TOKEN_LIFETIME — token lifetime exceeds the configured threshold
ECDSA Psychic Signature (CVE-2022-21449) — null r=0, s=0 signature probe for ES256/384/512
Crypto support
HMAC: HS256, HS384, HS512
RSA: RS256, RS384, RS512, PS256, PS384, PS512
ECDSA: ES256 (P-256), ES384 (P-384), ES512 (P-521)
JWK reconstruction from JWKS endpoints (RSA and EC)
PEM/DER key loading with certificate fallback