diff --git a/docs/content/sensei/fixing_findings.md b/docs/content/sensei/fixing_findings.md index 2525f557ddb..757c1c66d03 100644 --- a/docs/content/sensei/fixing_findings.md +++ b/docs/content/sensei/fixing_findings.md @@ -27,6 +27,12 @@ Scans import findings into an engagement named after the branch. You can trigger Pick the branch to scan (it defaults to the repository's default branch) and choose **Start scan**. In DefectDojo-hosted mode, scans also run automatically when a pull request is opened. +### Reachability analysis + +For a Go repository, Sensei also runs [govulncheck](https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck) to work out which vulnerable functions your code actually calls. Each result becomes a [reachability](/triage_findings/finding_scoring/reachability/) verdict, with the call path, on the matching Findings of the repository's Asset, and moves their priority. + +In DefectDojo-hosted mode the analysis runs by itself after every successful scan of the repository's default branch, unless a reachability run for the repository is still queued or running, which covers that scan too. To run it now, open the Asset's menu and choose **Run Reachability Analysis**. The item is offered when the repository is scanned (not fix-only) and you can import scan results into the Asset, since the verdicts are written to its Findings. Either way it analyzes the default branch, because its verdicts apply to the whole Asset. A repository with no `go.mod` at its root has nothing for govulncheck to analyze, so the run finishes without adding verdicts. Runs appear in **Scan Activity** as **Reachability Scan**. + ## The Sensei column on findings Sensei adds a **Sensei** column to the findings table. Each finding shows a **Fix** button (or its current fix status), so you can remediate without leaving your triage view. diff --git a/docs/content/triage_findings/finding_scoring/reachability.md b/docs/content/triage_findings/finding_scoring/reachability.md index 569a494a9f5..53f88ddf58f 100644 --- a/docs/content/triage_findings/finding_scoring/reachability.md +++ b/docs/content/triage_findings/finding_scoring/reachability.md @@ -11,9 +11,9 @@ difference: DefectDojo Pro records whether each Finding's vulnerable code can actually be reached, shows you where that conclusion came from, and feeds it into the Finding's computed **priority**. -Reachability is a **beta** feature and is **off by default**. A superuser -enables it under **Settings > Feature Flags**. While it is off, no verdicts are -recorded, priority is unaffected, and no reachability UI appears. +Reachability is on for every DefectDojo Pro instance, and there is nothing to +enable. Verdicts are recorded as soon as a source reports them, and a Finding +that no source covers stays at **Unknown**. ## Verdicts @@ -65,6 +65,24 @@ reachability that tools you may already run are producing: Coverage is normally partial, and that is expected. Tools that do not report reachability simply leave their Findings at **Unknown**. +### Sources that report reachability + +| Source | What DefectDojo reads | Verdicts it can report | +|---|---|---| +| [govulncheck](/supported_tools/parsers/file/govulncheck/) report import (**Govulncheck Scanner V2**) | The reachability level govulncheck prints for each vulnerability: symbol, package or module | Reachable (static), Potentially reachable | +| [Snyk Issue API](/supported_tools/parsers/file/snyk_issue_api/) report import | The reachability value Snyk records on each issue | Reachable (static), Potentially reachable, Unreachable | +| [Sysdig Vulnerability Report](/supported_tools/parsers/file/sysdig_reports/) import | Sysdig's "in use" flag on each package | Reachable (runtime), Unreachable | +| Universal Parser | A report column mapped to the **Reachability** field | Any | +| [Snyk](/connectors/toolreference/snyk/) connector | The reachability Snyk records on each issue | Reachable (static), Potentially reachable, Unreachable | +| [Semgrep](/connectors/toolreference/semgrep/) connector | Semgrep Supply Chain reachability | Reachable (static), Potentially reachable, Unreachable | +| [Aqua Supply Chain](/connectors/toolreference/aqua_supply_chain/) connector | Aqua's reachable-package flag | Reachable (static) | +| [Sensei](/sensei/fixing_findings/#reachability-analysis) | govulncheck call paths for the Go code in an onboarded repository | Reachable (static), Potentially reachable | +| Reachability API | Verdicts your own tooling posts to `POST /api/v2/reachability/verdicts/` | Any | + +A verdict from **Sensei** carries the call path govulncheck found, from your code +down to the vulnerable function. It is shown on the Finding under **Reachability +Call Path**. + ### Setting reachability by hand When no scanner or connector reports reachability, you can record a verdict