[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HM2QJ8417CNQFDA69DE9SX":3,"skill-same:01M6HM2QJ8417CNQFDA69DE9SX":136},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":79,"commitSha":80,"skillDirectory":81,"forksCount":82,"repositoryHtmlUrl":83,"repositoryHomepageUrl":6,"ownerHtmlUrl":84,"ownerBlogUrl":6,"ownerDescription":85,"updatedAt":86,"install":87,"resources":100},"01M6HM2QJ8417CNQFDA69DE9SX","implementing-fuzz-testing-in-cicd-with-aflplusplus",null,"Integrate AFL++ coverage-guided fuzz testing into CI\u002FCD pipelines to discover memory corruption, input handling, and logic vulnerabilities in C\u002FC++ and compiled applications.","HenriqueMC17\u002Fagente-core","HenriqueMC17","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F206460478?v=4","01M6HB63HBBF18AC4H09XTB549","Henrique Monteiro Cardoso","01M6HB63NGSQXWKWCFWW2B20W0",1,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Fimplementing-fuzz-testing-in-cicd-with-aflplusplus\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"implementing","with","fuzz testing","cicd","aflplusplus","implementing fuzz testing in cicd with aflplusplus","testing","vulnerability","CI\u002FCD","input","discover","map","integrate","aml","coverage","t1195","ci","cybersecurity","memory","devsecops","2026-11-10 10:12:30",false,"---\nname: implementing-fuzz-testing-in-cicd-with-aflplusplus\ndescription: Integrate AFL++ coverage-guided fuzz testing into CI\u002FCD pipelines to discover memory corruption, input handling, and logic vulnerabilities in C\u002FC++ and compiled applications.\ndomain: cybersecurity\nsubdomain: devsecops\ntags:\n- aflplusplus\n- fuzz-testing\n- cicd\n- coverage-guided-fuzzing\n- security-testing\n- vulnerability-discovery\n- afl\nversion: '1.0'\nauthor: mahipal\nlicense: Apache-2.0\nnist_ai_rmf:\n- MEASURE-2.7\n- MAP-5.1\n- MANAGE-2.4\natlas_techniques:\n- AML.T0070\n- AML.T0066\n- AML.T0082\nnist_csf:\n- PR.PS-01\n- GV.SC-07\n- ID.IM-04\n- PR.PS-04\nmitre_attack:\n- T1195\n- T1554\n- T1059.004\n- T1005\n- T1059\ncategory: implementing-fuzz-testing-in-cicd-with-aflplusplus\n---\n# Implementing Fuzz Testing in CI\u002FCD with AFL++\n\n## Overview\n\nAFL++ (American Fuzzy Lop Plus Plus) is a community-maintained fork of AFL that provides state-of-the-art coverage-guided fuzz testing for discovering vulnerabilities in compiled applications. AFL++ uses genetic algorithms to mutate inputs, tracking code coverage to find new execution paths that trigger crashes, hangs, and undefined behavior. In CI\u002FCD environments, AFL++ can be integrated to continuously test parsers, protocol handlers, file format processors, and any code that handles untrusted input. AFL++ supports persistent mode for high-speed fuzzing (up to 100,000+ executions per second), custom mutators, QEMU mode for binary-only fuzzing, and CmpLog\u002FRedQueen for automatic dictionary extraction.\n\n\n## When to Use\n\n- When deploying or configuring implementing fuzz testing in cicd with aflplusplus capabilities in your environment\n- When establishing security controls aligned to compliance requirements\n- When building or improving security architecture for this domain\n- When conducting security assessments that require this implementation\n\n## Prerequisites\n\n- Linux-based CI runners (AFL++ does not support Windows natively)\n- GCC or Clang compiler toolchain\n- AFL++ installed (`apt install aflplusplus` or built from source)\n- Target application with harness functions isolating input processing\n- Seed corpus of valid input samples\n\n## Core Concepts\n\n### Coverage-Guided Fuzzing\n\nAFL++ instruments the target binary at compile time (or via QEMU\u002FFrida for binary-only targets) to track which code paths each input exercises. When a mutated input triggers a new code path, it is saved to the corpus for further mutation. This feedback loop enables AFL++ to systematically explore program state space.\n\n### Instrumentation Modes\n\n| Mode | Use Case | Performance |\n|------|----------|-------------|\n| `afl-clang-fast` (LTO) | Source available, best performance | Highest |\n| `afl-clang-fast` | Source available, standard | High |\n| `afl-gcc-fast` | GCC-based projects | High |\n| `QEMU mode` | Binary-only, no source | Medium |\n| `Frida mode` | Binary-only, cross-platform | Medium |\n| `Unicorn mode` | Firmware, embedded | Low |\n\n### Persistent Mode\n\nPersistent mode avoids fork overhead by fuzzing within a loop:\n\n```c\n#include \u003Cunistd.h>\n\n__AFL_FUZZ_INIT();\n\nint main() {\n    __AFL_INIT();\n    unsigned char *buf = __AFL_FUZZ_TESTCASE_BUF;\n\n    while (__AFL_LOOP(10000)) {\n        int len = __AFL_FUZZ_TESTCASE_LEN;\n        \u002F\u002F Process buf[0..len-1]\n        parse_input(buf, len);\n    }\n    return 0;\n}\n```\n\n## Workflow\n\n### Step 1 --- Build the Fuzzing Harness\n\nCreate a harness that feeds AFL++ input to the target function:\n\n```c\n\u002F\u002F fuzz_harness.c\n#include \u003Cstdio.h>\n#include \u003Cstdlib.h>\n#include \u003Cstring.h>\n#include \"target_parser.h\"\n\n__AFL_FUZZ_INIT();\n\nint main() {\n    __AFL_INIT();\n    unsigned char *buf = __AFL_FUZZ_TESTCASE_BUF;\n\n    while (__AFL_LOOP(10000)) {\n        int len = __AFL_FUZZ_TESTCASE_LEN;\n        if (len \u003C 4) continue;\n\n        \u002F\u002F Reset state between iterations\n        parser_context_t ctx;\n        parser_init(&ctx);\n        parser_process(&ctx, buf, len);\n        parser_cleanup(&ctx);\n    }\n    return 0;\n}\n```\n\n### Step 2 --- Compile with AFL++ Instrumentation\n\n```bash\n# Standard instrumentation\nexport CC=afl-clang-fast\nexport CXX=afl-clang-fast++\n\n# Enable AddressSanitizer for better crash detection\nexport AFL_USE_ASAN=1\n\n# Build the target with instrumentation\n$CC -o fuzz_harness fuzz_harness.c -ltarget_parser -fsanitize=address\n\n# Build a CmpLog binary for better coverage\n$CC -o fuzz_harness_cmplog fuzz_harness.c -ltarget_parser \\\n  -fsanitize=address -DCMPLOG\n```\n\n### Step 3 --- Prepare Seed Corpus\n\n```bash\nmkdir -p corpus\u002F\n# Add valid input samples\ncp test_inputs\u002F* corpus\u002F\n# Minimize the corpus\nafl-cmin -i corpus\u002F -o corpus_min\u002F -- .\u002Ffuzz_harness @@\n# Further minimize individual inputs\nmkdir -p corpus_tmin\u002F\nfor f in corpus_min\u002F*; do\n    afl-tmin -i \"$f\" -o \"corpus_tmin\u002F$(basename $f)\" -- .\u002Ffuzz_harness @@\ndone\n```\n\n### Step 4 --- Configure CI\u002FCD Integration\n\n**GitHub Actions:**\n\n```yaml\nname: Fuzz Testing\non:\n  push:\n    branches: [main]\n  schedule:\n    - cron: '0 2 * * *'  # Nightly fuzzing\n\njobs:\n  fuzz:\n    runs-on: ubuntu-latest\n    timeout-minutes: 120\n    steps:\n      - uses: actions\u002Fcheckout@v4\n\n      - name: Install AFL++\n        run: |\n          sudo apt-get update\n          sudo apt-get install -y aflplusplus\n\n      - name: Restore corpus cache\n        uses: actions\u002Fcache@v4\n        with:\n          path: corpus\u002F\n          key: fuzz-corpus-${{ github.sha }}\n          restore-keys: fuzz-corpus-\n\n      - name: Build fuzzing harness\n        run: |\n          export CC=afl-clang-fast\n          export AFL_USE_ASAN=1\n          make fuzz_harness\n\n      - name: Run AFL++ fuzzing (CI mode)\n        env:\n          AFL_CMPLOG_ONLY_NEW: 1\n          AFL_FAST_CAL: 1\n          AFL_NO_STARTUP_CALIBRATION: 1\n        run: |\n          mkdir -p findings\u002F\n          timeout 7200 afl-fuzz \\\n            -S ci_fuzzer \\\n            -i corpus\u002F \\\n            -o findings\u002F \\\n            -t 5000 \\\n            -- .\u002Ffuzz_harness @@ || true\n\n      - name: Check for crashes\n        run: |\n          CRASHES=$(find findings\u002F -path \"*\u002Fcrashes\u002F*\" -not -name \"README.txt\" | wc -l)\n          echo \"Found $CRASHES unique crashes\"\n          if [ \"$CRASHES\" -gt 0 ]; then\n            echo \"::error::AFL++ found $CRASHES crashes\"\n            for crash in findings\u002F*\u002Fcrashes\u002F*; do\n              [ -f \"$crash\" ] && echo \"Crash: $crash ($(wc -c \u003C $crash) bytes)\"\n            done\n            exit 1\n          fi\n\n      - name: Update corpus cache\n        if: always()\n        run: |\n          afl-cmin -i findings\u002Fci_fuzzer\u002Fqueue\u002F -o corpus\u002F -- .\u002Ffuzz_harness @@\n```\n\n### Step 5 --- Parallel Fuzzing for Nightly Runs\n\n```bash\n# Launch multiple secondary instances for better coverage\nfor i in $(seq 1 $(nproc)); do\n    afl-fuzz -S fuzzer_$i \\\n      -i corpus\u002F \\\n      -o findings\u002F \\\n      -- .\u002Ffuzz_harness @@ &\ndone\n\n# Wait for all fuzzers\nwait\n\n# Merge and minimize corpus\nafl-cmin -i findings\u002F*\u002Fqueue\u002F -o corpus_merged\u002F -- .\u002Ffuzz_harness @@\n```\n\n### Step 6 --- Crash Triage\n\n```bash\n# Reproduce and categorize crashes\nfor crash in findings\u002F*\u002Fcrashes\u002F*; do\n    echo \"=== Testing: $crash ===\"\n    timeout 5 .\u002Ffuzz_harness_asan \"$crash\" 2>&1 | head -20\n    echo \"---\"\ndone\n\n# Deduplicate crashes by stack trace\nafl-collect findings\u002F crashes_deduped\u002F -- .\u002Ffuzz_harness @@\n```\n\n## CI\u002FCD Best Practices for AFL++\n\n| Setting | CI Short Run | Nightly Long Run |\n|---------|-------------|-----------------|\n| Duration | 30-60 min | 4-24 hours |\n| Mode | `-S` (secondary only) | `-S` (no `-M` for CI) |\n| `AFL_CMPLOG_ONLY_NEW` | 1 | 1 |\n| `AFL_FAST_CAL` | 1 | 0 |\n| `AFL_NO_STARTUP_CALIBRATION` | 1 | 0 |\n| Corpus caching | Required | Required |\n| Parallel instances | 1-2 | nproc |\n\n## Monitoring Fuzzing Campaigns\n\n```bash\n# View fuzzing statistics\nafl-whatsup findings\u002F\n\n# Key metrics to track:\n# - Total paths found (code coverage indicator)\n# - Unique crashes \u002F unique hangs\n# - Stability percentage (should be >90%)\n# - Exec speed (execs\u002Fsec)\n# - Cycles done (full corpus cycles completed)\n```\n\n## References\n\n- [AFL++ Documentation](https:\u002F\u002Faflplus.plus\u002Fdocs\u002F)\n- [AFL++ GitHub Repository](https:\u002F\u002Fgithub.com\u002FAFLplusplus\u002FAFLplusplus)\n- [AFL++ Fuzzing in Depth Guide](https:\u002F\u002Faflplus.plus\u002Fdocs\u002Ffuzzing_in_depth\u002F)\n- [Google Testing Handbook - AFL++](https:\u002F\u002Fappsec.guide\u002Fdocs\u002Ffuzzing\u002Fc-cpp\u002Faflpp\u002F)\n- [OWASP Fuzzing Guide](https:\u002F\u002Fowasp.org\u002Fwww-community\u002FFuzzing)\n","# Implementing Fuzz Testing in CI\u002FCD with AFL++\n\n## Overview\n\nAFL++ (American Fuzzy Lop Plus Plus) is a community-maintained fork of AFL that provides state-of-the-art coverage-guided fuzz testing for discovering vulnerabilities in compiled applications. AFL++ uses genetic algorithms to mutate inputs, tracking code coverage to find new execution paths that trigger crashes, hangs, and undefined behavior. In CI\u002FCD environments, AFL++ can be integrated to continuously test parsers, protocol handlers, file format processors, and any code that handles untrusted input. AFL++ supports persistent mode for high-speed fuzzing (up to 100,000+ executions per second), custom mutators, QEMU mode for binary-only fuzzing, and CmpLog\u002FRedQueen for automatic dictionary extraction.\n\n\n## When to Use\n\n- When deploying or configuring implementing fuzz testing in cicd with aflplusplus capabilities in your environment\n- When establishing security controls aligned to compliance requirements\n- When building or improving security architecture for this domain\n- When conducting security assessments that require this implementation\n\n## Prerequisites\n\n- Linux-based CI runners (AFL++ does not support Windows natively)\n- GCC or Clang compiler toolchain\n- AFL++ installed (`apt install aflplusplus` or built from source)\n- Target application with harness functions isolating input processing\n- Seed corpus of valid input samples\n\n## Core Concepts\n\n### Coverage-Guided Fuzzing\n\nAFL++ instruments the target binary at compile time (or via QEMU\u002FFrida for binary-only targets) to track which code paths each input exercises. When a mutated input triggers a new code path, it is saved to the corpus for further mutation. This feedback loop enables AFL++ to systematically explore program state space.\n\n### Instrumentation Modes\n\n| Mode | Use Case | Performance |\n|------|----------|-------------|\n| `afl-clang-fast` (LTO) | Source available, best performance | Highest |\n| `afl-clang-fast` | Source available, standard | High |\n| `afl-gcc-fast` | GCC-based projects | High |\n| `QEMU mode` | Binary-only, no source | Medium |\n| `Frida mode` | Binary-only, cross-platform | Medium |\n| `Unicorn mode` | Firmware, embedded | Low |\n\n### Persistent Mode\n\nPersistent mode avoids fork overhead by fuzzing within a loop:\n\n```c\n#include \u003Cunistd.h>\n\n__AFL_FUZZ_INIT();\n\nint main() {\n    __AFL_INIT();\n    unsigned char *buf = __AFL_FUZZ_TESTCASE_BUF;\n\n    while (__AFL_LOOP(10000)) {\n        int len = __AFL_FUZZ_TESTCASE_LEN;\n        \u002F\u002F Process buf[0..len-1]\n        parse_input(buf, len);\n    }\n    return 0;\n}\n```\n\n## Workflow\n\n### Step 1 --- Build the Fuzzing Harness\n\nCreate a harness that feeds AFL++ input to the target function:\n\n```c\n\u002F\u002F fuzz_harness.c\n#include \u003Cstdio.h>\n#include \u003Cstdlib.h>\n#include \u003Cstring.h>\n#include \"target_parser.h\"\n\n__AFL_FUZZ_INIT();\n\nint main() {\n    __AFL_INIT();\n    unsigned char *buf = __AFL_FUZZ_TESTCASE_BUF;\n\n    while (__AFL_LOOP(10000)) {\n        int len = __AFL_FUZZ_TESTCASE_LEN;\n        if (len \u003C 4) continue;\n\n        \u002F\u002F Reset state between iterations\n        parser_context_t ctx;\n        parser_init(&ctx);\n        parser_process(&ctx, buf, len);\n        parser_cleanup(&ctx);\n    }\n    return 0;\n}\n```\n\n### Step 2 --- Compile with AFL++ Instrumentation\n\n```bash\n# Standard instrumentation\nexport CC=afl-clang-fast\nexport CXX=afl-clang-fast++\n\n# Enable AddressSanitizer for better crash detection\nexport AFL_USE_ASAN=1\n\n# Build the target with instrumentation\n$CC -o fuzz_harness fuzz_harness.c -ltarget_parser -fsanitize=address\n\n# Build a CmpLog binary for better coverage\n$CC -o fuzz_harness_cmplog fuzz_harness.c -ltarget_parser \\\n  -fsanitize=address -DCMPLOG\n```\n\n### Step 3 --- Prepare Seed Corpus\n\n```bash\nmkdir -p corpus\u002F\n# Add valid input samples\ncp test_inputs\u002F* corpus\u002F\n# Minimize the corpus\nafl-cmin -i corpus\u002F -o corpus_min\u002F -- .\u002Ffuzz_harness @@\n# Further minimize individual inputs\nmkdir -p corpus_tmin\u002F\nfor f in corpus_min\u002F*; do\n    afl-tmin -i \"$f\" -o \"corpus_tmin\u002F$(basename $f)\" -- .\u002Ffuzz_harness @@\ndone\n```\n\n### Step 4 --- Configure CI\u002FCD Integration\n\n**GitHub Actions:**\n\n```yaml\nname: Fuzz Testing\non:\n  push:\n    branches: [main]\n  schedule:\n    - cron: '0 2 * * *'  # Nightly fuzzing\n\njobs:\n  fuzz:\n    runs-on: ubuntu-latest\n    timeout-minutes: 120\n    steps:\n      - uses: actions\u002Fcheckout@v4\n\n      - name: Install AFL++\n        run: |\n          sudo apt-get update\n          sudo apt-get install -y aflplusplus\n\n      - name: Restore corpus cache\n        uses: actions\u002Fcache@v4\n        with:\n          path: corpus\u002F\n          key: fuzz-corpus-${{ github.sha }}\n          restore-keys: fuzz-corpus-\n\n      - name: Build fuzzing harness\n        run: |\n          export CC=afl-clang-fast\n          export AFL_USE_ASAN=1\n          make fuzz_harness\n\n      - name: Run AFL++ fuzzing (CI mode)\n        env:\n          AFL_CMPLOG_ONLY_NEW: 1\n          AFL_FAST_CAL: 1\n          AFL_NO_STARTUP_CALIBRATION: 1\n        run: |\n          mkdir -p findings\u002F\n          timeout 7200 afl-fuzz \\\n            -S ci_fuzzer \\\n            -i corpus\u002F \\\n            -o findings\u002F \\\n            -t 5000 \\\n            -- .\u002Ffuzz_harness @@ || true\n\n      - name: Check for crashes\n        run: |\n          CRASHES=$(find findings\u002F -path \"*\u002Fcrashes\u002F*\" -not -name \"README.txt\" | wc -l)\n          echo \"Found $CRASHES unique crashes\"\n          if [ \"$CRASHES\" -gt 0 ]; then\n            echo \"::error::AFL++ found $CRASHES crashes\"\n            for crash in findings\u002F*\u002Fcrashes\u002F*; do\n              [ -f \"$crash\" ] && echo \"Crash: $crash ($(wc -c \u003C $crash) bytes)\"\n            done\n            exit 1\n          fi\n\n      - name: Update corpus cache\n        if: always()\n        run: |\n          afl-cmin -i findings\u002Fci_fuzzer\u002Fqueue\u002F -o corpus\u002F -- .\u002Ffuzz_harness @@\n```\n\n### Step 5 --- Parallel Fuzzing for Nightly Runs\n\n```bash\n# Launch multiple secondary instances for better coverage\nfor i in $(seq 1 $(nproc)); do\n    afl-fuzz -S fuzzer_$i \\\n      -i corpus\u002F \\\n      -o findings\u002F \\\n      -- .\u002Ffuzz_harness @@ &\ndone\n\n# Wait for all fuzzers\nwait\n\n# Merge and minimize corpus\nafl-cmin -i findings\u002F*\u002Fqueue\u002F -o corpus_merged\u002F -- .\u002Ffuzz_harness @@\n```\n\n### Step 6 --- Crash Triage\n\n```bash\n# Reproduce and categorize crashes\nfor crash in findings\u002F*\u002Fcrashes\u002F*; do\n    echo \"=== Testing: $crash ===\"\n    timeout 5 .\u002Ffuzz_harness_asan \"$crash\" 2>&1 | head -20\n    echo \"---\"\ndone\n\n# Deduplicate crashes by stack trace\nafl-collect findings\u002F crashes_deduped\u002F -- .\u002Ffuzz_harness @@\n```\n\n## CI\u002FCD Best Practices for AFL++\n\n| Setting | CI Short Run | Nightly Long Run |\n|---------|-------------|-----------------|\n| Duration | 30-60 min | 4-24 hours |\n| Mode | `-S` (secondary only) | `-S` (no `-M` for CI) |\n| `AFL_CMPLOG_ONLY_NEW` | 1 | 1 |\n| `AFL_FAST_CAL` | 1 | 0 |\n| `AFL_NO_STARTUP_CALIBRATION` | 1 | 0 |\n| Corpus caching | Required | Required |\n| Parallel instances | 1-2 | nproc |\n\n## Monitoring Fuzzing Campaigns\n\n```bash\n# View fuzzing statistics\nafl-whatsup findings\u002F\n\n# Key metrics to track:\n# - Total paths found (code coverage indicator)\n# - Unique crashes \u002F unique hangs\n# - Stability percentage (should be >90%)\n# - Exec speed (execs\u002Fsec)\n# - Cycles done (full corpus cycles completed)\n```\n\n## References\n\n- [AFL++ Documentation](https:\u002F\u002Faflplus.plus\u002Fdocs\u002F)\n- [AFL++ GitHub Repository](https:\u002F\u002Fgithub.com\u002FAFLplusplus\u002FAFLplusplus)\n- [AFL++ Fuzzing in Depth Guide](https:\u002F\u002Faflplus.plus\u002Fdocs\u002Ffuzzing_in_depth\u002F)\n- [Google Testing Handbook - AFL++](https:\u002F\u002Fappsec.guide\u002Fdocs\u002Ffuzzing\u002Fc-cpp\u002Faflpp\u002F)\n- [OWASP Fuzzing Guide](https:\u002F\u002Fowasp.org\u002Fwww-community\u002FFuzzing)\n",{"name":5,"tags":52,"author":58,"domain":44,"license":15,"version":59,"category":5,"nist_csf":60,"subdomain":46,"description":7,"nist_ai_rmf":65,"mitre_attack":69,"atlas_techniques":75},[31,53,30,54,55,56,57],"fuzz-testing","coverage-guided-fuzzing","security-testing","vulnerability-discovery","afl","mahipal","1.0",[61,62,63,64],"PR.PS-01","GV.SC-07","ID.IM-04","PR.PS-04",[66,67,68],"MEASURE-2.7","MAP-5.1","MANAGE-2.4",[70,71,72,73,74],"T1195","T1554","T1059.004","T1005","T1059",[76,77,78],"AML.T0070","AML.T0066","AML.T0082","main","5eea5b3296f4673b5f481e8bcc1ba76281149f16","modules\u002Fimplementing-fuzz-testing-in-cicd-with-aflplusplus",0,"https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core","https:\u002F\u002Fgithub.com\u002FHenriqueMC17","Qualquer tecnologia suficientemente avançada é indistinguível da mágica.","2026-09-28 22:40:38",{"source":8,"skillName":5,"commands":88,"prompt":98,"zipAvailable":99},[89,92,95],{"tool":90,"command":91},"npx","npx skills add HenriqueMC17\u002Fagente-core --skill implementing-fuzz-testing-in-cicd-with-aflplusplus",{"tool":93,"command":94},"bunx","bunx skills add HenriqueMC17\u002Fagente-core --skill implementing-fuzz-testing-in-cicd-with-aflplusplus",{"tool":96,"command":97},"pnpm","pnpm dlx skills add HenriqueMC17\u002Fagente-core --skill implementing-fuzz-testing-in-cicd-with-aflplusplus","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Fimplementing-fuzz-testing-in-cicd-with-aflplusplus\u002FSKILL.md",true,[101,107,112,118,122,126,132],{"path":102,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":105,"sourceHtmlUrl":106},"assets\u002Ftemplate.md","ASSET","资产文件",893,"https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Fimplementing-fuzz-testing-in-cicd-with-aflplusplus\u002Fassets\u002Ftemplate.md",{"path":108,"resourceType":108,"resourceTypeDesc":109,"sizeBytes":110,"sourceHtmlUrl":111},"LICENSE","许可证",11255,"https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Fimplementing-fuzz-testing-in-cicd-with-aflplusplus\u002FLICENSE",{"path":113,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":116,"sourceHtmlUrl":117},"references\u002Fapi-reference.md","REFERENCE","参考文档",2114,"https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Fimplementing-fuzz-testing-in-cicd-with-aflplusplus\u002Freferences\u002Fapi-reference.md",{"path":119,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":120,"sourceHtmlUrl":121},"references\u002Fstandards.md",1800,"https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Fimplementing-fuzz-testing-in-cicd-with-aflplusplus\u002Freferences\u002Fstandards.md",{"path":123,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":124,"sourceHtmlUrl":125},"references\u002Fworkflows.md",1416,"https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Fimplementing-fuzz-testing-in-cicd-with-aflplusplus\u002Freferences\u002Fworkflows.md",{"path":127,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":130,"sourceHtmlUrl":131},"scripts\u002Fagent.py","SCRIPT","脚本",6952,"https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Fimplementing-fuzz-testing-in-cicd-with-aflplusplus\u002Fscripts\u002Fagent.py",{"path":133,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":134,"sourceHtmlUrl":135},"scripts\u002Fprocess.py",6007,"https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Fimplementing-fuzz-testing-in-cicd-with-aflplusplus\u002Fscripts\u002Fprocess.py",[137,163,187,210,226,247],{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":144,"publishedAt":47},"01M6HPFF0RCN0X6WT5EBSV71GY","validating-backup-integrity-for-recovery","Validate backup integrity through cryptographic hash verification, automated restore testing, corruption detection, and recoverability checks to ensure backups are reliable for disaster recovery and ransomware response scenarios.","https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Fvalidating-backup-integrity-for-recovery\u002FSKILL.md",[143],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[145,146,147,148,149,33,44,150,151,152,153,154,155,156,157,158,159,160,161,162],"integrity","backup","recovery","validating backup integrity for recovery","for","validate","verification","hash-verification","incident-response","ransomware","detection","t1078","t1490","disaster-recovery","restore","incident","disaster recovery","ransomware response",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":47},"01M6HPFAWJVFK25Q33K3T7WQ8G","triaging-vulnerabilities-with-ssvc-framework","Triage and prioritize vulnerabilities using CISA's Stakeholder-Specific Vulnerability Categorization (SSVC) decision tree framework to produce actionable remediation priorities.","https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Ftriaging-vulnerabilities-with-ssvc-framework\u002FSKILL.md",[],[170,171,172,173,28,44,174,175,176,177,178,179,34,180,181,182,183,184,185,186],"vulnerabilities","framework","ssvc","triaging vulnerabilities with ssvc framework","triage and prioritize","CISA","vulnerability-management","risk-management","cvss","remediation","prioritization","decision-tree","prioritize","decision","priorities","actionable","tree",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":193,"publishedAt":47},"01M6HPF6JS9X72WP59094H3ASQ","triaging-security-incident","Performs initial triage of security incidents to determine severity, scope, and required response actions using the NIST SP 800-61r3 and SANS PICERL frameworks. Classifies incidents by type, assigns priority based on business impact, and routes...","https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Ftriaging-security-incident\u002FSKILL.md",[],[194,195,160,44,196,197,198,156,157,199,200,201,202,203,204,205,206,207,208,209],"security","triaging security incident","actions","soc","NIST","analysis","severity-classification","incident-triage","SANS-PICERL","SOC-operations","picerl","conversion","isolation","scope","impact","consistency",{"skillNo":211,"name":212,"nameZh":6,"description":213,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":214,"categories":215,"keywords":216,"publishedAt":47},"01M6HPF2EX6ZYNYYHKBRJN7GEF","triaging-security-incident-with-ir-playbook","Classify and prioritize security incidents using structured IR playbooks to determine severity, assign response teams, and initiate appropriate response procedures.","https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Ftriaging-security-incident-with-ir-playbook\u002FSKILL.md",[],[194,217,218,195,160,28,44,219,197,153,220,221,156,157,222,200,182,223,224,225],"playbook","triaging security incident with ir playbook","teams","IR-playbook","severity","classification","classify","incidents","initiate",{"skillNo":227,"name":228,"nameZh":6,"description":229,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":230,"categories":231,"keywords":232,"publishedAt":47},"01M6HPEY9XPGE7X95AG4XJFQAW","triaging-security-alerts-in-splunk","Triages security alerts in Splunk Enterprise Security by classifying severity, investigating notable events, correlating related telemetry, and making escalation or closure decisions using SPL queries and the Incident Review dashboard. Use when...","https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Ftriaging-security-alerts-in-splunk\u002FSKILL.md",[],[194,233,234,235,236,237,44,238,239,240,197,241,156,242,243,244,203,245,160,246],"security alerts","splunk","triaging security alerts in splunk","alerts","review","siem","dashboard","search","correlation-search","t1566","notable-events","incident-review","cm","de",{"skillNo":248,"name":249,"nameZh":6,"description":250,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":251,"categories":252,"keywords":253,"publishedAt":47},"01M6HPET6XGEPEJPN7V032JGZ0","tracking-threat-actor-infrastructure","Threat actor infrastructure tracking involves monitoring and mapping adversary-controlled assets including command-and-control (C2) servers, phishing domains, exploit kit hosts, bulletproof hosting, a","https:\u002F\u002Fgithub.com\u002FHenriqueMC17\u002Fagente-core\u002Fblob\u002Fmain\u002Fmodules\u002Ftracking-threat-actor-infrastructure\u002FSKILL.md",[],[254,255,256,257,44,258,259,260,261,262,263,242,264,265,245,266,246,267,268,269],"infrastructure","tracking threat actor infrastructure","tracking","threat","monitoring","mitre-attack","threat-actor","threat-intelligence","command-and-control","dns","command","exploit","intelligence","domains","kit","hosts"]