Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
Xpsd — Reachability triage for vulnerability scans. Feeds scanner findings to an LLM agent that reads your source and decides which CVEs are actually reachable. | Kitploit
Tools/GitHubGitHub/owasp/xpsd
Static AnalysisVulnerability ScannersVulnerability AnalysisCode AnalysisScripting & AutomationSecurity VirtualizationDevSecOpsSupply Chain SecurityAI Security
GitHubowasp/xpsd

Xpsd

Reachability triage for vulnerability scans. Feeds scanner findings to an LLM agent that reads your source and decides which CVEs are actually reachable.

141 day agoNot yet reviewed
View Repository

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Xpsd

Discord

OWASP Xpsd

One command that decides whether a reported vulnerability is actually reachable in a given source tree.

Feed it a CVE description, or a whole vulnerability scan report, and it runs an LLM-driven reachability analysis over your code, then writes structured verdicts, markdown reports, and SARIF that GitHub code scanning reads.

To keep the cost low, the agent does not read your repository into the model's context. It works through a toolset instead: ast-grep for structural code navigation, OSV.dev lookups and page rendering to pull the advisory and the fixing commit; and dependency fetching to bring a pinned upstream version into the sandbox when the affected component is built rather than vendored.

GitHub CI integration

The action runs on GitHub Copilot through the workflow's built-in GITHUB_TOKEN. Grant copilot-requests: write and there is nothing else to arrange. OWASP Xpsd usage bills to the organization along with the rest of your Copilot spend.

permissions:
  contents: read
  security-events: write
  copilot-requests: write   # the built-in token authenticates Copilot

If you would rather bring your own model, provider-type and api-key switch the run to Anthropic, OpenAI, or Azure without changing anything else.

A workflow

name: reachability
on:
  workflow_dispatch:
  schedule:
    - cron: "0 6 * * 1"

permissions:
  contents: read
  security-events: write
  copilot-requests: write

jobs:
  reachability:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: anchore/sbom-action@v0
        with: {format: cyclonedx-json, output-file: sbom.cdx.json, upload-artifact: false}

      - uses: anchore/scan-action@v6
        with: {sbom: sbom.cdx.json, output-format: json, output-file: scan.json, fail-build: false}

      - uses: byteray-ai/xpsd@v1
        id: xpsd
        with:
          scan-file: scan.json
          model: gpt-5.3-codex
          min-severity: high
          max-findings: "10"       # cap the analyzed findings, highest severity first
          # min-cvss: "7.0"        # numeric floor instead of the severity band
          # is-remote: "true"      # only findings shown to be network-reachable (AV:N)
          # is-exploited: "true"   # only findings CVSS-BT lists as exploited
          # max-cycles: "30"       # tool-call budget per finding
          # max-tokens: "150000"   # token budget per finding; first ceiling hit wins
          # fail-on: reachable     # fail the step when something is reachable

      - uses: github/codeql-action/upload-sarif@v3
        if: always()
        with:
          sarif_file: ${{ steps.xpsd.outputs.sarif-file }}
          category: xpsd-reachability

Swap the scanner for whichever one you already run. OWASP Xpsd auto-detects the report format:

ProducerFormat
Grypegrype -o json, or SARIF
Trivytrivy -f json, or SARIF
OSV-Scanner--format json
Snyksnyk test --json, single or --all-projects
any SARIF producerSARIF 2.1.0

What lands in the Security tab

VerdictAlertSeverity
reachable (medium/high confidence)errorfrom CVSS
reachable (low confidence), uncertain, analysis failedwarning, needs manual reviewfrom CVSS
not reachablenote, informationallowered to low

A ruled-out finding is filed as low rather than keeping its CVSS rating, because the score describes the vulnerability and not the risk it poses to your code. A critical that nothing can reach is what buries the one that can. The real score stays in the alert, along with the reasoning and the evidence.

Each alert carries the model's rationale, the call path from entry point to vulnerable use, and evidence links into the implicated source lines. Re-runs refresh the same alerts in place, and findings that disappear from a later upload close automatically.

Cost is per finding, one agentic session each, so filtering is how you keep a run small: min-severity, min-cvss, max-findings, and only select what to look at, while is-remote keeps only findings shown to be network-reachable (CVSS AV:N) and is-exploited keeps only those the CVSS-BT dataset lists as exploited. Both need positive evidence, so a finding they cannot confirm is dropped. fail-on turns a reachable verdict into a failed step when you want the build gated.

Reachability also depends on facts that are not in the code, like what actually gets compiled or what is exposed to a network. The guidance input passes those in as ground truth for the analysis.

Docs

  • docs/arch.md: How OWSP Xpsd works.
  • docs/github-actions.md: workflow integration, every input and output, alert semantics, troubleshooting.
  • docs/usage.md: the CLI, both modes, filtering, providers, verdict schema, and flag.
  • docs/build.md: building the image and native builds.

Contributing and security

Bug reports and pull requests are welcome; see CONTRIBUTING.md. Report vulnerabilities privately as described in SECURITY.md, which also documents the threat model and known limitations.

License

Apache License 2.0, see LICENSE. Copyright 2026 ByteRay Ltd.

Download Tool