Most static matches are false positives caused by Markdown formatting, defensive examples, and normal Grype configuration. Confirmed risks include unpinned pipe-to-shell installers, Docker socket exposure, and unquoted Tekton parameters that permit command injection. Semantic review also found bypassable security gates, broad ignore rules, and mutable CI dependencies.
The template pipes an unpinned remote installer directly into bash. A compromised branch, repository, or connection endpoint would gain code execution in the CI runner.
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/
The CircleCI example streams an unpinned main-branch installer into a shell. Upstream compromise or an unexpected change would execute with runner permissions.
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/
The Azure Pipelines example streams an unpinned main-branch installer into a shell. Upstream compromise or an unexpected change would execute with runner permissions.
Security gates can pass without enforcing findings
Node audit output is never evaluated, and the IaC stage converts scanner failures into warnings. Vulnerable builds can pass despite the template presenting these checks as gates.
The Node command is followed by no result check, while the IaC block uses || true and leaves exit 1 commented out.
CI examples execute mutable action and image references
The templates use a GitHub Action from master and Grype container images tagged latest. Future upstream changes can execute without repository review or digest verification.
The files explicitly reference aquasecurity/trivy-action@master, set GRYPE_VERSION to latest, and run anchore/grype:latest.
Example configuration suppresses broad vulnerability classes
The bundled Grype configuration ignores every wont-fix vulnerability and all matches for a named package. Copying it can hide real findings without expiry or target-specific justification.
The active ignore rules include fix-state: wont-fix and a package-only pytest match, both broader than the example-specific CVE suppressions.
Capability review items (6)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
Tekton substitutes the user-supplied IMAGE parameter directly into an unquoted shell command. Shell metacharacters in the parameter can inject commands into the task.
Tekton substitutes the severity parameter directly into an unquoted shell command. A crafted parameter value can alter arguments or inject additional shell commands.
grype $(params.IMAGE) -o table | tee /workspace/grype-report.txt
The user-supplied IMAGE parameter is expanded unquoted in a second shell pipeline. This repeats the command-injection path in the report-generation command.
This URL is used to download an installer that is immediately executed. The mutable upstream script creates a supply-chain exposure even though the domain is legitimate.
Most static findings are false positives from Markdown examples, reference material, and CI syntax. Confirmed risks are limited to the bundled CI templates. They include pipe-to-shell installers, Docker socket mounting, token exposure, unquoted Tekton parameters, and an unpinned action.
The template pipes a remote install script directly into bash. If the upstream script or transport is compromised, the CI runner executes attacker-controlled code.
The Jenkins example mounts the host Docker socket into the scanner container. A compromised job or image could use that socket for host-level container control.
The CI template uses aquasecurity/trivy-action@master. A mutable branch reference can change without review and execute different third-party code in the pipeline.
The file directly references a third-party GitHub Action by a mutable branch name. This is a clear supply-chain hardening issue, although not evidence of malicious intent.
Capability review items (7)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
The workflow passes GITHUB_TOKEN to a third-party action. This is a legitimate integration, but it expands the trust boundary for repository-scoped credentials.
Tekton substitutes the IMAGE parameter into a shell script without quoting or validation. If that parameter is user-controlled, shell metacharacters could alter the command.
Tekton substitutes the severity threshold into a shell command without quoting or validation. A malicious parameter value could change scanner arguments or command flow.
grype $(params.IMAGE) -o table | tee /workspace/grype-report.txt
Tekton substitutes the IMAGE parameter into a shell pipeline without quoting or validation. If the parameter is not trusted, the generated script can be unsafe.
Most static findings are false positives caused by Markdown examples, reference material, or CI variable syntax. Real risks remain in bundled CI templates: remote installer scripts are piped into shells, a Jenkins example mounts the Docker socket, one token is exposed to action code, and Tekton parameters are used unquoted in shell commands.
The CI template downloads a remote install script from GitHub and pipes it directly to bash. This executes unaudited network content in the build environment.
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/
The Azure Pipelines example pipes the Grype installer from GitHub directly into sh. This is a supply-chain execution risk in a privileged pipeline context.
The Jenkins example mounts /var/run/docker.sock into a scanner container. Docker socket access can allow container breakout or host-level control from the CI job.
CI examples use mutable tool references such as aquasecurity/trivy-action@master and latest-derived Grype image tags. Security pipelines should use immutable action SHAs or image digests to avoid unreviewed supply-chain changes.
The cited CI examples explicitly use @master and latest-derived image tags. This is a supply-chain hardening issue not fully represented by the static pattern names.
Capability review items (7)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
This URL is not only documentation; it downloads an installer during CI and is paired with direct shell execution. The hardcoded remote dependency can change outside repository review.
The workflow passes GITHUB_TOKEN to a third-party action. This is a legitimate pattern, but it exposes a repository token to action code and should be pinned and least-privileged.
The Tekton shell script interpolates pipeline parameters into command arguments without quoting or validation on line 369. A malicious image or severity parameter could alter the shell command.
The Tekton shell script interpolates pipeline parameters into command arguments without quoting or validation on line 370. A malicious image or severity parameter could alter the shell command.
grype $(params.IMAGE) -o table | tee /workspace/grype-report.txt
The Tekton shell script interpolates pipeline parameters into command arguments without quoting or validation on line 373. A malicious image or severity parameter could alter the shell command.
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/
This hardcoded GitHub URL downloads a CI installer that is immediately executed. It creates an external supply-chain dependency during builds.
Static false positives ignored (2)
These static matches were dismissed by semantic review or matched schema-only tokens, so they are shown for transparency but do not drive the quality score.
Static analysis found many command, network, filesystem, environment, and script patterns, but most are documentation examples for legitimate vulnerability scanning workflows. The confirmed risks are operational: some CI templates install tools with curl piped to a shell and one Jenkins example mounts the Docker socket, so publication is acceptable only with clear warnings and review guidance.
The Jenkins example mounts /var/run/docker.sock into the Grype container. This is sometimes required for image scanning, but it gives the scan container broad control over the Docker daemon if the container or pipeline is compromised.
The Docker socket mount is explicitly present in the Jenkins CI example. It is a legitimate operational pattern, but it materially expands pipeline privileges.
Capability review items (3)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
The CircleCI and Azure examples install Grype by downloading a script from GitHub and piping it directly to a shell. This is a real supply-chain risk if users copy the templates without pinning, checksum verification, or controlled package sources.
The pattern is present in executable CI snippets and would execute remote code during builds. Confidence is high, but the context is an example template for a security scanner rather than hidden malicious behavior.
Several findings are false positives from educational examples that demonstrate vulnerable patterns, CVSS concepts, CISA KEV prioritization, or remediation guidance. These examples are not executed by the skill itself.
The surrounding files are clearly templates or reference documents, and the flagged lines are used to teach detection and remediation. They should be documented, but they do not show active malicious behavior.
The GitHub token, environment variable, .grype.yaml, cache directory, and report file reads are expected for CI security reporting and Grype configuration. No evidence found that the skill exfiltrates secrets or reads unrelated user files.
The evidence appears in CI configuration and local Grype configuration examples. It remains low risk because users may copy the templates into privileged environments.
Documentation-only skill containing markdown files and YAML configuration templates for the open-source Grype vulnerability scanner. All 332 static findings are false positives - the scanner flagged shell command examples (177), URL references (45), and environment variable patterns (27) in documentation as security issues. No executable code exists. This skill provides documentation and workflows for container vulnerability scanning but performs no actual scanning, network access, or file system operations beyond reading its own documentation files.
Documentation-only skill containing markdown files and YAML configuration templates for the open-source Grype vulnerability scanner. All 332 static findings are false positives - the scanner flagged shell command examples (177), URL references (45), and environment variable patterns (27) in documentation as security issues. No executable code exists. This skill provides documentation and workflows for container vulnerability scanning but performs no actual scanning, network access, or file system operations beyond reading its own documentation files.
Documentation-only skill with no executable code. Contains only markdown documentation and YAML configuration templates for the open-source Grype vulnerability scanner. No scripts, network calls, or file system access beyond its own documentation files.
10
Files scanned
3,159
Lines analyzed
0
Review items
0
False positives ignored
No confirmed security findings were recorded for this completed audit.
Documentation-only skill with no executable code. Contains only markdown documentation and YAML configuration templates for the open-source Grype vulnerability scanner. No scripts, network calls, or file system access beyond its own documentation files.
10
Files scanned
3,159
Lines analyzed
0
Review items
0
False positives ignored
No confirmed security findings were recorded for this completed audit.
Documentation-only skill with no executable code. Contains only markdown documentation and YAML configuration templates for the open-source Grype vulnerability scanner. No scripts, network calls, or file system access beyond its own documentation files.
10
Files scanned
3,159
Lines analyzed
0
Review items
0
False positives ignored
No confirmed security findings were recorded for this completed audit.