Other tools in one run: --giants
Pro. For “can Penthera run gitleaks, Semgrep, Trivy and the rest for me, and put it all in one report?”
--giants runs the free scanners you already have installed, after Penthera’s
own scan, and folds their findings into the same report, JSON and SARIF. Each
finding names the tool, its version and the rule that raised it. An area is
“covered” when Penthera’s own rules read files there or another tool ran. An
area neither reached is reported as “not covered”, never as clean.
Penthera never installs, downloads or bundles these tools, their rules or
their databases. It runs the copies on your PATH, each as its own program
under its own licence. Their findings are their own deterministic output,
labelled with their name. No model is involved.
--giants.
What runs
The exact command line of every tool is in the Markdown and JSON reports, so a
reviewer can rerun it. These are the commands for 2.1:
A version below the minimum is skipped. A newer version runs with a warning
until we have recorded its output as a test fixture, because its output format
may have changed.
What you set up yourself
Penthera does not fetch anything for these tools. Run these once:
Without these, the tool is skipped and the report says why and gives the
command.
How Penthera runs another program
A repository is hostile input, and so is anything it can put onPATH.
- Found outside your project. Each tool comes from a
PATHfolder outside the scanned repository and outside the current folder. A./node_modules/.bin/gitleaksor./bin/trivyis refused and reported. - No shell. Every tool starts with an argument list, so a file name or URL cannot inject a command.
- Stopped when stuck. Each tool gets 300 seconds (
--giants-timeout) and 50 MB of output. Past either, it is stopped and its area reads “timed out” or “failed”. - Network denied. Offline tools run under macOS
sandbox-execor Linuxbwrapwith the network denied. A tool scanning a target on your machine can reach your machine only (macOS). Without a sandbox, the report says the network was not enforced. - Minimal environment. A tool sees
PATH, a tempHOME(or your own when it needs its cache), the locale and the cache folders you set for these tools. No tokens from your environment. - Secrets masked. gitleaks runs with
--redact. TruffleHog prints secrets in full; Penthera masks them (first and last four characters) before any report, the dashboard or the evidence bundle sees them. - Unreadable output is a failure. A report that does not parse makes the area “failed”, never clean.
- Not from inside your repository. Tools run from a temp folder, so a
.checkov.yamlortrivy.yamlin the scanned repository is not loaded.
How findings are merged
Two findings are the same when their keys match:
The default is Penthera-first, until E14 decides otherwise. A tool finding
that matches one of Penthera’s is folded into it, and the report says
“found by Penthera, gitleaks”. Penthera’s confidence and remediation lead.
Everything else is merged among the tools (highest severity wins, every source
kept) and listed in its own section, “Also reported by other tools”.
Reports
The terminal report gets a Coverage by area table:PATH is listed as not installed, with the install
command, and is never started. In the JSON, an area’s status is about the
other tools only; pentheraRead holds what Penthera read there.
- JSON (
-o): agiantsobject with each tool’s status, version, command line, exit code and network mode, the areas, and the other tools’ findings. Each finding hassource(the tool),sources(tool, version, rule id, rule URL) andfoundBy. - Markdown: the same tables, and the command lines.
- SARIF (
--sarif): one run per tool, with that tool’s name and version, so GitHub code scanning shows each tool as itself. Penthera’s run stays first. - Evidence bundle (
--evidence): each tool’s raw output undergiants/, hashed in the manifest like the rest. - Dashboard (
penthera ui): a source filter on the findings list and the coverage table.
Exit code and the policy file
Other tools’ critical and high findings count toward the exit code like Penthera’s own: exit 1. A team can report them without gating, or require, limit or forbid tools, inpenthera.policy.json:
Live tools: nuclei and the ZAP baseline
They run only in URL scans, against the target you typed, a host on your machine, or a host you allowed, under the same rules as Penthera’s own probes. Any other host is refused before either tool starts.- nuclei runs only your templates folder, never its own template download
(
-duc), never the interactsh callback servers (-ni), and without theintrusive,dosandfuzztags unless the scan is--deep(which asks for confirmation first). - ZAP runs the baseline scan only: a passive spider and passive checks.
-z -silentstops its add-on update check. Its active scan is not offered.
zap-baseline.py from PATH. To use ZAP’s container, put a
small wrapper of your own on PATH, for example:
--network host for a target on your machine:
rewrite 127.0.0.1 in the target to host.docker.internal, and mount a folder
that Docker can see.
CodeQL
CodeQL runs only with--with codeql, never with plain --giants. Its terms
allow academic research and the analysis of open-source code, not automated
analysis of other code. Penthera prints a one-line notice before it runs;
using it on closed-source code is your responsibility under your own licence
(for example GitHub Advanced Security).
On JavaScript library code it is worth adding. In E14, on the sealed test
half of SecBench.js, Penthera with CodeQL found 54 of 64 injection bugs
against 45 for Penthera alone, at a mean of 4 findings per package instead
of 1. Whether those extra findings are right could not be measured there (the
dataset has no labelled negatives), so --giants keeps Penthera-first and
lists CodeQL’s findings under “Also reported by other tools”
(results).
Limits
- Each tool runs with sane defaults. It is not tuned for your project; when you need that, run it yourself with your own configuration.
- macOS and Linux only. Windows has no network sandbox here.
- Burp is out of scope: manual, proxy-driven testing by a person is a different job, and it is proprietary.
- Other tools’ findings are not checked by Penthera’s rules or by a model.
- Penthera’s own repo scan does not check dependencies for known
vulnerabilities (that is
penthera deps), so the Dependencies area relies on the tools you have.