Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/content/sensei/fixing_findings.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
24 changes: 21 additions & 3 deletions docs/content/triage_findings/finding_scoring/reachability.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down
Loading