All notable changes to Vulnchain are documented here.
The format follows Keep a Changelog. Versions follow Semantic Versioning.
0.1.0 — 2024-04-06
Core pipeline
- LangGraph scan pipeline:
clone_repo → parse_ast → run_semgrep → detect_ai_code → run_joern → scan_dependencies → llm_code_review → generate_threat_model → synthesize_attack_chains → generate_report - FastAPI agent service with scan management REST API
- Rust/Axum webhook service with HMAC-SHA256 GitHub signature verification
- PostgreSQL persistence for scans, findings, attack chains
- Next.js 14 dashboard — findings table, attack chain cards, 30-day trend charts
- SARIF output for GitHub Security tab integration
Semgrep rules (136 rules, 10 languages)
python-security.yaml— 22 rules: SQLi, command injection, path traversal, XXE, Jinja2/Mako SSTI, SSRF, zip slip, LDAP, subprocess shell injection, pickle/shelve deserializationjava-security.yaml— 19 rules: SQLi, SpEL injection, command injection, path traversal, SSRF, XXE, ObjectInputStream/XMLDecoder deserialization, Log4Shell (CVE-2021-44228), Thymeleaf/FreeMarker/Velocity SSTI, LDAP, weak ciphersphp-security.yaml— 19 rules: SQLi taint, XSS taint, command injection, eval RCE, file inclusion, XXE, session fixation, unserialize, extract(), type juggling, preg_replace /e, LDAPgo-security.yaml— 11 rules: SQLi, command injection, path traversal, SSRF, TLS InsecureSkipVerify, hardcoded secrets, insecure random, template injectionjavascript-security.yaml— 12 rules: Prototype pollution (lodash), NoSQL injection, ReDoS, postMessage origin bypass, path traversal, innerHTML XSScsharp-security.yaml— 12 rules: SQLi, command injection, path traversal, SSRF, BinaryFormatter/NetDataContractSerializer deserialization, Json.NET TypeNameHandling, LDAP, ViewState MACruby-security.yaml— 14 rules: SQLi (ActiveRecord + Arel), command injection, eval, mass assignment, path traversal, SSRF, ERB SSTI, Marshal.load, html_safe XSS, weak hashestypescript-security.yaml— 6 rules: Prototype pollution, unsafe type assertions, JWT algorithm confusionsecrets-universal.yaml— 18 patterns: AWS, GCP, GitHub PAT, GitLab, Stripe, Slack, SendGrid, Twilio, SSH private keys, credentials in URLs, OpenAI/Anthropic/Hugging Face keysswift-security.yaml— 3 rules: Hardcoded credentials, insecure HTTP
Joern CPG taint analysis (13 scripts)
tainted_sql.sc— inter-procedural SQLi detectioncommand_injection.sc— user input → exec/system/popenpath_traversal.sc— user input → file open/readssrf.sc— user input → HTTP client URLtemplate_injection.sc— SSTI: Thymeleaf, FreeMarker, Velocity, Jinja2, Pug, EJSxxe_injection.sc— user input → XML parser without DTD guardinsecure_deserialization.sc— user input → ObjectInputStream/pickle/unserializeldap_injection.sc— user input → LDAP filter without escapingopen_redirect.sc— user URL → sendRedirect/Response.Redirectdata_leak.sc— password/token parameters → log sinksmissing_auth.sc— endpoints missing authentication checksprototype_pollution.sc— req.body → lodash merge/set/deepMerge (CVE-2025-13465)jwt_algorithm_confusion.sc— algorithm from JWT header → decode call
AI-generated code detection (6 independent scorers)
- Commit signals: AI tool attribution, large atomic dumps
- Code patterns: over-explanatory docstrings, empty stubs, broad catches, burstiness (AAAI 2024)
- Security antipatterns: verify=False, placeholder secrets, weak password hashing, JWT no-verify
- Comment density: >20% comment ratio
- Placeholder strings: example.com, localhost, dummy literals
- Method validity: phantom method detection
Dependency CVE scanning
- OSV API integration for Python, Node.js, PHP, Go, Ruby, Java ecosystems
- Framework version fingerprinting
CI / open source infrastructure
- GitHub Actions CI: Python lint/types/tests, Semgrep rule validation, secrets scanning (gitleaks), Rust build/clippy, Docker build
- Release workflow: GHCR image publishing on tag
- Issue templates: bug report, feature request, rule proposal
CONTRIBUTING.md,SECURITY.md,LICENSE(MIT)