mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-10 23:00:48 -08:00
Compare commits
87 Commits
refactor/c
...
release/v0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
69093d2c23 | ||
|
|
7e9a54cd6b | ||
|
|
78e3304bbe | ||
|
|
22f040f947 | ||
|
|
c2dde33c3f | ||
|
|
104bbc18ea | ||
|
|
c7b8cc392e | ||
|
|
906b037cff | ||
|
|
b15d9a60e6 | ||
|
|
4f1ab23869 | ||
|
|
5bae2626e0 | ||
|
|
4a7ebb70b4 | ||
|
|
3b2a3976ac | ||
|
|
1d420e669f | ||
|
|
5a0bf9ed31 | ||
|
|
7ca656d54b | ||
|
|
8939451174 | ||
|
|
60fef1b615 | ||
|
|
aaecc29e90 | ||
|
|
6c7cb7ad2d | ||
|
|
93e6680b1c | ||
|
|
07ef63b483 | ||
|
|
ee522300b7 | ||
|
|
cae79d637d | ||
|
|
bcf246ca85 | ||
|
|
0229eb70ab | ||
|
|
39f9ed128b | ||
|
|
fe127715e5 | ||
|
|
1dcf81666f | ||
|
|
c321fdfcdd | ||
|
|
69a5fa18ca | ||
|
|
be8c7b796d | ||
|
|
6aff7b0c4f | ||
|
|
35e88890c3 | ||
|
|
239f65a45c | ||
|
|
38f17c945e | ||
|
|
0b0e4061ef | ||
|
|
e97af9806a | ||
|
|
26437be083 | ||
|
|
9256804df8 | ||
|
|
6ebde88dbc | ||
|
|
a516775da6 | ||
|
|
c9ba460a9b | ||
|
|
2a21fd8cac | ||
|
|
3b1426a676 | ||
|
|
679153950c | ||
|
|
dd6a6e50a4 | ||
|
|
3bf4f44931 | ||
|
|
2ab8ae9291 | ||
|
|
8995838e8d | ||
|
|
a19e0aa1ba | ||
|
|
fa1077bbf5 | ||
|
|
e322f212a5 | ||
|
|
883c63bf29 | ||
|
|
3ab459e3b6 | ||
|
|
296eb3c814 | ||
|
|
5706603146 | ||
|
|
6e23ca96d1 | ||
|
|
6e6af010e8 | ||
|
|
bf4cd4f2d2 | ||
|
|
6562082e28 | ||
|
|
573f35c810 | ||
|
|
43350dd9b4 | ||
|
|
7a58ccbc7f | ||
|
|
471dcc3406 | ||
|
|
dd62d4e7d3 | ||
|
|
e10929a669 | ||
|
|
ee4f7dc6b4 | ||
|
|
3ce7d59bb1 | ||
|
|
312649c988 | ||
|
|
427a18ef06 | ||
|
|
a95cab0eab | ||
|
|
7abf5f0199 | ||
|
|
9fbfb04f8e | ||
|
|
3032defa8c | ||
|
|
8c9a92b28e | ||
|
|
0d3efa5dc1 | ||
|
|
6c6beeafbe | ||
|
|
2849abb24a | ||
|
|
4141013be9 | ||
|
|
b7cbbdc0ce | ||
|
|
93efe0789e | ||
|
|
8e25ca02c8 | ||
|
|
efd177b300 | ||
|
|
b7dfd64987 | ||
|
|
195880be60 | ||
|
|
9a5383e993 |
11
.github/ISSUE_TEMPLATE/maintainer.md
vendored
Normal file
11
.github/ISSUE_TEMPLATE/maintainer.md
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
name: Maintainer
|
||||
about: Create an issue by maintainers
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Are you a maintainer of the Trivy project?
|
||||
If not, please open [a discussion](https://github.com/aquasecurity/trivy/discussions); if you are, please review [the guideline](https://trivy.dev/latest/community/contribute/discussion/).
|
||||
33
.github/workflows/publish-chart.yaml
vendored
33
.github/workflows/publish-chart.yaml
vendored
@@ -13,9 +13,6 @@ on:
|
||||
- main
|
||||
paths:
|
||||
- 'helm/trivy/**'
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
env:
|
||||
HELM_REP: helm-charts
|
||||
GH_OWNER: aquasecurity
|
||||
@@ -25,7 +22,6 @@ env:
|
||||
jobs:
|
||||
# `test-chart` job starts if a PR with Helm Chart is created, merged etc.
|
||||
test-chart:
|
||||
if: github.event_name != 'push'
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -56,35 +52,6 @@ jobs:
|
||||
sed -i -e '136s,false,'true',g' ./helm/trivy/values.yaml
|
||||
ct lint-and-install --validate-maintainers=false --charts helm/trivy
|
||||
|
||||
# `update-chart-version` job starts if a new tag is pushed
|
||||
update-chart-version:
|
||||
if: github.event_name == 'push'
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Git user
|
||||
run: |
|
||||
git config --global user.email "actions@github.com"
|
||||
git config --global user.name "GitHub Actions"
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version-file: go.mod
|
||||
|
||||
- name: Install Go tools
|
||||
run: go install tool # GOBIN is added to the PATH by the setup-go action
|
||||
|
||||
- name: Create a PR with Trivy version
|
||||
run: mage helm:updateVersion
|
||||
env:
|
||||
# Use ORG_REPO_TOKEN instead of GITHUB_TOKEN
|
||||
# This allows the created PR to trigger tests and other workflows
|
||||
GITHUB_TOKEN: ${{ secrets.ORG_REPO_TOKEN }}
|
||||
|
||||
# `publish-chart` job starts if a PR with a new Helm Chart is merged or manually
|
||||
publish-chart:
|
||||
|
||||
30
.github/workflows/release.yaml
vendored
30
.github/workflows/release.yaml
vendored
@@ -55,3 +55,33 @@ jobs:
|
||||
|
||||
- name: Create deb repository
|
||||
run: ci/deploy-deb.sh
|
||||
|
||||
# `update-chart-version` creates a new PR for updating the helm chart
|
||||
update-chart-version:
|
||||
needs: deploy-packages
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Git user
|
||||
run: |
|
||||
git config --global user.email "actions@github.com"
|
||||
git config --global user.name "GitHub Actions"
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version-file: go.mod
|
||||
|
||||
- name: Install Go tools
|
||||
run: go install tool # GOBIN is added to the PATH by the setup-go action
|
||||
|
||||
- name: Create a PR with Trivy version
|
||||
run: mage helm:updateVersion
|
||||
env:
|
||||
# Use ORG_REPO_TOKEN instead of GITHUB_TOKEN
|
||||
# This allows the created PR to trigger tests and other workflows
|
||||
GITHUB_TOKEN: ${{ secrets.ORG_REPO_TOKEN }}
|
||||
|
||||
6
.github/workflows/semantic-pr.yaml
vendored
6
.github/workflows/semantic-pr.yaml
vendored
@@ -63,8 +63,10 @@ jobs:
|
||||
amazon
|
||||
suse
|
||||
photon
|
||||
echo
|
||||
distroless
|
||||
windows
|
||||
minimos
|
||||
|
||||
# Languages
|
||||
ruby
|
||||
@@ -121,7 +123,7 @@ jobs:
|
||||
# Convert env vars to regex alternatives, excluding comments and empty lines
|
||||
TYPES_REGEX=$(echo "$VALID_TYPES" | grep -v '^$' | paste -sd '|')
|
||||
SCOPES_REGEX=$(echo "$VALID_SCOPES" | grep -v '^$' | grep -v '^#' | paste -sd '|')
|
||||
|
||||
|
||||
# Basic format check (should match: type(scope): description or type: description)
|
||||
FORMAT_REGEX="^[a-z]+(\([a-z0-9+]+\))?!?: .+$"
|
||||
if ! echo "$PR_TITLE" | grep -qE "$FORMAT_REGEX"; then
|
||||
@@ -158,6 +160,6 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
echo "PR title validation passed ✅"
|
||||
echo "Current title: $PR_TITLE"
|
||||
|
||||
5
.github/workflows/spdx-cron.yaml
vendored
5
.github/workflows/spdx-cron.yaml
vendored
@@ -29,10 +29,7 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Microsoft Teams Notification
|
||||
## Until the PR with the fix for the AdaptivCard version is merged yet
|
||||
## https://github.com/Skitionek/notify-microsoft-teams/pull/96
|
||||
## Use the aquasecurity fork
|
||||
uses: aquasecurity/notify-microsoft-teams@master
|
||||
uses: Skitionek/notify-microsoft-teams@e7a2493ac87dad8aa7a62f079f295e54ff511d88
|
||||
if: failure()
|
||||
with:
|
||||
webhook_url: ${{ secrets.TRIVY_MSTEAMS_WEBHOOK }}
|
||||
|
||||
6
.github/workflows/test.yaml
vendored
6
.github/workflows/test.yaml
vendored
@@ -38,10 +38,10 @@ jobs:
|
||||
|
||||
- name: Lint
|
||||
id: lint
|
||||
uses: golangci/golangci-lint-action@v6.5.0
|
||||
uses: golangci/golangci-lint-action@v7.0.0
|
||||
with:
|
||||
version: v1.64
|
||||
args: --verbose --out-format=line-number
|
||||
version: v2.1
|
||||
args: --verbose
|
||||
if: matrix.operating-system == 'ubuntu-latest'
|
||||
|
||||
- name: Check if linter failed
|
||||
|
||||
329
.golangci.yaml
329
.golangci.yaml
@@ -1,112 +1,145 @@
|
||||
linters-settings:
|
||||
depguard:
|
||||
rules:
|
||||
main:
|
||||
list-mode: lax
|
||||
deny:
|
||||
# Cannot use gomodguard, which examines go.mod, as "golang.org/x/exp/slices" is not a module and doesn't appear in go.mod.
|
||||
- pkg: "golang.org/x/exp/slices"
|
||||
desc: "Use 'slices' instead"
|
||||
- pkg: "golang.org/x/exp/maps"
|
||||
desc: "Use 'maps' or 'github.com/samber/lo' instead"
|
||||
dupl:
|
||||
threshold: 100
|
||||
errcheck:
|
||||
check-type-assertions: true
|
||||
check-blank: true
|
||||
gci:
|
||||
sections:
|
||||
- standard
|
||||
- default
|
||||
- prefix(github.com/aquasecurity/)
|
||||
- blank
|
||||
- dot
|
||||
goconst:
|
||||
min-len: 3
|
||||
min-occurrences: 3
|
||||
gocritic:
|
||||
disabled-checks:
|
||||
- appendAssign
|
||||
- unnamedResult
|
||||
- whyNoLint
|
||||
- indexAlloc
|
||||
- octalLiteral
|
||||
- hugeParam
|
||||
- rangeValCopy
|
||||
- regexpSimplify
|
||||
- sloppyReassign
|
||||
- commentedOutCode
|
||||
enabled-tags:
|
||||
- diagnostic
|
||||
- style
|
||||
- performance
|
||||
- experimental
|
||||
- opinionated
|
||||
settings:
|
||||
ruleguard:
|
||||
failOn: all
|
||||
rules: '${configDir}/misc/lint/rules.go'
|
||||
gocyclo:
|
||||
min-complexity: 20
|
||||
gofmt:
|
||||
simplify: false
|
||||
rewrite-rules:
|
||||
- pattern: 'interface{}'
|
||||
replacement: 'any'
|
||||
gomodguard:
|
||||
blocked:
|
||||
modules:
|
||||
- github.com/hashicorp/go-version:
|
||||
recommendations:
|
||||
- github.com/aquasecurity/go-version
|
||||
reason: "`aquasecurity/go-version` is designed for our use-cases"
|
||||
- github.com/Masterminds/semver:
|
||||
recommendations:
|
||||
- github.com/aquasecurity/go-version
|
||||
reason: "`aquasecurity/go-version` is designed for our use-cases"
|
||||
gosec:
|
||||
excludes:
|
||||
- G101
|
||||
- G114
|
||||
- G115
|
||||
- G204
|
||||
- G304
|
||||
- G402
|
||||
govet:
|
||||
disable:
|
||||
- shadow
|
||||
misspell:
|
||||
locale: US
|
||||
ignore-words:
|
||||
- behaviour
|
||||
- licence
|
||||
- optimise
|
||||
- simmilar
|
||||
perfsprint:
|
||||
# Optimizes even if it requires an int or uint type cast.
|
||||
int-conversion: true
|
||||
# Optimizes into `err.Error()` even if it is only equivalent for non-nil errors.
|
||||
err-error: true
|
||||
# Optimizes `fmt.Errorf`.
|
||||
errorf: true
|
||||
# Optimizes `fmt.Sprintf` with only one argument.
|
||||
sprintf1: false
|
||||
# Optimizes into strings concatenation.
|
||||
strconcat: false
|
||||
revive:
|
||||
ignore-generated-header: true
|
||||
testifylint:
|
||||
enable-all: true
|
||||
issues:
|
||||
max-issues-per-linter: 0
|
||||
max-same-issues: 0
|
||||
|
||||
linters:
|
||||
disable-all: true
|
||||
settings:
|
||||
depguard:
|
||||
rules:
|
||||
main:
|
||||
list-mode: lax
|
||||
deny:
|
||||
# Cannot use gomodguard, which examines go.mod, as "golang.org/x/exp/slices" is not a module and doesn't appear in go.mod.
|
||||
- pkg: "golang.org/x/exp/slices"
|
||||
desc: "Use 'slices' instead"
|
||||
- pkg: "golang.org/x/exp/maps"
|
||||
desc: "Use 'maps' or 'github.com/samber/lo' instead"
|
||||
dupl:
|
||||
threshold: 100
|
||||
errcheck:
|
||||
check-type-assertions: true
|
||||
check-blank: true
|
||||
goconst:
|
||||
min-len: 3
|
||||
min-occurrences: 3
|
||||
gocritic:
|
||||
disabled-checks:
|
||||
- appendAssign
|
||||
- commentedOutCode
|
||||
- hugeParam
|
||||
- importShadow # FIXME
|
||||
- indexAlloc
|
||||
- rangeValCopy
|
||||
- regexpSimplify
|
||||
- sloppyReassign
|
||||
- unnamedResult
|
||||
- whyNoLint
|
||||
enabled-tags:
|
||||
- diagnostic
|
||||
- style
|
||||
- performance
|
||||
- experimental
|
||||
- opinionated
|
||||
settings:
|
||||
ruleguard:
|
||||
failOn: all
|
||||
rules: '${base-path}/misc/lint/rules.go'
|
||||
gocyclo:
|
||||
min-complexity: 20
|
||||
gomodguard:
|
||||
blocked:
|
||||
modules:
|
||||
- github.com/hashicorp/go-version:
|
||||
recommendations:
|
||||
- github.com/aquasecurity/go-version
|
||||
reason: "`aquasecurity/go-version` is designed for our use-cases"
|
||||
- github.com/Masterminds/semver:
|
||||
recommendations:
|
||||
- github.com/aquasecurity/go-version
|
||||
reason: "`aquasecurity/go-version` is designed for our use-cases"
|
||||
gosec:
|
||||
excludes:
|
||||
- G101
|
||||
- G114
|
||||
- G115
|
||||
- G204
|
||||
- G304
|
||||
- G402
|
||||
govet:
|
||||
disable:
|
||||
- shadow
|
||||
misspell:
|
||||
locale: US
|
||||
ignore-rules:
|
||||
- behaviour
|
||||
- licence
|
||||
- optimise
|
||||
- simmilar
|
||||
perfsprint:
|
||||
# Optimizes even if it requires an int or uint type cast.
|
||||
int-conversion: true
|
||||
# Optimizes into `err.Error()` even if it is only equivalent for non-nil errors.
|
||||
err-error: true
|
||||
# Optimizes `fmt.Errorf`.
|
||||
errorf: true
|
||||
# Optimizes `fmt.Sprintf` with only one argument.
|
||||
sprintf1: false
|
||||
# Optimizes into strings concatenation.
|
||||
strconcat: false
|
||||
revive:
|
||||
max-open-files: 2048
|
||||
# https://github.com/mgechev/revive/blob/HEAD/RULES_DESCRIPTIONS.md
|
||||
rules:
|
||||
- name: bool-literal-in-expr
|
||||
- name: context-as-argument
|
||||
arguments:
|
||||
- allowTypesBefore: "*testing.T"
|
||||
- name: duplicated-imports
|
||||
- name: early-return
|
||||
arguments:
|
||||
- preserve-scope
|
||||
- name: if-return
|
||||
- name: increment-decrement
|
||||
- name: indent-error-flow
|
||||
arguments:
|
||||
- preserve-scope
|
||||
- name: range
|
||||
- name: range-val-address
|
||||
- name: superfluous-else
|
||||
arguments:
|
||||
- preserve-scope
|
||||
- name: time-equal
|
||||
- name: unnecessary-stmt
|
||||
- name: unused-parameter
|
||||
- name: use-any
|
||||
|
||||
staticcheck:
|
||||
checks:
|
||||
- all
|
||||
- -QF1008 # Omit embedded fields from selector expression
|
||||
- -S1007 # Simplify regular expression by using raw string literal
|
||||
- -S1011 # Use a single append to concatenate two slices
|
||||
- -S1023 # Omit redundant control flow
|
||||
- -SA1019 # Using a deprecated function, variable, constant or field
|
||||
- -SA1024 # A string cutset contains duplicate characters
|
||||
- -SA4004 # The loop exits unconditionally after one iteration
|
||||
- -SA4023 # Impossible comparison of interface value with untyped nil
|
||||
- -SA4032 # Comparing runtime.GOOS or runtime.GOARCH against impossible value
|
||||
- -SA5011 # Possible nil pointer dereference
|
||||
- -ST1003 # Poorly chosen identifier
|
||||
- -ST1012 # Poorly chosen name for error variable
|
||||
|
||||
testifylint:
|
||||
enable-all: true
|
||||
|
||||
default: none
|
||||
|
||||
enable:
|
||||
- bodyclose
|
||||
- depguard
|
||||
- gci
|
||||
- goconst
|
||||
- gocritic
|
||||
- gocyclo
|
||||
- gofmt
|
||||
- gomodguard
|
||||
- gosec
|
||||
- govet
|
||||
@@ -114,46 +147,70 @@ linters:
|
||||
- misspell
|
||||
- perfsprint
|
||||
- revive
|
||||
- usetesting
|
||||
- staticcheck
|
||||
- testifylint
|
||||
- typecheck
|
||||
- unconvert
|
||||
- unused
|
||||
- usestdlibvars
|
||||
- usetesting
|
||||
|
||||
exclusions:
|
||||
generated: lax
|
||||
paths:
|
||||
- "pkg/iac/scanners/terraform/parser/funcs" # copies of Terraform functions
|
||||
rules:
|
||||
- path: ".*_test.go$"
|
||||
linters:
|
||||
- goconst
|
||||
- gosec
|
||||
- unused
|
||||
- path: ".*_test.go$"
|
||||
linters:
|
||||
- govet
|
||||
text: "copylocks:"
|
||||
- path: ".*_test.go$"
|
||||
linters:
|
||||
- gocritic
|
||||
text: "commentFormatting:"
|
||||
- path: ".*_test.go$"
|
||||
linters:
|
||||
- gocritic
|
||||
text: "exitAfterDefer:"
|
||||
- path: ".*_test.go$"
|
||||
linters:
|
||||
- gocritic
|
||||
text: "importShadow:"
|
||||
- linters:
|
||||
- goconst
|
||||
text: "string `each` has 3 occurrences, make it a constant" # FIXME
|
||||
presets:
|
||||
- comments
|
||||
- common-false-positives
|
||||
- legacy
|
||||
- std-error-handling
|
||||
warn-unused: true
|
||||
|
||||
run:
|
||||
go: '1.24'
|
||||
timeout: 30m
|
||||
|
||||
issues:
|
||||
exclude-files:
|
||||
- "examples/*"
|
||||
exclude-dirs:
|
||||
- "pkg/iac/scanners/terraform/parser/funcs" # copies of Terraform functions
|
||||
exclude-rules:
|
||||
- path: ".*_test.go$"
|
||||
linters:
|
||||
- goconst
|
||||
- gosec
|
||||
- unused
|
||||
- path: ".*_test.go$"
|
||||
linters:
|
||||
- govet
|
||||
text: "copylocks:"
|
||||
- path: ".*_test.go$"
|
||||
linters:
|
||||
- gocritic
|
||||
text: "commentFormatting:"
|
||||
- path: ".*_test.go$"
|
||||
linters:
|
||||
- gocritic
|
||||
text: "exitAfterDefer:"
|
||||
- path: ".*_test.go$"
|
||||
linters:
|
||||
- gocritic
|
||||
text: "importShadow:"
|
||||
- linters:
|
||||
- perfsprint
|
||||
text: "fmt.Sprint"
|
||||
exclude-use-default: false
|
||||
max-same-issues: 0
|
||||
formatters:
|
||||
enable:
|
||||
- gci
|
||||
- gofmt
|
||||
|
||||
exclusions:
|
||||
generated: lax
|
||||
|
||||
settings:
|
||||
gci:
|
||||
sections:
|
||||
- standard
|
||||
- default
|
||||
- prefix(github.com/aquasecurity/)
|
||||
- blank
|
||||
- dot
|
||||
gofmt:
|
||||
simplify: false
|
||||
|
||||
version: "2"
|
||||
|
||||
@@ -1 +1 @@
|
||||
{".":"0.61.0"}
|
||||
{".":"0.63.0"}
|
||||
|
||||
84
CHANGELOG.md
84
CHANGELOG.md
@@ -1,5 +1,89 @@
|
||||
# Changelog
|
||||
|
||||
## [0.63.0](https://github.com/aquasecurity/trivy/compare/v0.62.0...v0.63.0) (2025-05-29)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add Bottlerocket OS package analyzer ([#8653](https://github.com/aquasecurity/trivy/issues/8653)) ([07ef63b](https://github.com/aquasecurity/trivy/commit/07ef63b4830f9f3d791a07433287a99118d7590a))
|
||||
* add JSONC support for comments and trailing commas ([#8862](https://github.com/aquasecurity/trivy/issues/8862)) ([0b0e406](https://github.com/aquasecurity/trivy/commit/0b0e4061ef955efc0f94280d2d390f11ff6e2409))
|
||||
* **alpine:** add maintainer field extraction for APK packages ([#8930](https://github.com/aquasecurity/trivy/issues/8930)) ([104bbc1](https://github.com/aquasecurity/trivy/commit/104bbc18ea85caec17125296dc4fe2dea9c49826))
|
||||
* **cli:** Add available version checking ([#8553](https://github.com/aquasecurity/trivy/issues/8553)) ([5a0bf9e](https://github.com/aquasecurity/trivy/commit/5a0bf9ed31ad34248895e69231da602935e66785))
|
||||
* **echo:** Add Echo Support ([#8833](https://github.com/aquasecurity/trivy/issues/8833)) ([c7b8cc3](https://github.com/aquasecurity/trivy/commit/c7b8cc392eb28eb63e10561cf1ff7991e5e3c548))
|
||||
* **go:** support license scanning in both GOPATH and vendor ([#8843](https://github.com/aquasecurity/trivy/issues/8843)) ([26437be](https://github.com/aquasecurity/trivy/commit/26437be083960d17bee8b1b37b8a6780eff07981))
|
||||
* **k8s:** get components from namespaced resources ([#8918](https://github.com/aquasecurity/trivy/issues/8918)) ([4f1ab23](https://github.com/aquasecurity/trivy/commit/4f1ab238693919772a65450de9fb9fb2f873c0d6))
|
||||
* **license:** improve work text licenses with custom classification ([#8888](https://github.com/aquasecurity/trivy/issues/8888)) ([ee52230](https://github.com/aquasecurity/trivy/commit/ee522300b73a2afc72829fc2fa7ff419712fc89a))
|
||||
* **license:** improve work with custom classification of licenses from config file ([#8861](https://github.com/aquasecurity/trivy/issues/8861)) ([c321fdf](https://github.com/aquasecurity/trivy/commit/c321fdfcdd58f34d076fc730e2b63fdd13e426a9))
|
||||
* **license:** scan vendor directory for license for go.mod files ([#8689](https://github.com/aquasecurity/trivy/issues/8689)) ([dd6a6e5](https://github.com/aquasecurity/trivy/commit/dd6a6e50a44b7b543fd9dba634da599a76650acb))
|
||||
* **license:** Support compound licenses (licenses using SPDX operators) ([#8816](https://github.com/aquasecurity/trivy/issues/8816)) ([39f9ed1](https://github.com/aquasecurity/trivy/commit/39f9ed128b2c0fb599ad9092a3cf5675106bffdc))
|
||||
* **minimos:** Add support for MinimOS ([#8792](https://github.com/aquasecurity/trivy/issues/8792)) ([c2dde33](https://github.com/aquasecurity/trivy/commit/c2dde33c3f19d499258a7089d7658a9f90722acf))
|
||||
* **misconf:** add misconfiguration location to junit template ([#8793](https://github.com/aquasecurity/trivy/issues/8793)) ([a516775](https://github.com/aquasecurity/trivy/commit/a516775da6fda92a55a62418a081561127a1d5ca))
|
||||
* **misconf:** Add support for `Minimum Trivy Version` ([#8880](https://github.com/aquasecurity/trivy/issues/8880)) ([3b2a397](https://github.com/aquasecurity/trivy/commit/3b2a3976ac7e7785828655903b132e84ebd9d727))
|
||||
* **misconf:** export raw Terraform data to Rego ([#8741](https://github.com/aquasecurity/trivy/issues/8741)) ([aaecc29](https://github.com/aquasecurity/trivy/commit/aaecc29e909db4d5dac03caa0daf223035bfb877))
|
||||
* **nodejs:** add a bun.lock analyzer ([#8897](https://github.com/aquasecurity/trivy/issues/8897)) ([7ca656d](https://github.com/aquasecurity/trivy/commit/7ca656d54b99346253fc6ac6422eecaca169514e))
|
||||
* **nodejs:** add bun.lock parser ([#8851](https://github.com/aquasecurity/trivy/issues/8851)) ([1dcf816](https://github.com/aquasecurity/trivy/commit/1dcf81666f1c814600702b9ab603b4070da0b940))
|
||||
* terraform parser option to set current working directory ([#8909](https://github.com/aquasecurity/trivy/issues/8909)) ([8939451](https://github.com/aquasecurity/trivy/commit/893945117464bf6e090a55e3822f8299825f26d4))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* check post-analyzers for StaticPaths ([#8904](https://github.com/aquasecurity/trivy/issues/8904)) ([93e6680](https://github.com/aquasecurity/trivy/commit/93e6680b1c6bbb590157f521c667c0f611775143))
|
||||
* **cli:** disable `--skip-dir` and `--skip-files` flags for `sbom` command ([#8886](https://github.com/aquasecurity/trivy/issues/8886)) ([69a5fa1](https://github.com/aquasecurity/trivy/commit/69a5fa18ca86ff7e5206abacf98732d46c000c7a))
|
||||
* **cli:** don't use allow values for `--compliance` flag ([#8881](https://github.com/aquasecurity/trivy/issues/8881)) ([35e8889](https://github.com/aquasecurity/trivy/commit/35e88890c3c201b3eb11f95376172e57bf44df4b))
|
||||
* filter all files when processing files installed from package managers ([#8842](https://github.com/aquasecurity/trivy/issues/8842)) ([6ebde88](https://github.com/aquasecurity/trivy/commit/6ebde88dbcaf22f25932bad4844b3c9eaca90560))
|
||||
* **java:** exclude dev dependencies in gradle lockfile ([#8803](https://github.com/aquasecurity/trivy/issues/8803)) ([8995838](https://github.com/aquasecurity/trivy/commit/8995838e8d184ee9178d5b52d2d3fa9b4e403015))
|
||||
* julia parser panicing ([#8883](https://github.com/aquasecurity/trivy/issues/8883)) ([be8c7b7](https://github.com/aquasecurity/trivy/commit/be8c7b796dbe36d8dc3889e0bdea23336de9a1ab))
|
||||
* **julia:** add `Relationship` field support ([#8939](https://github.com/aquasecurity/trivy/issues/8939)) ([22f040f](https://github.com/aquasecurity/trivy/commit/22f040f94790060132c7b0a635f44c35d5a35fb6))
|
||||
* **k8s:** use in-memory cache backend during misconfig scanning ([#8873](https://github.com/aquasecurity/trivy/issues/8873)) ([fe12771](https://github.com/aquasecurity/trivy/commit/fe127715e505d753e0d878d52c5f280cdc326b76))
|
||||
* **misconf:** check if for-each is known when expanding dyn block ([#8808](https://github.com/aquasecurity/trivy/issues/8808)) ([5706603](https://github.com/aquasecurity/trivy/commit/570660314698472ab831a7e0d55044e0b1e9c6c0))
|
||||
* **misconf:** use argument value in WithIncludeDeprecatedChecks ([#8942](https://github.com/aquasecurity/trivy/issues/8942)) ([7e9a54c](https://github.com/aquasecurity/trivy/commit/7e9a54cd6bf4bc15e485c6233d140b389e432fe5))
|
||||
* more revive rules ([#8814](https://github.com/aquasecurity/trivy/issues/8814)) ([3ab459e](https://github.com/aquasecurity/trivy/commit/3ab459e3b674f319bf349d478917a531a69754c0))
|
||||
* octalLiteral from go-critic ([#8811](https://github.com/aquasecurity/trivy/issues/8811)) ([a19e0aa](https://github.com/aquasecurity/trivy/commit/a19e0aa1ba0350198c898fd57c9405fbf38fa432))
|
||||
* **redhat:** Also try to find buildinfo in root layer (layer 0) ([#8924](https://github.com/aquasecurity/trivy/issues/8924)) ([906b037](https://github.com/aquasecurity/trivy/commit/906b037cff97060267d20f8947f429e078419d66))
|
||||
* **redhat:** save contentSets for OS packages in fs/vm modes ([#8820](https://github.com/aquasecurity/trivy/issues/8820)) ([9256804](https://github.com/aquasecurity/trivy/commit/9256804df8577d8a746fb8b97c508c247ab82f8f))
|
||||
* **redhat:** trim invalid suffix from content_sets in manifest parsing ([#8818](https://github.com/aquasecurity/trivy/issues/8818)) ([fa1077b](https://github.com/aquasecurity/trivy/commit/fa1077bbf5863a519f6f180a600afe5e2d6180d8))
|
||||
* **server:** add missed Relationship field for `rpc` ([#8872](https://github.com/aquasecurity/trivy/issues/8872)) ([38f17c9](https://github.com/aquasecurity/trivy/commit/38f17c945e3ef7784607037c0457fb1e06a99959))
|
||||
* use-any from revive ([#8810](https://github.com/aquasecurity/trivy/issues/8810)) ([883c63b](https://github.com/aquasecurity/trivy/commit/883c63bf29568f0feab37e5d36ae1c417eef88f5))
|
||||
* **vex:** use `lo.IsNil` to check `VEX` from OCI artifact ([#8858](https://github.com/aquasecurity/trivy/issues/8858)) ([e97af98](https://github.com/aquasecurity/trivy/commit/e97af9806ab13e1ec8b792e0586b486c4982c170))
|
||||
* **wolfi:** support new APK database location ([#8937](https://github.com/aquasecurity/trivy/issues/8937)) ([b15d9a6](https://github.com/aquasecurity/trivy/commit/b15d9a60e6a3ed40811d5ca6387082266ae92ea7))
|
||||
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* **secret:** only match secrets of meaningful length, allow example strings to not be matched ([#8602](https://github.com/aquasecurity/trivy/issues/8602)) ([60fef1b](https://github.com/aquasecurity/trivy/commit/60fef1b615a765248c5870b814ba0c4345220c0e))
|
||||
|
||||
## [0.62.0](https://github.com/aquasecurity/trivy/compare/v0.61.0...v0.62.0) (2025-04-30)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **image:** save layers metadata into report ([#8394](https://github.com/aquasecurity/trivy/issues/8394)) ([a95cab0](https://github.com/aquasecurity/trivy/commit/a95cab0eab0fcaab57eb554e74e17da71bc4809f))
|
||||
* **misconf:** add option to pass Rego scanner to IaC scanner ([#8369](https://github.com/aquasecurity/trivy/issues/8369)) ([890a360](https://github.com/aquasecurity/trivy/commit/890a3602444ad2e5320044c9b8cc79ca883d17ec))
|
||||
* **misconf:** convert AWS managed policy to document ([#8757](https://github.com/aquasecurity/trivy/issues/8757)) ([7abf5f0](https://github.com/aquasecurity/trivy/commit/7abf5f0199ec65c40056d4f9addc3d27e373725a))
|
||||
* **misconf:** support auto_provisioning_defaults in google_container_cluster ([#8705](https://github.com/aquasecurity/trivy/issues/8705)) ([9792611](https://github.com/aquasecurity/trivy/commit/9792611b36271efbf79f635deebae7e51f497b70))
|
||||
* **nodejs:** add root and workspace for `yarn` packages ([#8535](https://github.com/aquasecurity/trivy/issues/8535)) ([bf4cd4f](https://github.com/aquasecurity/trivy/commit/bf4cd4f2d2dda0bb3a7018606db9a6c1e56e4f38))
|
||||
* **rust:** add root and workspace relationships/package for `cargo` lock files ([#8676](https://github.com/aquasecurity/trivy/issues/8676)) ([93efe07](https://github.com/aquasecurity/trivy/commit/93efe0789ed9d9a71e04e93d87be63032ad9cae7))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* early-return, indent-error-flow and superfluous-else rules from revive ([#8796](https://github.com/aquasecurity/trivy/issues/8796)) ([43350dd](https://github.com/aquasecurity/trivy/commit/43350dd9b487b39d7d19bd0875274c90262dbed9))
|
||||
* **k8s:** correct compare artifact versions ([#8682](https://github.com/aquasecurity/trivy/issues/8682)) ([cc47711](https://github.com/aquasecurity/trivy/commit/cc4771158b72b88258057fa379deba9f39190994))
|
||||
* **k8s:** remove using `last-applied-configuration` ([#8791](https://github.com/aquasecurity/trivy/issues/8791)) ([7a58ccb](https://github.com/aquasecurity/trivy/commit/7a58ccbc7fffdfb1e5ccff9fd4cb6ca08c03a9ea))
|
||||
* **k8s:** skip passed misconfigs for the summary report ([#8684](https://github.com/aquasecurity/trivy/issues/8684)) ([bff0e9b](https://github.com/aquasecurity/trivy/commit/bff0e9b034f39d0d1ca02457558b1f89847009ac))
|
||||
* **misconf:** add missing variable as unknown ([#8683](https://github.com/aquasecurity/trivy/issues/8683)) ([9dcd06f](https://github.com/aquasecurity/trivy/commit/9dcd06fda717347eab1ac8ef0710687a3bfd8588))
|
||||
* **misconf:** check if metadata is not nil ([#8647](https://github.com/aquasecurity/trivy/issues/8647)) ([b7dfd64](https://github.com/aquasecurity/trivy/commit/b7dfd64987b94b4bdd8b7c5a68ba2b8f1a0a9198))
|
||||
* **misconf:** filter null nodes when parsing json manifest ([#8785](https://github.com/aquasecurity/trivy/issues/8785)) ([e10929a](https://github.com/aquasecurity/trivy/commit/e10929a669f43861bae80652bdfc9f39fad7225f))
|
||||
* **misconf:** perform operations on attribute safely ([#8774](https://github.com/aquasecurity/trivy/issues/8774)) ([3ce7d59](https://github.com/aquasecurity/trivy/commit/3ce7d59bb16553ab487762a5a660a046bcd63334))
|
||||
* **misconf:** populate context correctly for module instances ([#8656](https://github.com/aquasecurity/trivy/issues/8656)) ([efd177b](https://github.com/aquasecurity/trivy/commit/efd177b300950d82e381992e1dea39308cc39bc3))
|
||||
* **report:** clean buffer after flushing ([#8725](https://github.com/aquasecurity/trivy/issues/8725)) ([9a5383e](https://github.com/aquasecurity/trivy/commit/9a5383e993222d919d63f8d9934729cf4e291c06))
|
||||
* **secret:** ignore .dist-info directories during secret scanning ([#8646](https://github.com/aquasecurity/trivy/issues/8646)) ([a032ad6](https://github.com/aquasecurity/trivy/commit/a032ad696aa58850b9576d889128559149282ad3))
|
||||
* **server:** fix redis key when trying to delete blob ([#8649](https://github.com/aquasecurity/trivy/issues/8649)) ([36f8d0f](https://github.com/aquasecurity/trivy/commit/36f8d0fd6705bb0da5b43507128c772b153dafec))
|
||||
* **terraform:** `evaluateStep` to correctly set `EvalContext` for multiple instances of blocks ([#8555](https://github.com/aquasecurity/trivy/issues/8555)) ([e25de25](https://github.com/aquasecurity/trivy/commit/e25de25262fd1cd559879dee07bb2db2747eedd4))
|
||||
* **terraform:** hcl object expressions to return references ([#8271](https://github.com/aquasecurity/trivy/issues/8271)) ([0d3efa5](https://github.com/aquasecurity/trivy/commit/0d3efa5dc150dba437d975a2f8335de8786f94d6))
|
||||
* testifylint last issues ([#8768](https://github.com/aquasecurity/trivy/issues/8768)) ([ee4f7dc](https://github.com/aquasecurity/trivy/commit/ee4f7dc6b4be437666e91383406bba8443eec199))
|
||||
* unused-parameter rule from revive ([#8794](https://github.com/aquasecurity/trivy/issues/8794)) ([6562082](https://github.com/aquasecurity/trivy/commit/6562082e280a9df6199892927f2e3f7dc8f0c8ce))
|
||||
|
||||
## [0.61.0](https://github.com/aquasecurity/trivy/compare/v0.60.0...v0.61.0) (2025-03-28)
|
||||
|
||||
|
||||
|
||||
@@ -42,8 +42,5 @@ func run() error {
|
||||
}
|
||||
|
||||
app := commands.NewApp()
|
||||
if err := app.Execute(); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
return app.Execute()
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
{{- end }}
|
||||
</testsuite>
|
||||
|
||||
{{- $target := .Target }}
|
||||
{{- if .MisconfSummary }}
|
||||
<testsuite tests="{{ add .MisconfSummary.Successes .MisconfSummary.Failures }}" failures="{{ .MisconfSummary.Failures }}" name="{{ .Target }}" errors="0" time="">
|
||||
{{- else }}
|
||||
@@ -28,7 +29,23 @@
|
||||
{{ range .Misconfigurations }}
|
||||
<testcase classname="{{ .Type }}" name="[{{ .Severity }}] {{ .ID }}" time="">
|
||||
{{- if (eq .Status "FAIL") }}
|
||||
<failure message="{{ escapeXML .Title }}" type="description">{{ escapeXML .Description }}</failure>
|
||||
<failure message="{{ escapeXML .Title }}" type="description">

|
||||
{{- $target }}:
|
||||
{{- with .CauseMetadata }}
|
||||
{{- .StartLine }}
|
||||
{{- if lt .StartLine .EndLine }}:{{ .EndLine }}{{ end }}:

Occurrences:

|
||||
{{- range $i := .Occurrences -}}
|
||||
via {{ .Filename }}:
|
||||
{{- .Location.StartLine }}
|
||||
{{- if lt .Location.StartLine .Location.EndLine }}:{{ .Location.EndLine }}{{ end }} ({{ .Resource }})

|
||||
{{- end -}}
|
||||

Code:

|
||||
{{- range .Code.Lines }}
|
||||
{{- if .IsCause }}{{ escapeXML .Content }}
{{- end }}
|
||||
{{- end }}

|
||||
{{- end }}
|
||||
{{- escapeXML .Description }}
|
||||
</failure>
|
||||
{{- end }}
|
||||
</testcase>
|
||||
{{- end }}
|
||||
|
||||
@@ -75,3 +75,8 @@ Trivy might attempt to connect (over HTTPS) to the following URLs:
|
||||
### Offline mode
|
||||
|
||||
There's no way to leverage Maven Central in a network-restricted environment, but you can prevent Trivy from trying to connect to it by using the `--offline-scan` flag.
|
||||
|
||||
## Check updates service
|
||||
|
||||
Trivy [checks for updates](../configuration/others.md#check-for-updates) and [collects usage telemetry](../advanced/telemetry.md) by connecting to the following domain: `https://check.trivy.dev`.
|
||||
Connectivity with this domain is entirely optional and is not necessary for the normal operation of Trivy.
|
||||
|
||||
@@ -113,4 +113,4 @@ Total: 20 (UNKNOWN: 0, LOW: 2, MEDIUM: 10, HIGH: 8, CRITICAL: 0)
|
||||
+--------------+------------------+----------+-------------------+---------------+---------------------------------------+
|
||||
```
|
||||
|
||||
</details>
|
||||
</details>
|
||||
33
docs/docs/advanced/telemetry.md
Normal file
33
docs/docs/advanced/telemetry.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Usage Telemetry
|
||||
|
||||
Trivy collect anonymous usage data in order to help us improve the product. This document explains what is collected and how you can control it.
|
||||
|
||||
## Data collected
|
||||
|
||||
The following information could be collected:
|
||||
|
||||
- Environmental information
|
||||
- Installation identifier
|
||||
- Trivy version
|
||||
- Operating system
|
||||
- Scan
|
||||
- Non-revealing scan options
|
||||
|
||||
## Privacy
|
||||
|
||||
No personal information, scan results, or sensitive data is specifically collected. We take the following measures to ensure that:
|
||||
|
||||
- Installation identifier: one-way hash of machine fingerprint, resulting in opaque string.
|
||||
- Scaner: any option that is user controlled is omitted (never collected). For example, file paths, image names, etc are never collected.
|
||||
|
||||
Trivy is an Aqua Security product and adheres to the company's privacy policy: <https://aquasec.com/privacy>.
|
||||
|
||||
## Disabling telemetry
|
||||
|
||||
You can disable telemetry altogether using the `--disable-telemetry` flag. Like other Trivy flags, this can be set on the command line, YAML configuration file, or environment variable. For more details see [here](../configuration/index.md).
|
||||
|
||||
For example:
|
||||
|
||||
```bash
|
||||
trivy image --disable-metrics alpine
|
||||
```
|
||||
@@ -160,3 +160,14 @@ When we want to get the image `alpine` with the settings above. The logic will b
|
||||
1. Try to get the image from `mirror.with.bad.auth/library/alpine`, but we get an error because there are no credentials for this registry.
|
||||
2. Try to get the image from `mirror.without.image/library/alpine`, but we get an error because this registry doesn't have this image (but most likely it will be an error about authorization).
|
||||
3. Get the image from `index.docker.io` (the original registry).
|
||||
|
||||
## Check for updates
|
||||
|
||||
Trivy periodically checks for updates and notices, and displays a message to the user with recommendations.
|
||||
Updates checking is non-blocking and has no impact on scanning time, performance, results, or any user experience aspect besides displaying the message.
|
||||
You can disable updates checking by specifying the `--skip-version-check` flag.
|
||||
|
||||
## Telemetry
|
||||
|
||||
Trivy collected usage data for product improvement. More details in the [Telemetry document](../advanced/telemetry.md).
|
||||
You can disable telemetry collection using the `--disable-telemetry` flag.
|
||||
|
||||
@@ -1,8 +1,22 @@
|
||||
# Skipping Files and Directories
|
||||
# Selecting files for scanning
|
||||
|
||||
This section details ways to specify the files and directories that Trivy should not scan.
|
||||
When scanning a target (image, code repository, etc), Trivy traverses all directories and files in that target and looks for known files to scan. For example, vulnerability scanner might look for `/lib/apk/db/installed` for Alpine APK scanning or `requirements.txt` file for Python pip scanning, and misconfiguration scanner might look for `Dockerfile` for Dockerfile scanning. This document explains how to control which files Trivy looks (including skipping files) for and how it should process them.
|
||||
|
||||
!!! note
|
||||
Selecting/skipping files is different from filtering/ignoring results, which is covered in the [Filtering document](./filtering.md)
|
||||
|
||||
## Skip Files and Directories
|
||||
|
||||
You can skip specific files and directories using the `--skip-files` and `--skip-dirs` flags.
|
||||
|
||||
For example:
|
||||
|
||||
```bash
|
||||
trivy image --skip-files "/Gemfile.lock" --skip-dirs "/var/lib/gems/2.5.0/gems/http_parser.rb-0.6.0" quay.io/fluentd_elasticsearch/fluentd:v2.9.0
|
||||
```
|
||||
|
||||
This feature is relevant for the following scanners:
|
||||
|
||||
## Skip Files
|
||||
| Scanner | Supported |
|
||||
|:----------------:|:---------:|
|
||||
| Vulnerability | ✓ |
|
||||
@@ -10,89 +24,58 @@ This section details ways to specify the files and directories that Trivy should
|
||||
| Secret | ✓ |
|
||||
| License | ✓ |
|
||||
|
||||
By default, Trivy traverses directories and searches for all necessary files for scanning.
|
||||
You can skip files that you don't maintain using the `--skip-files` flag, or the equivalent Trivy YAML config option.
|
||||
It's possible to specify glob patterns when referring to a file or directory. The glob expression follows the ["doublestar" library syntax](https://pkg.go.dev/github.com/bmatcuk/doublestar/v4@v4.8.1#readme-patterns).
|
||||
|
||||
Examples:
|
||||
|
||||
Using the `--skip-files` flag:
|
||||
```bash
|
||||
$ trivy image --skip-files "/Gemfile.lock" --skip-files "/var/lib/gems/2.5.0/gems/http_parser.rb-0.6.0/Gemfile.lock" quay.io/fluentd_elasticsearch/fluentd:v2.9.0
|
||||
# skip any file named `bar` in the subdirectories of testdata
|
||||
trivy image --skip-files "./testdata/*/bar" .
|
||||
```
|
||||
|
||||
Using the Trivy YAML configuration:
|
||||
```bash
|
||||
# skip any files with the extension `.tf` in subdirectories of foo at any depth
|
||||
trivy config --skip-files "./foo/**/*.tf" .
|
||||
```
|
||||
|
||||
```bash
|
||||
# skip all subdirectories of the testdata directory.
|
||||
trivy image --skip-dirs "./testdata/*" .
|
||||
```
|
||||
|
||||
```bash
|
||||
# skip subdirectories at any depth named `.terraform/`.
|
||||
# this will match `./foo/.terraform` or `./foo/bar/.terraform`, but not `./.terraform`
|
||||
trivy config --skip-dirs "**/.terraform" .
|
||||
```
|
||||
|
||||
Like any other flag, this is available as Trivy YAML configuration.
|
||||
|
||||
For example:
|
||||
|
||||
```yaml
|
||||
image:
|
||||
skip-files:
|
||||
- foo
|
||||
- "testdata/*/bar"
|
||||
```
|
||||
|
||||
It's possible to specify globs as part of the value.
|
||||
|
||||
```bash
|
||||
$ trivy image --skip-files "./testdata/*/bar" .
|
||||
```
|
||||
|
||||
This will skip any file named `bar` in the subdirectories of testdata.
|
||||
|
||||
```bash
|
||||
$ trivy config --skip-files "./foo/**/*.tf" .
|
||||
```
|
||||
|
||||
This will skip any files with the extension `.tf` in subdirectories of foo at any depth.
|
||||
|
||||
## Skip Directories
|
||||
| Scanner | Supported |
|
||||
|:----------------:|:---------:|
|
||||
| Vulnerability | ✓ |
|
||||
| Misconfiguration | ✓ |
|
||||
| Secret | ✓ |
|
||||
| License | ✓ |
|
||||
|
||||
By default, Trivy traverses directories and searches for all necessary files for scanning.
|
||||
You can skip directories that you don't maintain using the `--skip-dirs` flag, or the equivalent Trivy YAML config option.
|
||||
|
||||
Using the `--skip-dirs` flag:
|
||||
```bash
|
||||
$ trivy image --skip-dirs /var/lib/gems/2.5.0/gems/fluent-plugin-detect-exceptions-0.0.13 --skip-dirs "/var/lib/gems/2.5.0/gems/http_parser.rb-0.6.0" quay.io/fluentd_elasticsearch/fluentd:v2.9.0
|
||||
```
|
||||
|
||||
Using the Trivy YAML configuration:
|
||||
```yaml
|
||||
image:
|
||||
skip-dirs:
|
||||
- foo/bar/
|
||||
- "**/.terraform"
|
||||
```
|
||||
|
||||
It's possible to specify globs as part of the value.
|
||||
## Customizing file handling
|
||||
|
||||
You can customize which files Trivy scans and how it interprets them with the `--file-patterns` flag.
|
||||
A file pattern configuration takes the following form: `<analyzer>:<path>`, such that files matching the `<path>` will be processed with the respective `<analyzer>`.
|
||||
|
||||
For example:
|
||||
|
||||
```bash
|
||||
$ trivy image --skip-dirs "./testdata/*" .
|
||||
trivy fs --file-patterns "pip:.requirements-test.txt ."
|
||||
```
|
||||
|
||||
This will skip all subdirectories of the testdata directory.
|
||||
This feature is relevant for the following scanners:
|
||||
|
||||
```bash
|
||||
$ trivy config --skip-dirs "**/.terraform" .
|
||||
```
|
||||
|
||||
This will skip subdirectories at any depth named `.terraform/`. (Note: this will match `./foo/.terraform` or
|
||||
`./foo/bar/.terraform`, but not `./.terraform`.)
|
||||
|
||||
!!! tip
|
||||
Glob patterns work with any trivy subcommand (image, config, etc.) and can be specified to skip both directories (with `--skip-dirs`) and files (with `--skip-files`).
|
||||
|
||||
|
||||
### Advanced globbing
|
||||
Trivy also supports bash style [extended](https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Pattern-Matching) glob pattern matching.
|
||||
|
||||
```bash
|
||||
$ trivy image --skip-files "**/foo" image:tag
|
||||
```
|
||||
|
||||
This will skip the file `foo` that happens to be nested under any parent(s).
|
||||
|
||||
## File patterns
|
||||
| Scanner | Supported |
|
||||
|:----------------:|:---------:|
|
||||
| Vulnerability | ✓ |
|
||||
@@ -100,20 +83,27 @@ This will skip the file `foo` that happens to be nested under any parent(s).
|
||||
| Secret | |
|
||||
| License | ✓[^1] |
|
||||
|
||||
When a directory is given as an input, Trivy will recursively look for and test all files based on file patterns.
|
||||
The default file patterns are [here](../scanner/misconfiguration/custom/index.md).
|
||||
The list of analyzers can be found [here](https://github.com/aquasecurity/trivy/tree/{{ git.commit }}/pkg/fanal/analyzer/const.go).
|
||||
Note that this flag is not applicable for parsers that accepts files of different extensions, for example the Terraform file parser which handles .tf and .tf.json files.
|
||||
|
||||
In addition to the default file patterns, the `--file-patterns` option takes regexp patterns to look for your files.
|
||||
For example, it may be useful when your file name of Dockerfile doesn't match the default patterns.
|
||||
|
||||
This can be repeated for specifying multiple file patterns.
|
||||
The file path can use a [regular expression](https://pkg.go.dev/regexp/syntax). For example:
|
||||
|
||||
A file pattern contains the analyzer it is used for, and the pattern itself, joined by a semicolon. For example:
|
||||
```
|
||||
--file-patterns "dockerfile:.*.docker" --file-patterns "kubernetes:*.tpl" --file-patterns "pip:requirements-.*\.txt"
|
||||
```bash
|
||||
# interpret any file with .txt extension as a python pip requirements file
|
||||
trivy fs --file-patterns "pip:requirements-.*\.txt .
|
||||
```
|
||||
|
||||
The prefixes are listed [here](https://github.com/aquasecurity/trivy/tree/{{ git.commit }}/pkg/fanal/analyzer/const.go)
|
||||
The flag can be repeated for specifying multiple file patterns. For example:
|
||||
|
||||
```bash
|
||||
# look for Dockerfile called production.docker and a python pip requirements file called requirements-test.txt
|
||||
trivy fs --scanners misconfig,vuln --file-patterns "dockerfile:.production.docker" --file-patterns "pip:.requirements-test.txt ."
|
||||
```
|
||||
|
||||
[^1]: Only work with the [license-full](../scanner/license.md) flag)
|
||||
[^1]: Only work with the [license-full](../scanner/license.md) flag
|
||||
|
||||
## Avoid full filesystem traversal
|
||||
|
||||
In specific scenarios Trivy can avoid traversing the entire filesystem, which makes scanning faster and more efficient.
|
||||
For more information see [here](../target/rootfs.md#performance-optimization)
|
||||
|
||||
@@ -82,8 +82,9 @@ It possibly produces false positives.
|
||||
See [the caveat](#stdlib-vulnerabilities) for details.
|
||||
|
||||
### License
|
||||
To identify licenses, you need to download modules to local cache beforehand, such as `go mod download`, `go mod tidy`, etc.
|
||||
Trivy traverses `$GOPATH/pkg/mod` and collects those extra information.
|
||||
To identify licenses, you need to download modules to local cache beforehand, such as `go mod download`, `go mod tidy`, `go mod vendor`, etc.
|
||||
If the `vendor` directory exists, Trivy uses this directory when scanning for license files.
|
||||
For other cases Trivy traverses `$GOPATH/pkg/mod`dir and collects those extra information.
|
||||
|
||||
### Dependency Graph
|
||||
Same as licenses, you need to download modules to local cache beforehand.
|
||||
|
||||
@@ -31,6 +31,7 @@ On the other hand, when the target is a post-build artifact, like a container im
|
||||
| [Node.js](nodejs.md) | package-lock.json | - | - | ✅ | ✅ |
|
||||
| | yarn.lock | - | - | ✅ | ✅ |
|
||||
| | pnpm-lock.yaml | - | - | ✅ | ✅ |
|
||||
| | bun.lock | - | - | ✅ | ✅ |
|
||||
| | package.json | ✅ | ✅ | - | - |
|
||||
| [.NET](dotnet.md) | packages.lock.json | ✅ | ✅ | ✅ | ✅ |
|
||||
| | packages.config | ✅ | ✅ | ✅ | ✅ |
|
||||
|
||||
@@ -12,12 +12,12 @@ Each artifact supports the following scanners:
|
||||
|
||||
The following table provides an outline of the features Trivy offers.
|
||||
|
||||
| Artifact | Internet access | Dev dependencies | [Dependency graph][dependency-graph] | Position | [Detection Priority][detection-priority] |
|
||||
|------------------|:---------------------:|:----------------:|:------------------------------------:|:--------:|:----------------------------------------:|
|
||||
| JAR/WAR/PAR/EAR | Trivy Java DB | Include | - | - | Not needed |
|
||||
| pom.xml | Maven repository [^1] | Exclude | ✓ | ✓[^7] | - |
|
||||
| *gradle.lockfile | - | Exclude | ✓ | ✓ | Not needed |
|
||||
| *.sbt.lock | - | Exclude | - | ✓ | Not needed |
|
||||
| Artifact | Internet access | Dev dependencies | [Dependency graph][dependency-graph] | Position | [Detection Priority][detection-priority] |
|
||||
|------------------|:---------------------:|:----------------------:|:------------------------------------:|:--------:|:----------------------------------------:|
|
||||
| JAR/WAR/PAR/EAR | Trivy Java DB | Include | - | - | Not needed |
|
||||
| pom.xml | Maven repository [^1] | Exclude | ✓ | ✓[^7] | - |
|
||||
| *gradle.lockfile | - | [Exclude](#gradlelock) | ✓ | ✓ | Not needed |
|
||||
| *.sbt.lock | - | Exclude | - | ✓ | Not needed |
|
||||
|
||||
These may be enabled or disabled depending on the target.
|
||||
See [here](./index.md) for the detail.
|
||||
@@ -96,6 +96,9 @@ If you need to show them, use the `--include-dev-deps` flag.
|
||||
!!!note
|
||||
All necessary files are checked locally. Gradle file scanning doesn't require internet access.
|
||||
|
||||
By default, Trivy doesn't report development dependencies.
|
||||
Use the `--include-dev-deps` flag to include them in the results.
|
||||
|
||||
### Dependency-tree
|
||||
!!! warning "EXPERIMENTAL"
|
||||
This feature might change without preserving backwards compatibility.
|
||||
@@ -105,7 +108,7 @@ But there is no reliable way to determine direct dependencies (even using other
|
||||
Therefore, we mark all dependencies as indirect to use logic to guess direct dependencies and build a dependency tree.
|
||||
|
||||
### Licenses
|
||||
Trity also can detect licenses for dependencies.
|
||||
Trivy also can detect licenses for dependencies.
|
||||
|
||||
Make sure that you have cache[^8] directory to find licenses from `*.pom` dependency files.
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ The following table provides an outline of the features Trivy offers.
|
||||
| npm | package-lock.json | ✓ | [Excluded](#npm) | ✓ | ✓ |
|
||||
| Yarn | yarn.lock | ✓ | [Excluded](#yarn) | ✓ | ✓ |
|
||||
| pnpm | pnpm-lock.yaml | ✓ | [Excluded](#lock-file-v9-version) | ✓ | - |
|
||||
| Bun | yarn.lock | ✓ | [Excluded](#yarn) | ✓ | ✓ |
|
||||
| Bun | bun.lock | ✓ | [Excluded](#bun) | ✓ | ✓ |
|
||||
|
||||
In addition, Trivy scans installed packages with `package.json`.
|
||||
|
||||
@@ -43,14 +43,26 @@ Trivy analyzes `node_modules` for licenses.
|
||||
By default, Trivy doesn't report development dependencies. Use the `--include-dev-deps` flag to include them.
|
||||
|
||||
### Yarn
|
||||
Trivy parses `yarn.lock`, which doesn't contain information about development dependencies.
|
||||
Trivy also uses `package.json` file to handle [aliases](https://classic.yarnpkg.com/lang/en/docs/cli/add/#toc-yarn-add-alias).
|
||||
Trivy parses `yarn.lock`.
|
||||
|
||||
To exclude devDependencies and allow aliases, `package.json` also needs to be present next to `yarn.lock`.
|
||||
Trivy also analyzes additional files to gather more information about the detected dependencies.
|
||||
|
||||
Trivy analyzes `.yarn` (Yarn 2+) or `node_modules` (Yarn Classic) folder next to the yarn.lock file to detect licenses.
|
||||
- package.json
|
||||
- node_modules/**
|
||||
|
||||
By default, Trivy doesn't report development dependencies. Use the `--include-dev-deps` flag to include them.
|
||||
#### Package relationships
|
||||
`yarn.lock` files don't contain information about package relationships, such as direct or indirect dependencies.
|
||||
To enrich this information, Trivy parses the `package.json` file located next to the `yarn.lock` file as well as workspace `package.json` files.
|
||||
|
||||
By default, Trivy doesn't report development dependencies.
|
||||
Use the `--include-dev-deps` flag to include them in the results.
|
||||
|
||||
#### Development dependencies
|
||||
`yarn.lock` files don't contain information about package groups, such as production and development dependencies.
|
||||
To identify dev dependencies and support [aliases][yarn-aliases], Trivy parses the `package.json` file located next to the `yarn.lock` file as well as workspace `package.json` files.
|
||||
|
||||
#### Licenses
|
||||
Trivy analyzes the `.yarn` directory (for Yarn 2+) or the `node_modules` directory (for Yarn Classic) located next to the `yarn.lock` file to detect licenses.
|
||||
|
||||
### pnpm
|
||||
Trivy parses `pnpm-lock.yaml`, then finds production dependencies and builds a [tree][dependency-graph] of dependencies with vulnerabilities.
|
||||
@@ -60,7 +72,13 @@ To identify licenses, you need to download dependencies to `node_modules` before
|
||||
Trivy supports `Dev` field for `pnpm-lock.yaml` v9 or later. Use the `--include-dev-deps` flag to include the developer's dependencies in the result.
|
||||
|
||||
### Bun
|
||||
Trivy supports scanning `yarn.lock` files generated by [Bun](https://bun.sh/docs/install/lockfile#how-do-i-inspect-bun-s-lockfile). You can use the command `bun install -y` to generate a Yarn-compatible `yarn.lock`.
|
||||
Trivy also supports scanning `bun.lock` file generated by [Bun](https://bun.sh/blog/bun-lock-text-lockfile).
|
||||
You can use Bun v1.2 which uses this file as default or use `bun install --save-text-lockfile` in Bun v1.1.39 to generate it.
|
||||
|
||||
For previous Bun versions you can use the command `bun install -y` to generate a Yarn-compatible `yarn.lock` and then scan it with Trivy.
|
||||
|
||||
#### Development dependencies
|
||||
`bun.lock` contains information about package groups, such as production and development dependencies. By default, Trivy doesn't report development dependencies. Use the `--include-dev-deps` flag to include them.
|
||||
|
||||
!!! note
|
||||
`bun.lockb` is not supported.
|
||||
@@ -74,5 +92,6 @@ It only extracts package names, versions and licenses for those packages.
|
||||
|
||||
[dependency-graph]: ../../configuration/reporting.md#show-origins-of-vulnerable-dependencies
|
||||
[pnpm-lockfile-v6]: https://github.com/pnpm/spec/blob/fd3238639af86c09b7032cc942bab3438b497036/lockfile/6.0.md
|
||||
[yarn-aliases]: https://classic.yarnpkg.com/lang/en/docs/cli/add/#toc-yarn-add-alias
|
||||
|
||||
[^1]: [yarn.lock](#bun) must be generated
|
||||
|
||||
15
docs/docs/coverage/os/bottlerocket.md
Normal file
15
docs/docs/coverage/os/bottlerocket.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Bottlerocket
|
||||
Trivy supports the following scanners for OS packages.
|
||||
|
||||
| Scanner | Supported |
|
||||
| :-----------: | :-------: |
|
||||
| SBOM | ✓ |
|
||||
| Vulnerability | - |
|
||||
| License | - |
|
||||
|
||||
Please see [here](index.md#supported-os) for supported versions.
|
||||
|
||||
## SBOM
|
||||
Trivy detects packages that are listed in the [software inventory].
|
||||
|
||||
[software inventory]: https://bottlerocket.dev/en/os/1.37.x/concepts/variants/#software-inventory
|
||||
30
docs/docs/coverage/os/echo.md
Normal file
30
docs/docs/coverage/os/echo.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Echo
|
||||
Trivy supports these scanners for OS packages.
|
||||
|
||||
| Scanner | Supported |
|
||||
| :-----------: | :-------: |
|
||||
| SBOM | ✓ |
|
||||
| Vulnerability | ✓ |
|
||||
| License | ✓ |
|
||||
|
||||
The table below outlines the features offered by Trivy.
|
||||
|
||||
| Feature | Supported |
|
||||
|:------------------------------------:|:---------:|
|
||||
| Unfixed vulnerabilities | ✓ |
|
||||
| [Dependency graph][dependency-graph] | ✓ |
|
||||
|
||||
## SBOM
|
||||
Same as [Debian](debian.md#sbom).
|
||||
|
||||
## Vulnerability
|
||||
Echo offers its own security advisories, and these are utilized when scanning Echo for vulnerabilities.
|
||||
|
||||
### Data Source
|
||||
See [here](../../scanner/vulnerability.md#data-sources).
|
||||
|
||||
## License
|
||||
Same as [Debian](debian.md#license).
|
||||
|
||||
[dependency-graph]: ../../configuration/reporting.md#show-origins-of-vulnerable-dependencies
|
||||
[advisory]: https://advisory.echohq.com/data.json
|
||||
@@ -14,6 +14,7 @@ Trivy supports operating systems for
|
||||
| [Alpine Linux](alpine.md) | 2.2 - 2.7, 3.0 - 3.21, edge | apk |
|
||||
| [Wolfi Linux](wolfi.md) | (n/a) | apk |
|
||||
| [Chainguard](chainguard.md) | (n/a) | apk |
|
||||
| [MinimOS](minimos.md) | (n/a) | apk |
|
||||
| [Red Hat Enterprise Linux](rhel.md) | 6, 7, 8 | dnf/yum/rpm |
|
||||
| [CentOS](centos.md)[^1] | 6, 7, 8 | dnf/yum/rpm |
|
||||
| [AlmaLinux](alma.md) | 8, 9 | dnf/yum/rpm |
|
||||
@@ -26,8 +27,10 @@ Trivy supports operating systems for
|
||||
| [SUSE Linux Enterprise](suse.md) | 11, 12, 15 | zypper/rpm |
|
||||
| [SUSE Linux Enterprise Micro](suse.md)| 5, 6 | zypper/rpm |
|
||||
| [Photon OS](photon.md) | 1.0, 2.0, 3.0, 4.0 | tndf/yum/rpm |
|
||||
| [Echo](echo.md) | (n/a) | apt/dpkg |
|
||||
| [Debian GNU/Linux](debian.md) | 7, 8, 9, 10, 11, 12 | apt/dpkg |
|
||||
| [Ubuntu](ubuntu.md) | All versions supported by Canonical | apt/dpkg |
|
||||
| [Bottlerocket](bottlerocket.md) | 1.7.0 and upper | bottlerocket |
|
||||
| [OSs with installed Conda](../others/conda.md) | - | conda |
|
||||
|
||||
## Supported container images
|
||||
|
||||
30
docs/docs/coverage/os/minimos.md
Normal file
30
docs/docs/coverage/os/minimos.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# MinimOS
|
||||
Trivy supports these scanners for OS packages.
|
||||
|
||||
| Scanner | Supported |
|
||||
| :-----------: | :-------: |
|
||||
| SBOM | ✓ |
|
||||
| Vulnerability | ✓ |
|
||||
| License | ✓ |
|
||||
|
||||
The table below outlines the features offered by Trivy.
|
||||
|
||||
| Feature | Supported |
|
||||
|:------------------------------------:|:---------:|
|
||||
| Detect unfixed vulnerabilities | - |
|
||||
| [Dependency graph][dependency-graph] | ✓ |
|
||||
|
||||
## SBOM
|
||||
Same as [Alpine Linux](alpine.md#sbom).
|
||||
|
||||
## Vulnerability
|
||||
MinimOS offers its own security advisories, and these are utilized when scanning MinimOS for vulnerabilities.
|
||||
Everything else is the same as [Alpine Linux](alpine.md#vulnerability).
|
||||
|
||||
### Data Source
|
||||
See [here](../../scanner/vulnerability.md#data-sources).
|
||||
|
||||
## License
|
||||
Same as [Alpine Linux](alpine.md#license).
|
||||
|
||||
[dependency-graph]: ../../configuration/reporting.md#show-origins-of-vulnerable-dependencies
|
||||
@@ -22,6 +22,13 @@ Trivy detects packages that have been installed through package managers such as
|
||||
## Vulnerability
|
||||
Red Hat offers its own security advisories, and these are utilized when scanning Red Hat Enterprise Linux (RHEL) for vulnerabilities.
|
||||
|
||||
### Content manifests
|
||||
Red Hat’s security advisories use CPEs to identify product sets. For example, even packages installed in the same container image can have different CPEs.
|
||||
For this reason, Red Hat’s container images include stored content manifests, which we convert to CPEs, and perform vulnerability scanning.
|
||||
|
||||
Since this system ties each content manifest to its packages on a per-layer basis,
|
||||
if layers get merged (for instance, by using `docker run` or `docker export`) we can no longer determine the correct CPE, which may lead to false detection.
|
||||
|
||||
### Data Source
|
||||
See [here](../../scanner/vulnerability.md#data-sources).
|
||||
|
||||
@@ -82,3 +89,5 @@ Trivy identifies licenses by examining the metadata of RPM packages.
|
||||
[NVD]: https://nvd.nist.gov/vuln/detail/CVE-2023-0464
|
||||
|
||||
[vulnerability statuses]: ../../configuration/filtering.md#by-status
|
||||
|
||||
[content-set-default]: https://github.com/aquasecurity/trivy/blob/c80310d7690d8aeb7d3d77416c18c0c8b9aebe17/pkg/detector/ospkg/redhat/redhat.go#L25-L42
|
||||
|
||||
@@ -51,6 +51,7 @@ trivy config [flags] DIR
|
||||
--output-plugin-arg string [EXPERIMENTAL] output plugin arguments
|
||||
--password strings password. Comma-separated passwords allowed. TRIVY_PASSWORD should be used for security reasons.
|
||||
--password-stdin password from stdin. Comma-separated passwords are not supported.
|
||||
--raw-config-scanners strings specify the types of scanners that will also scan raw configurations. For example, scanners will scan a non-adapted configuration into a shared state (allowed values: terraform)
|
||||
--redis-ca string redis ca file location, if using redis as cache backend
|
||||
--redis-cert string redis certificate file location, if using redis as cache backend
|
||||
--redis-key string redis key file location, if using redis as cache backend
|
||||
|
||||
@@ -35,6 +35,7 @@ trivy filesystem [flags] PATH
|
||||
- "precise": Prioritizes precise by minimizing false positives.
|
||||
- "comprehensive": Aims to detect more security findings at the cost of potential false positives.
|
||||
(allowed values: precise,comprehensive) (default "precise")
|
||||
--disable-telemetry disable sending anonymous usage data to Aqua
|
||||
--distro string [EXPERIMENTAL] specify a distribution, <family>/<version>
|
||||
--download-db-only download/update vulnerability database but don't run a scan
|
||||
--download-java-db-only download/update Java index database but don't run a scan
|
||||
@@ -75,7 +76,7 @@ trivy filesystem [flags] PATH
|
||||
--ignored-licenses strings specify a list of license to ignore
|
||||
--ignorefile string specify .trivyignore file (default ".trivyignore")
|
||||
--include-deprecated-checks include deprecated checks
|
||||
--include-dev-deps include development dependencies in the report (supported: npm, yarn)
|
||||
--include-dev-deps include development dependencies in the report (supported: npm, yarn, gradle)
|
||||
--include-non-failures include successes, available with '--scanners misconfig'
|
||||
--java-db-repository strings OCI repository(ies) to retrieve trivy-java-db in order of priority (default [mirror.gcr.io/aquasec/trivy-java-db:1,ghcr.io/aquasecurity/trivy-java-db:1])
|
||||
--license-confidence-level float specify license classifier's confidence level (default 0.9)
|
||||
@@ -99,6 +100,7 @@ trivy filesystem [flags] PATH
|
||||
- indirect
|
||||
(default [unknown,root,workspace,direct,indirect])
|
||||
--pkg-types strings list of package types (allowed values: os,library) (default [os,library])
|
||||
--raw-config-scanners strings specify the types of scanners that will also scan raw configurations. For example, scanners will scan a non-adapted configuration into a shared state (allowed values: terraform)
|
||||
--redis-ca string redis ca file location, if using redis as cache backend
|
||||
--redis-cert string redis certificate file location, if using redis as cache backend
|
||||
--redis-key string redis key file location, if using redis as cache backend
|
||||
@@ -125,6 +127,7 @@ trivy filesystem [flags] PATH
|
||||
--skip-dirs strings specify the directories or glob patterns to skip
|
||||
--skip-files strings specify the files or glob patterns to skip
|
||||
--skip-java-db-update skip updating Java index database
|
||||
--skip-version-check suppress notices about version updates and Trivy announcements
|
||||
--skip-vex-repo-update [EXPERIMENTAL] Skip VEX Repository update
|
||||
--table-mode strings [EXPERIMENTAL] tables that will be displayed in 'table' format (allowed values: summary,detailed) (default [summary,detailed])
|
||||
-t, --template string output template
|
||||
@@ -164,6 +167,8 @@ trivy filesystem [flags] PATH
|
||||
- chainguard
|
||||
- bitnami
|
||||
- govulndb
|
||||
- echo
|
||||
- minimos
|
||||
- auto
|
||||
(default [auto])
|
||||
```
|
||||
|
||||
@@ -38,7 +38,7 @@ trivy image [flags] IMAGE_NAME
|
||||
--cache-ttl duration cache TTL when using redis as cache backend
|
||||
--check-namespaces strings Rego namespaces
|
||||
--checks-bundle-repository string OCI registry URL to retrieve checks bundle from (default "mirror.gcr.io/aquasec/trivy-checks:1")
|
||||
--compliance string compliance report to generate (allowed values: docker-cis-1.6.0)
|
||||
--compliance string compliance report to generate (built-in compliance's: docker-cis-1.6.0)
|
||||
--config-check strings specify the paths to the Rego check files or to the directories containing them, applying config files
|
||||
--config-data strings specify paths from which data for the Rego checks will be recursively loaded
|
||||
--config-file-schemas strings specify paths to JSON configuration file schemas to determine that a file matches some configuration and pass the schema to Rego checks for type checking
|
||||
@@ -49,6 +49,7 @@ trivy image [flags] IMAGE_NAME
|
||||
- "precise": Prioritizes precise by minimizing false positives.
|
||||
- "comprehensive": Aims to detect more security findings at the cost of potential false positives.
|
||||
(allowed values: precise,comprehensive) (default "precise")
|
||||
--disable-telemetry disable sending anonymous usage data to Aqua
|
||||
--distro string [EXPERIMENTAL] specify a distribution, <family>/<version>
|
||||
--docker-host string unix domain socket path to use for docker scanning
|
||||
--download-db-only download/update vulnerability database but don't run a scan
|
||||
@@ -120,6 +121,7 @@ trivy image [flags] IMAGE_NAME
|
||||
--pkg-types strings list of package types (allowed values: os,library) (default [os,library])
|
||||
--platform string set platform in the form os/arch if image is multi-platform capable
|
||||
--podman-host string unix podman socket path to use for podman scanning
|
||||
--raw-config-scanners strings specify the types of scanners that will also scan raw configurations. For example, scanners will scan a non-adapted configuration into a shared state (allowed values: terraform)
|
||||
--redis-ca string redis ca file location, if using redis as cache backend
|
||||
--redis-cert string redis certificate file location, if using redis as cache backend
|
||||
--redis-key string redis key file location, if using redis as cache backend
|
||||
@@ -147,6 +149,7 @@ trivy image [flags] IMAGE_NAME
|
||||
--skip-dirs strings specify the directories or glob patterns to skip
|
||||
--skip-files strings specify the files or glob patterns to skip
|
||||
--skip-java-db-update skip updating Java index database
|
||||
--skip-version-check suppress notices about version updates and Trivy announcements
|
||||
--skip-vex-repo-update [EXPERIMENTAL] Skip VEX Repository update
|
||||
--table-mode strings [EXPERIMENTAL] tables that will be displayed in 'table' format (allowed values: summary,detailed) (default [summary,detailed])
|
||||
-t, --template string output template
|
||||
@@ -185,6 +188,8 @@ trivy image [flags] IMAGE_NAME
|
||||
- chainguard
|
||||
- bitnami
|
||||
- govulndb
|
||||
- echo
|
||||
- minimos
|
||||
- auto
|
||||
(default [auto])
|
||||
```
|
||||
|
||||
@@ -35,7 +35,7 @@ trivy kubernetes [flags] [CONTEXT]
|
||||
--check-namespaces strings Rego namespaces
|
||||
--checks-bundle-repository string OCI registry URL to retrieve checks bundle from (default "mirror.gcr.io/aquasec/trivy-checks:1")
|
||||
--compliance string compliance report to generate
|
||||
Allowed values:
|
||||
Built-in compliance's:
|
||||
- k8s-nsa-1.0
|
||||
- k8s-cis-1.23
|
||||
- eks-cis-1.4
|
||||
@@ -52,6 +52,7 @@ trivy kubernetes [flags] [CONTEXT]
|
||||
- "comprehensive": Aims to detect more security findings at the cost of potential false positives.
|
||||
(allowed values: precise,comprehensive) (default "precise")
|
||||
--disable-node-collector When the flag is activated, the node-collector job will not be executed, thus skipping misconfiguration findings on the node.
|
||||
--disable-telemetry disable sending anonymous usage data to Aqua
|
||||
--distro string [EXPERIMENTAL] specify a distribution, <family>/<version>
|
||||
--download-db-only download/update vulnerability database but don't run a scan
|
||||
--download-java-db-only download/update Java index database but don't run a scan
|
||||
@@ -111,6 +112,7 @@ trivy kubernetes [flags] [CONTEXT]
|
||||
(default [unknown,root,workspace,direct,indirect])
|
||||
--pkg-types strings list of package types (allowed values: os,library) (default [os,library])
|
||||
--qps float specify the maximum QPS to the master from this client (default 5)
|
||||
--raw-config-scanners strings specify the types of scanners that will also scan raw configurations. For example, scanners will scan a non-adapted configuration into a shared state (allowed values: terraform)
|
||||
--redis-ca string redis ca file location, if using redis as cache backend
|
||||
--redis-cert string redis certificate file location, if using redis as cache backend
|
||||
--redis-key string redis key file location, if using redis as cache backend
|
||||
@@ -137,6 +139,7 @@ trivy kubernetes [flags] [CONTEXT]
|
||||
--skip-files strings specify the files or glob patterns to skip
|
||||
--skip-images skip the downloading and scanning of images (vulnerabilities and secrets) in the cluster resources
|
||||
--skip-java-db-update skip updating Java index database
|
||||
--skip-version-check suppress notices about version updates and Trivy announcements
|
||||
--skip-vex-repo-update [EXPERIMENTAL] Skip VEX Repository update
|
||||
-t, --template string output template
|
||||
--tf-exclude-downloaded-modules exclude misconfigurations for downloaded terraform modules
|
||||
@@ -173,6 +176,8 @@ trivy kubernetes [flags] [CONTEXT]
|
||||
- chainguard
|
||||
- bitnami
|
||||
- govulndb
|
||||
- echo
|
||||
- minimos
|
||||
- auto
|
||||
(default [auto])
|
||||
```
|
||||
|
||||
@@ -35,6 +35,7 @@ trivy repository [flags] (REPO_PATH | REPO_URL)
|
||||
- "precise": Prioritizes precise by minimizing false positives.
|
||||
- "comprehensive": Aims to detect more security findings at the cost of potential false positives.
|
||||
(allowed values: precise,comprehensive) (default "precise")
|
||||
--disable-telemetry disable sending anonymous usage data to Aqua
|
||||
--download-db-only download/update vulnerability database but don't run a scan
|
||||
--download-java-db-only download/update Java index database but don't run a scan
|
||||
--enable-modules strings [EXPERIMENTAL] module names to enable
|
||||
@@ -74,7 +75,7 @@ trivy repository [flags] (REPO_PATH | REPO_URL)
|
||||
--ignored-licenses strings specify a list of license to ignore
|
||||
--ignorefile string specify .trivyignore file (default ".trivyignore")
|
||||
--include-deprecated-checks include deprecated checks
|
||||
--include-dev-deps include development dependencies in the report (supported: npm, yarn)
|
||||
--include-dev-deps include development dependencies in the report (supported: npm, yarn, gradle)
|
||||
--include-non-failures include successes, available with '--scanners misconfig'
|
||||
--java-db-repository strings OCI repository(ies) to retrieve trivy-java-db in order of priority (default [mirror.gcr.io/aquasec/trivy-java-db:1,ghcr.io/aquasecurity/trivy-java-db:1])
|
||||
--license-confidence-level float specify license classifier's confidence level (default 0.9)
|
||||
@@ -98,6 +99,7 @@ trivy repository [flags] (REPO_PATH | REPO_URL)
|
||||
- indirect
|
||||
(default [unknown,root,workspace,direct,indirect])
|
||||
--pkg-types strings list of package types (allowed values: os,library) (default [os,library])
|
||||
--raw-config-scanners strings specify the types of scanners that will also scan raw configurations. For example, scanners will scan a non-adapted configuration into a shared state (allowed values: terraform)
|
||||
--redis-ca string redis ca file location, if using redis as cache backend
|
||||
--redis-cert string redis certificate file location, if using redis as cache backend
|
||||
--redis-key string redis key file location, if using redis as cache backend
|
||||
@@ -123,6 +125,7 @@ trivy repository [flags] (REPO_PATH | REPO_URL)
|
||||
--skip-dirs strings specify the directories or glob patterns to skip
|
||||
--skip-files strings specify the files or glob patterns to skip
|
||||
--skip-java-db-update skip updating Java index database
|
||||
--skip-version-check suppress notices about version updates and Trivy announcements
|
||||
--skip-vex-repo-update [EXPERIMENTAL] Skip VEX Repository update
|
||||
--table-mode strings [EXPERIMENTAL] tables that will be displayed in 'table' format (allowed values: summary,detailed) (default [summary,detailed])
|
||||
--tag string pass the tag name to be scanned
|
||||
@@ -163,6 +166,8 @@ trivy repository [flags] (REPO_PATH | REPO_URL)
|
||||
- chainguard
|
||||
- bitnami
|
||||
- govulndb
|
||||
- echo
|
||||
- minimos
|
||||
- auto
|
||||
(default [auto])
|
||||
```
|
||||
|
||||
@@ -37,6 +37,7 @@ trivy rootfs [flags] ROOTDIR
|
||||
- "precise": Prioritizes precise by minimizing false positives.
|
||||
- "comprehensive": Aims to detect more security findings at the cost of potential false positives.
|
||||
(allowed values: precise,comprehensive) (default "precise")
|
||||
--disable-telemetry disable sending anonymous usage data to Aqua
|
||||
--distro string [EXPERIMENTAL] specify a distribution, <family>/<version>
|
||||
--download-db-only download/update vulnerability database but don't run a scan
|
||||
--download-java-db-only download/update Java index database but don't run a scan
|
||||
@@ -101,6 +102,7 @@ trivy rootfs [flags] ROOTDIR
|
||||
- indirect
|
||||
(default [unknown,root,workspace,direct,indirect])
|
||||
--pkg-types strings list of package types (allowed values: os,library) (default [os,library])
|
||||
--raw-config-scanners strings specify the types of scanners that will also scan raw configurations. For example, scanners will scan a non-adapted configuration into a shared state (allowed values: terraform)
|
||||
--redis-ca string redis ca file location, if using redis as cache backend
|
||||
--redis-cert string redis certificate file location, if using redis as cache backend
|
||||
--redis-key string redis key file location, if using redis as cache backend
|
||||
@@ -126,6 +128,7 @@ trivy rootfs [flags] ROOTDIR
|
||||
--skip-dirs strings specify the directories or glob patterns to skip
|
||||
--skip-files strings specify the files or glob patterns to skip
|
||||
--skip-java-db-update skip updating Java index database
|
||||
--skip-version-check suppress notices about version updates and Trivy announcements
|
||||
--skip-vex-repo-update [EXPERIMENTAL] Skip VEX Repository update
|
||||
--table-mode strings [EXPERIMENTAL] tables that will be displayed in 'table' format (allowed values: summary,detailed) (default [summary,detailed])
|
||||
-t, --template string output template
|
||||
@@ -165,6 +168,8 @@ trivy rootfs [flags] ROOTDIR
|
||||
- chainguard
|
||||
- bitnami
|
||||
- govulndb
|
||||
- echo
|
||||
- minimos
|
||||
- auto
|
||||
(default [auto])
|
||||
```
|
||||
|
||||
@@ -29,6 +29,7 @@ trivy sbom [flags] SBOM_PATH
|
||||
- "precise": Prioritizes precise by minimizing false positives.
|
||||
- "comprehensive": Aims to detect more security findings at the cost of potential false positives.
|
||||
(allowed values: precise,comprehensive) (default "precise")
|
||||
--disable-telemetry disable sending anonymous usage data to Aqua
|
||||
--distro string [EXPERIMENTAL] specify a distribution, <family>/<version>
|
||||
--download-db-only download/update vulnerability database but don't run a scan
|
||||
--download-java-db-only download/update Java index database but don't run a scan
|
||||
@@ -98,9 +99,8 @@ trivy sbom [flags] SBOM_PATH
|
||||
(default [UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL])
|
||||
--show-suppressed [EXPERIMENTAL] show suppressed vulnerabilities
|
||||
--skip-db-update skip updating vulnerability database
|
||||
--skip-dirs strings specify the directories or glob patterns to skip
|
||||
--skip-files strings specify the files or glob patterns to skip
|
||||
--skip-java-db-update skip updating Java index database
|
||||
--skip-version-check suppress notices about version updates and Trivy announcements
|
||||
--skip-vex-repo-update [EXPERIMENTAL] Skip VEX Repository update
|
||||
--table-mode strings [EXPERIMENTAL] tables that will be displayed in 'table' format (allowed values: summary,detailed) (default [summary,detailed])
|
||||
-t, --template string output template
|
||||
@@ -137,6 +137,8 @@ trivy sbom [flags] SBOM_PATH
|
||||
- chainguard
|
||||
- bitnami
|
||||
- govulndb
|
||||
- echo
|
||||
- minimos
|
||||
- auto
|
||||
(default [auto])
|
||||
```
|
||||
|
||||
@@ -33,6 +33,7 @@ trivy vm [flags] VM_IMAGE
|
||||
- "precise": Prioritizes precise by minimizing false positives.
|
||||
- "comprehensive": Aims to detect more security findings at the cost of potential false positives.
|
||||
(allowed values: precise,comprehensive) (default "precise")
|
||||
--disable-telemetry disable sending anonymous usage data to Aqua
|
||||
--distro string [EXPERIMENTAL] specify a distribution, <family>/<version>
|
||||
--download-db-only download/update vulnerability database but don't run a scan
|
||||
--download-java-db-only download/update Java index database but don't run a scan
|
||||
@@ -91,6 +92,7 @@ trivy vm [flags] VM_IMAGE
|
||||
- indirect
|
||||
(default [unknown,root,workspace,direct,indirect])
|
||||
--pkg-types strings list of package types (allowed values: os,library) (default [os,library])
|
||||
--raw-config-scanners strings specify the types of scanners that will also scan raw configurations. For example, scanners will scan a non-adapted configuration into a shared state (allowed values: terraform)
|
||||
--redis-ca string redis ca file location, if using redis as cache backend
|
||||
--redis-cert string redis certificate file location, if using redis as cache backend
|
||||
--redis-key string redis key file location, if using redis as cache backend
|
||||
@@ -114,6 +116,7 @@ trivy vm [flags] VM_IMAGE
|
||||
--skip-dirs strings specify the directories or glob patterns to skip
|
||||
--skip-files strings specify the files or glob patterns to skip
|
||||
--skip-java-db-update skip updating Java index database
|
||||
--skip-version-check suppress notices about version updates and Trivy announcements
|
||||
--skip-vex-repo-update [EXPERIMENTAL] Skip VEX Repository update
|
||||
--table-mode strings [EXPERIMENTAL] tables that will be displayed in 'table' format (allowed values: summary,detailed) (default [summary,detailed])
|
||||
-t, --template string output template
|
||||
@@ -150,6 +153,8 @@ trivy vm [flags] VM_IMAGE
|
||||
- chainguard
|
||||
- bitnami
|
||||
- govulndb
|
||||
- echo
|
||||
- minimos
|
||||
- auto
|
||||
(default [auto])
|
||||
```
|
||||
|
||||
@@ -409,6 +409,9 @@ misconfiguration:
|
||||
# Same as '--include-non-failures'
|
||||
include-non-failures: false
|
||||
|
||||
# Same as '--raw-config-scanners'
|
||||
raw-config-scanners: []
|
||||
|
||||
# Same as '--render-cause'
|
||||
render-cause: []
|
||||
|
||||
@@ -583,6 +586,9 @@ scan:
|
||||
# Same as '--detection-priority'
|
||||
detection-priority: "precise"
|
||||
|
||||
# Same as '--disable-telemetry'
|
||||
disable-telemetry: false
|
||||
|
||||
# Same as '--distro'
|
||||
distro: ""
|
||||
|
||||
@@ -612,6 +618,9 @@ scan:
|
||||
# Same as '--skip-files'
|
||||
skip-files: []
|
||||
|
||||
# Same as '--skip-version-check'
|
||||
skip-version-check: false
|
||||
|
||||
```
|
||||
## Secret options
|
||||
|
||||
|
||||
@@ -342,6 +342,28 @@ license:
|
||||
permissive: []
|
||||
```
|
||||
|
||||
#### Text licenses
|
||||
By default, Trivy categorizes a license as UNKNOWN if it cannot determine the license name from the license text.
|
||||
|
||||
To define a category for a text license, you need to add license with the `text://` prefix to license classification.
|
||||
For example:
|
||||
```yaml
|
||||
license:
|
||||
forbidden:
|
||||
- "text://Text of Apache Software Foundation License"
|
||||
```
|
||||
|
||||
But a text license can by large. So for these cases Trivy supports using `regex` in license classification.
|
||||
For example:
|
||||
```yaml
|
||||
license:
|
||||
forbidden:
|
||||
- "text://.* Apache Software .*"
|
||||
```
|
||||
|
||||
!!! note
|
||||
`regex` is only used for text licenses and can't be used to configure license IDs.
|
||||
|
||||
[^1]: See the list of supported language files [here](../coverage/language/index.md).
|
||||
[^2]: Some lock files require additional files (e.g. files from the cache directory) to detect licenses. Check [coverage][coverage] for more information.
|
||||
|
||||
|
||||
259
docs/docs/scanner/misconfiguration/config/config.md
Normal file
259
docs/docs/scanner/misconfiguration/config/config.md
Normal file
@@ -0,0 +1,259 @@
|
||||
This page describes misconfiguration-specific configuration.
|
||||
|
||||
### Enabling a subset of misconfiguration scanners
|
||||
It's possible to only enable certain misconfiguration scanners if you prefer.
|
||||
You can do so by passing the `--misconfig-scanners` option.
|
||||
This flag takes a comma-separated list of configuration scanner types.
|
||||
|
||||
```bash
|
||||
trivy config --misconfig-scanners=terraform,dockerfile .
|
||||
```
|
||||
|
||||
Will only scan for misconfigurations that pertain to Terraform and Dockerfiles.
|
||||
|
||||
### Loading custom checks
|
||||
You can load check files or directories including your custom checks using the `--config-check` flag.
|
||||
This can be repeated for specifying multiple files or directories.
|
||||
|
||||
```bash
|
||||
trivy config --config-check custom-policy/policy --config-check combine/policy --config-check policy.rego --namespaces user myapp
|
||||
```
|
||||
|
||||
You can load checks bundle as OCI Image from a Container Registry using the `--checks-bundle-repository` flag.
|
||||
|
||||
```bash
|
||||
trivy config --checks-bundle-repository myregistry.local/mychecks --namespaces user myapp
|
||||
```
|
||||
|
||||
|
||||
### Passing custom data
|
||||
You can pass directories including your custom data through `--data` option.
|
||||
This can be repeated for specifying multiple directories.
|
||||
|
||||
```bash
|
||||
cd examples/misconf/custom-data
|
||||
trivy config --config-check ./my-check --data ./data --namespaces user ./configs
|
||||
```
|
||||
|
||||
For more details, see [Custom Data](./custom/data.md).
|
||||
|
||||
### Passing namespaces
|
||||
By default, Trivy evaluates checks defined in `builtin.*`.
|
||||
If you want to evaluate custom checks in other packages, you have to specify package prefixes through `--namespaces` option.
|
||||
This can be repeated for specifying multiple packages.
|
||||
|
||||
``` bash
|
||||
trivy config --config-check ./my-check --namespaces main --namespaces user ./configs
|
||||
```
|
||||
|
||||
### Private Terraform registries
|
||||
Trivy can download Terraform code from private registries.
|
||||
To pass credentials you must use the `TF_TOKEN_` environment variables.
|
||||
You cannot use a `.terraformrc` or `terraform.rc` file, these are not supported by trivy yet.
|
||||
|
||||
From the Terraform [docs](https://developer.hashicorp.com/terraform/cli/config/config-file#environment-variable-credentials):
|
||||
|
||||
> Environment variable names should have the prefix TF_TOKEN_ added to the domain name, with periods encoded as underscores.
|
||||
> For example, the value of a variable named `TF_TOKEN_app_terraform_io` will be used as a bearer authorization token when the CLI makes service requests to the hostname `app.terraform.io`.
|
||||
>
|
||||
> You must convert domain names containing non-ASCII characters to their punycode equivalent with an ACE prefix.
|
||||
> For example, token credentials for `例えば.com` must be set in a variable called `TF_TOKEN_xn--r8j3dr99h_com`.
|
||||
>
|
||||
> Hyphens are also valid within host names but usually invalid as variable names and may be encoded as double underscores.
|
||||
> For example, you can set a token for the domain name café.fr as TF_TOKEN_xn--caf-dma_fr or TF_TOKEN_xn____caf__dma_fr.
|
||||
|
||||
If multiple variables evaluate to the same hostname, Trivy will choose the environment variable name where the dashes have not been encoded as double underscores.
|
||||
|
||||
|
||||
### Filtering resources by inline comments
|
||||
|
||||
Trivy supports ignoring misconfigured resources by inline comments for Terraform, CloudFormation and Helm configuration files only.
|
||||
|
||||
In cases where Trivy can detect comments of a specific format immediately adjacent to resource definitions, it is possible to ignore findings from a single source of resource definition (in contrast to `.trivyignore`, which has a directory-wide scope on all of the files scanned). The format for these comments is `trivy:ignore:<rule>` immediately following the format-specific line-comment [token](https://developer.hashicorp.com/terraform/language/syntax/configuration#comments).
|
||||
|
||||
The ignore rule must contain one of the possible check IDs that can be found in its metadata: ID, short code or alias. The `id` from the metadata is not case-sensitive, so you can specify, for example, `AVD-AWS-0089` or `avd-aws-0089`.
|
||||
|
||||
For example, to ignore a misconfiguration ID `AVD-GCP-0051` in a Terraform HCL file:
|
||||
|
||||
```terraform
|
||||
#trivy:ignore:AVD-GCP-0051
|
||||
resource "google_container_cluster" "example" {
|
||||
name = var.cluster_name
|
||||
location = var.region
|
||||
}
|
||||
```
|
||||
|
||||
You can add multiple ignores on the same comment line:
|
||||
```terraform
|
||||
#trivy:ignore:AVD-GCP-0051 trivy:ignore:AVD-GCP-0053
|
||||
resource "google_container_cluster" "example" {
|
||||
name = var.cluster_name
|
||||
location = var.region
|
||||
}
|
||||
```
|
||||
|
||||
You can also specify a long ID, which is formed as follows: `<provider>-<service>-<short-code>`.
|
||||
|
||||
As an example, consider the following check metadata:
|
||||
|
||||
```yaml
|
||||
# custom:
|
||||
# id: AVD-AWS-0089
|
||||
# avd_id: AVD-AWS-0089
|
||||
# provider: aws
|
||||
# service: s3
|
||||
# severity: LOW
|
||||
# short_code: enable-logging
|
||||
```
|
||||
|
||||
Long ID would look like the following: `aws-s3-enable-logging`.
|
||||
|
||||
Example for CloudFromation:
|
||||
```yaml
|
||||
AWSTemplateFormatVersion: "2010-09-09"
|
||||
Resources:
|
||||
#trivy:ignore:*
|
||||
S3Bucket:
|
||||
Type: 'AWS::S3::Bucket'
|
||||
Properties:
|
||||
BucketName: test-bucket
|
||||
```
|
||||
|
||||
!!!note
|
||||
Ignore rules for Helm files should be placed before the YAML object, since only it contains the location data needed for ignoring.
|
||||
|
||||
Example for Helm:
|
||||
```yaml
|
||||
serviceAccountName: "testchart.serviceAccountName"
|
||||
containers:
|
||||
# trivy:ignore:KSV018
|
||||
- name: "testchart"
|
||||
securityContext:
|
||||
runAsUser: 1000
|
||||
runAsGroup: 3000
|
||||
image: "your-repository/your-image:your-tag"
|
||||
imagePullPolicy: "Always"
|
||||
|
||||
|
||||
#### Expiration Date
|
||||
|
||||
You can specify the expiration date of the ignore rule in `yyyy-mm-dd` format. This is a useful feature when you want to make sure that an ignored issue is not forgotten and worth revisiting in the future. For example:
|
||||
```tf
|
||||
#trivy:ignore:aws-s3-enable-logging:exp:2024-03-10
|
||||
resource "aws_s3_bucket" "example" {
|
||||
bucket = "test"
|
||||
}
|
||||
```
|
||||
|
||||
The `aws-s3-enable-logging` check will be ignored until `2024-03-10` until the ignore rule expires.
|
||||
|
||||
#### Ignoring by attributes
|
||||
|
||||
You can ignore a resource by its attribute value. This is useful when using the `for-each` meta-argument. For example:
|
||||
|
||||
```tf
|
||||
locals {
|
||||
ports = ["3306", "5432"]
|
||||
}
|
||||
|
||||
#trivy:ignore:aws-ec2-no-public-ingress-sgr[from_port=3306]
|
||||
resource "aws_security_group_rule" "example" {
|
||||
for_each = toset(local.ports)
|
||||
type = "ingress"
|
||||
from_port = each.key
|
||||
to_port = each.key
|
||||
protocol = "TCP"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
security_group_id = aws_security_group.example.id
|
||||
source_security_group_id = aws_security_group.example.id
|
||||
}
|
||||
```
|
||||
|
||||
The `aws-ec2-no-public-ingress-sgr` check will be ignored only for the `aws_security_group_rule` resource with port number `5432`. It is important to note that the ignore rule should not enclose the attribute value in quotes, despite the fact that the port is represented as a string.
|
||||
|
||||
If you want to ignore multiple resources on different attributes, you can specify multiple ignore rules:
|
||||
|
||||
```tf
|
||||
#trivy:ignore:aws-ec2-no-public-ingress-sgr[from_port=3306]
|
||||
#trivy:ignore:aws-ec2-no-public-ingress-sgr[from_port=5432]
|
||||
```
|
||||
|
||||
You can also ignore a resource on multiple attributes in the same rule:
|
||||
```tf
|
||||
locals {
|
||||
rules = {
|
||||
first = {
|
||||
port = 1000
|
||||
type = "ingress"
|
||||
},
|
||||
second = {
|
||||
port = 1000
|
||||
type = "egress"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#trivy:ignore:aws-ec2-no-public-ingress-sgr[from_port=1000,type=egress]
|
||||
resource "aws_security_group_rule" "example" {
|
||||
for_each = { for k, v in local.rules : k => v }
|
||||
|
||||
type = each.value.type
|
||||
from_port = each.value.port
|
||||
to_port = each.value.port
|
||||
protocol = "TCP"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
security_group_id = aws_security_group.example.id
|
||||
source_security_group_id = aws_security_group.example.id
|
||||
}
|
||||
```
|
||||
|
||||
Checks can also be ignored by nested attributes:
|
||||
|
||||
```tf
|
||||
#trivy:ignore:*[logging_config.prefix=myprefix]
|
||||
resource "aws_cloudfront_distribution" "example" {
|
||||
logging_config {
|
||||
include_cookies = false
|
||||
bucket = "mylogs.s3.amazonaws.com"
|
||||
prefix = "myprefix"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### Ignoring module issues
|
||||
|
||||
Issues in third-party modules cannot be ignored using the method described above, because you may not have access to modify the module source code. In such a situation you can add ignore rules above the module block, for example:
|
||||
|
||||
```tf
|
||||
#trivy:ignore:aws-s3-enable-logging
|
||||
module "s3_bucket" {
|
||||
source = "terraform-aws-modules/s3-bucket/aws"
|
||||
|
||||
bucket = "my-s3-bucket"
|
||||
}
|
||||
```
|
||||
|
||||
An example of ignoring checks for a specific bucket in a module:
|
||||
```tf
|
||||
locals {
|
||||
bucket = ["test1", "test2"]
|
||||
}
|
||||
|
||||
#trivy:ignore:*[bucket=test1]
|
||||
module "s3_bucket" {
|
||||
for_each = toset(local.bucket)
|
||||
source = "terraform-aws-modules/s3-bucket/aws"
|
||||
bucket = each.value
|
||||
}
|
||||
```
|
||||
|
||||
#### Support for Wildcards
|
||||
|
||||
You can use wildcards in the `ws` (workspace) and `ignore` sections of the ignore rules.
|
||||
|
||||
```tf
|
||||
# trivy:ignore:aws-s3-*:ws:dev-*
|
||||
```
|
||||
|
||||
This example ignores all checks starting with `aws-s3-` for workspaces matching the pattern `dev-*`.
|
||||
|
||||
@@ -121,17 +121,18 @@ Trivy supports extra fields in the `custom` section as described below.
|
||||
If you are creating checks for your Trivy misconfiguration scans, some fields are optional as referenced in the table below. The `schemas` field should be used to enable policy validation using a built-in schema. It is recommended to use this to ensure your checks are
|
||||
correct and do not reference incorrect properties/values.
|
||||
|
||||
| Field name | Allowed values | Default value | In table | In JSON |
|
||||
|----------------------------|-------------------------------------------------------------------|:----------------------------:|:--------:|:-------:|
|
||||
| title | Any characters | N/A | ✅ | ✅ |
|
||||
| description | Any characters | | - | ✅ |
|
||||
| schemas.input | `schema["kubernetes"]`, `schema["dockerfile"]`, `schema["cloud"]` | (applied to all input types) | - | - |
|
||||
| custom.id | Any characters | N/A | ✅ | ✅ |
|
||||
| custom.severity | `LOW`, `MEDIUM`, `HIGH`, `CRITICAL` | UNKNOWN | ✅ | ✅ |
|
||||
| custom.recommended_actions | Any characters | | - | ✅ |
|
||||
| custom.deprecated | `true`, `false` | `false` | - | ✅ |
|
||||
| custom.input.selector.type | Any item(s) in [this list][source-types] | | - | ✅ |
|
||||
| url | Any characters | | - | ✅ |
|
||||
| Field name | Allowed values | Default value | In table | In JSON |
|
||||
|------------------------------|---------------------------------------------------------------------|:----------------------------:|:--------:|:-------:|
|
||||
| title | Any characters | N/A | ✅ | ✅ |
|
||||
| description | Any characters | | - | ✅ |
|
||||
| schemas.input | `schema["kubernetes"]`, `schema["dockerfile"]`, `schema["cloud"]` | (applied to all input types) | - | - |
|
||||
| custom.id | Any characters | N/A | ✅ | ✅ |
|
||||
| custom.severity | `LOW`, `MEDIUM`, `HIGH`, `CRITICAL` | UNKNOWN | ✅ | ✅ |
|
||||
| custom.recommended_actions | Any characters | | - | ✅ |
|
||||
| custom.deprecated | `true`, `false` | `false` | - | ✅ |
|
||||
| custom.input.selector.type | Any item(s) in [this list][source-types] | | - | ✅ |
|
||||
| custom.minimum_trivy_version | The minimum version of Trivy that's required to evaluate this check | | - | ✅ |
|
||||
| url | Any characters | | - | ✅ |
|
||||
|
||||
#### custom.avd_id and custom.id
|
||||
|
||||
@@ -207,6 +208,7 @@ You can specify input format via the `custom.input` annotation.
|
||||
- `yaml` (Generic YAML)
|
||||
- `json` (Generic JSON)
|
||||
- `toml` (Generic TOML)
|
||||
- `terraform-raw` (Terraform configuration is not converted to common state as for the Cloud format, allowing for more flexible and direct checks on the original code)
|
||||
|
||||
When configuration languages such as Kubernetes are not identified, file formats such as JSON will be used as `type`.
|
||||
When a configuration language is identified, it will overwrite `type`.
|
||||
|
||||
@@ -1,11 +1,38 @@
|
||||
# Input Schema
|
||||
|
||||
## Overview
|
||||
Checks can be defined with custom schemas that allow inputs to be verified against them. Adding a policy schema
|
||||
|
||||
Schemas are declarative documents that define the structure, data types and constraints of inputs being scanned. Trivy provides certain schemas out of the box as seen in the explorer [here](https://aquasecurity.github.io/trivy-schemas/). You can also find the source code for the schemas [here](https://github.com/aquasecurity/trivy/tree/main/pkg/iac/rego/schemas).
|
||||
|
||||
It is not required to pass in schemas, in order to scan inputs by Trivy but are required if type-checking is needed.
|
||||
|
||||
Checks can be defined with custom schemas that allow inputs to be verified against them. Adding an input schema
|
||||
enables Trivy to show more detailed error messages when an invalid input is encountered.
|
||||
|
||||
In Trivy we have been able to define a schema for a [Dockerfile](https://github.com/aquasecurity/trivy/tree/main/pkg/iac/rego/schemas)
|
||||
Without input schemas, a policy would be as follows:
|
||||
## Unified Schema
|
||||
|
||||
One of the unique advantages of Trivy is to take a variety of inputs, such as IaC files (e.g. CloudFormation, Terraform etc.) and also live cloud scanning
|
||||
(e.g. [Trivy AWS plugin](https://github.com/aquasecurity/trivy-aws)) and normalize them into a standard structure, as defined by the schema.
|
||||
|
||||
An example of such an application would be scanning AWS resources. You can scan them prior to deployment via the Trivy misconfiguration scanner and also
|
||||
scan them after they've been deployed in the cloud with Trivy AWS scanning. Both scan methods should yield the same result as resources are gathered into
|
||||
a unified representation as defined by the [Cloud schema](https://github.com/aquasecurity/trivy/blob/main/pkg/iac/rego/schemas/cloud.json).
|
||||
|
||||
|
||||
## Supported Schemas
|
||||
Currently out of the box the following schemas are supported natively:
|
||||
|
||||
1. [Docker](https://github.com/aquasecurity/trivy/blob/main/pkg/iac/rego/schemas/dockerfile.json)
|
||||
2. [Kubernetes](https://github.com/aquasecurity/trivy/blob/main/pkg/iac/rego/schemas/kubernetes.json)
|
||||
3. [Cloud](https://github.com/aquasecurity/trivy/blob/main/pkg/iac/rego/schemas/cloud.json)
|
||||
4. [Terraform Raw Format](https://github.com/aquasecurity/trivy/blob/main/pkg/iac/rego/schemas/terraform-raw.json)
|
||||
|
||||
You can interactively view these schemas with the [Trivy Schema Explorer](https://aquasecurity.github.io/trivy-schemas/)
|
||||
|
||||
|
||||
## Example
|
||||
As mentioned earlier, amongst other built-in schemas, Trivy offers a built in-schema for scanning Dockerfiles. It is available [here](https://github.com/aquasecurity/trivy/tree/main/pkg/iac/rego/schemas)
|
||||
Without input schemas, a check would be as follows:
|
||||
|
||||
!!! example
|
||||
```
|
||||
@@ -17,10 +44,10 @@ Without input schemas, a policy would be as follows:
|
||||
}
|
||||
```
|
||||
|
||||
If this policy is run against offending Dockerfile(s), there will not be any issues as the policy will fail to evaluate.
|
||||
Although the policy's failure to evaluate is legitimate, this should not result in a positive result for the scan.
|
||||
If this check is run against an offending Dockerfile(s), there will not be any issues as the check will fail to evaluate.
|
||||
Although the check's failure to evaluate is legitimate, this should not result in a positive result for the scan.
|
||||
|
||||
For instance if we have a policy that checks for misconfigurations in a `Dockerfile`, we could define the
|
||||
For instance if we have a check that checks for misconfigurations in a `Dockerfile`, we could define the
|
||||
schema as such
|
||||
|
||||
!!! example
|
||||
@@ -38,26 +65,20 @@ schema as such
|
||||
Here `input: schema["dockerfile"]` points to a schema that expects a valid `Dockerfile` as input. An example of this
|
||||
can be found [here](https://github.com/aquasecurity/trivy/blob/main/pkg/iac/rego/schemas/dockerfile.json).
|
||||
|
||||
Now if this policy is evaluated against, a more descriptive error will be available to help fix the problem.
|
||||
Now if this check is evaluated against, a more descriptive error will be available to help fix the problem.
|
||||
|
||||
```bash
|
||||
1 error occurred: testpolicy.rego:8: rego_type_error: undefined ref: input.evil
|
||||
1 error occurred: testcheck.rego:8: rego_type_error: undefined ref: input.evil
|
||||
input.evil
|
||||
^
|
||||
have: "evil"
|
||||
want (one of): ["Stages"]
|
||||
```
|
||||
|
||||
Currently, out of the box the following schemas are supported natively:
|
||||
|
||||
1. [Docker](https://github.com/aquasecurity/trivy/blob/main/pkg/iac/rego/schemas/dockerfile.json)
|
||||
2. [Kubernetes](https://github.com/aquasecurity/trivy/blob/main/pkg/iac/rego/schemas/kubernetes.json)
|
||||
3. [Cloud](https://github.com/aquasecurity/trivy/blob/main/pkg/iac/rego/schemas/cloud.json)
|
||||
|
||||
|
||||
## Custom Checks with Custom Schemas
|
||||
|
||||
You can also bring a custom policy that defines one or more custom schema.
|
||||
You can also bring a custom check that defines one or more custom schema.
|
||||
|
||||
!!! example
|
||||
```
|
||||
@@ -77,16 +98,83 @@ The checks can be placed in a structure as follows
|
||||
!!! example
|
||||
```
|
||||
/Users/user/my-custom-checks
|
||||
├── my_policy.rego
|
||||
├── my_check.rego
|
||||
└── schemas
|
||||
└── fooschema.json
|
||||
└── barschema.json
|
||||
```
|
||||
|
||||
To use such a policy with Trivy, use the `--config-policy` flag that points to the policy file or to the directory where the schemas and checks are contained.
|
||||
To use such a check with Trivy, use the `--config-check` flag that points to the check file or to the directory where the schemas and checks are contained.
|
||||
|
||||
```bash
|
||||
$ trivy --config-policy=/Users/user/my-custom-checks <path/to/iac>
|
||||
$ trivy --config-check=/Users/user/my-custom-checks <path/to/iac>
|
||||
```
|
||||
|
||||
For more details on how to define schemas within Rego checks, please see the [OPA guide](https://www.openpolicyagent.org/docs/latest/policy-language/#schema-annotations) that describes it in more detail.
|
||||
For more details on how to define schemas within Rego checks, please see the [OPA guide](https://www.openpolicyagent.org/docs/latest/policy-language/#schema-annotations) that describes it in more detail.
|
||||
|
||||
### Scan arbitrary JSON and YAML configurations
|
||||
By default, scanning JSON and YAML configurations is disabled, since Trivy does not contain built-in checks for these configurations. To enable it, pass the `json` or `yaml` to `--misconfig-scanners`. Trivy will pass each file as is to the checks input.
|
||||
|
||||
|
||||
!!! example
|
||||
```bash
|
||||
$ cat iac/serverless.yaml
|
||||
service: serverless-rest-api-with-pynamodb
|
||||
|
||||
frameworkVersion: ">=2.24.0"
|
||||
|
||||
plugins:
|
||||
- serverless-python-requirements
|
||||
...
|
||||
|
||||
$ cat serverless.rego
|
||||
# METADATA
|
||||
# title: Serverless Framework service name not starting with "aws-"
|
||||
# description: Ensure that Serverless Framework service names start with "aws-"
|
||||
# schemas:
|
||||
# - input: schema["serverless-schema"]
|
||||
# custom:
|
||||
# id: SF001
|
||||
# severity: LOW
|
||||
package user.serverless001
|
||||
|
||||
deny[res] {
|
||||
not startswith(input.service, "aws-")
|
||||
res := result.new(
|
||||
sprintf("Service name %q is not allowed", [input.service]),
|
||||
input.service
|
||||
)
|
||||
}
|
||||
|
||||
$ trivy config --misconfig-scanners=json,yaml --config-check ./serverless.rego --check-namespaces user ./iac
|
||||
serverless.yaml (yaml)
|
||||
|
||||
Tests: 4 (SUCCESSES: 3, FAILURES: 1)
|
||||
Failures: 1 (UNKNOWN: 0, LOW: 1, MEDIUM: 0, HIGH: 0, CRITICAL: 0)
|
||||
|
||||
LOW: Service name "serverless-rest-api-with-pynamodb" is not allowed
|
||||
═════════════════════════════════════════════════════════════════════════════════════════════════════════
|
||||
Ensure that Serverless Framework service names start with "aws-"
|
||||
```
|
||||
|
||||
!!! note
|
||||
In the case above, the custom check specified has a metadata annotation for the input schema `input: schema["serverless-schema"]`. This allows Trivy to type check the input IaC files provided.
|
||||
|
||||
Optionally, you can also pass schemas using the `config-file-schemas` flag. Trivy will use these schemas for file filtering and type checking in Rego checks.
|
||||
|
||||
!!! example
|
||||
```bash
|
||||
$ trivy config --misconfig-scanners=json,yaml --config-check ./serverless.rego --check-namespaces user --config-file-schemas ./serverless-schema.json ./iac
|
||||
```
|
||||
|
||||
If the `--config-file-schemas` flag is specified Trivy ensures that each input IaC config file being scanned is type-checked against the schema. If the input file does not match any of the passed schemas, it will be ignored.
|
||||
|
||||
If the schema is specified in the check metadata and is in the directory specified in the `--config-check` argument, it will be automatically loaded as specified [here](./custom/schema.md#custom-checks-with-custom-schemas), and will only be used for type checking in Rego.
|
||||
|
||||
!!! note
|
||||
If a user specifies the `--config-file-schemas` flag, all input IaC config files are ensured that they pass type-checking. It is not required to pass an input schema in case type checking is not required. This is helpful for scenarios where you simply want to write a Rego check and pass in IaC input for it. Such a use case could include scanning for a new service which Trivy might not support just yet.
|
||||
|
||||
!!! tip
|
||||
It is also possible to specify multiple input schemas with `--config-file-schema` flag as it can accept a comma seperated list of file paths or a directory as input. In the case of multiple schemas being specified, all of them will be evaluated against all the input files.
|
||||
|
||||
|
||||
|
||||
@@ -25,7 +25,9 @@ See [here](../coverage/os/index.md#supported-os) for the supported OSes.
|
||||
| Alpine Linux | [secdb][alpine] |
|
||||
| Wolfi Linux | [secdb][wolfi] |
|
||||
| Chainguard | [secdb][chainguard] |
|
||||
| MinimOS | [secdb][minimos] |
|
||||
| Amazon Linux | [Amazon Linux Security Center][amazon] |
|
||||
| Echo | [Echo][echo] |
|
||||
| Debian | [Security Bug Tracker][debian-tracker] / [OVAL][debian-oval] |
|
||||
| Ubuntu | [Ubuntu CVE Tracker][ubuntu] |
|
||||
| RHEL/CentOS | [OVAL][rhel-oval] / [Security Data][rhel-api] |
|
||||
@@ -120,7 +122,6 @@ See [here](../coverage/language/index.md#supported-languages) for the supported
|
||||
| PHP | [PHP Security Advisories Database][php] | ✅ | - |
|
||||
| | [GitHub Advisory Database (Composer)][php-ghsa] | ✅ | - |
|
||||
| Python | [GitHub Advisory Database (pip)][python-ghsa] | ✅ | - |
|
||||
| | [Open Source Vulnerabilities (PyPI)][python-osv] | ✅ | - |
|
||||
| Ruby | [Ruby Advisory Database][ruby] | ✅ | - |
|
||||
| | [GitHub Advisory Database (RubyGems)][ruby-ghsa] | ✅ | - |
|
||||
| Node.js | [Ecosystem Security Working Group][nodejs] | ✅ | - |
|
||||
@@ -294,9 +295,10 @@ This feature allows you to focus on vulnerabilities in specific types of depende
|
||||
In Trivy, there are four types of package relationships:
|
||||
|
||||
1. `root`: The root package being scanned
|
||||
2. `direct`: Direct dependencies of the root package
|
||||
3. `indirect`: Transitive dependencies
|
||||
4. `unknown`: Packages whose relationship cannot be determined
|
||||
2. `workspace`: Workspaces of the root package (Currently only `pom.xml`, `yarn.lock` and `cargo.lock` files are supported)
|
||||
3. `direct`: Direct dependencies of the root/workspace package
|
||||
4. `indirect`: Transitive dependencies
|
||||
5. `unknown`: Packages whose relationship cannot be determined
|
||||
|
||||
The available relationships may vary depending on the ecosystem.
|
||||
To see which relationships are supported for a particular project, you can use the JSON output format and check the `Relationship` field:
|
||||
@@ -378,7 +380,9 @@ Example logic for the following vendor severity levels when scanning an Alpine i
|
||||
[alpine]: https://secdb.alpinelinux.org/
|
||||
[wolfi]: https://packages.wolfi.dev/os/security.json
|
||||
[chainguard]: https://packages.cgr.dev/chainguard/security.json
|
||||
[minimos]: https://packages.mini.dev/advisories/secdb/security.json
|
||||
[amazon]: https://alas.aws.amazon.com/
|
||||
[echo]: https://advisory.echohq.com/data.json
|
||||
[debian-tracker]: https://security-tracker.debian.org/tracker/
|
||||
[debian-oval]: https://www.debian.org/security/oval/
|
||||
[ubuntu]: https://ubuntu.com/security/cve
|
||||
|
||||
@@ -14,6 +14,9 @@ $ trivy rootfs /path/to/rootfs
|
||||
You should use `trivy fs` to scan your local projects in CI/CD.
|
||||
See [here](../scanner/vulnerability.md) for the differences.
|
||||
|
||||
!!! note
|
||||
Scanning vulnerabilities for `Red Hat` has a limitation, see the [Red Hat](../coverage/os/rhel.md#content-manifests) page for details.
|
||||
|
||||
## Performance Optimization
|
||||
|
||||
By default, Trivy traverses all files from the specified root directory to find target files for scanning.
|
||||
|
||||
@@ -150,6 +150,9 @@ See [here](../scanner/vulnerability.md) for the detail.
|
||||
$ trivy vm [YOUR_VM_IMAGE]
|
||||
```
|
||||
|
||||
!!! note
|
||||
Scanning `Red Hat` has a limitation, see the [Red Hat](../coverage/os/rhel.md#content-manifests) page for details.
|
||||
|
||||
### Misconfigurations
|
||||
It is supported, but it is not useful in most cases.
|
||||
As mentioned [here](../scanner/misconfiguration/index.md), Trivy mainly supports Infrastructure as Code (IaC) files for misconfigurations.
|
||||
|
||||
@@ -48,7 +48,7 @@ package custom.dockerfile.ID001
|
||||
import future.keywords.in
|
||||
```
|
||||
|
||||
Every rego check has a package name. In our case, we will call it `custom.dockerfile.ID001` to avoid confusion between custom checks and built-in checks. The group name `dockerfile` has no effect on the package name. Note that each package has to contain only one check. However, we can pass multiple checks into our Trivy scan.
|
||||
Every Rego check has a package name. In our case, we will call it `custom.dockerfile.ID001` to avoid confusion between custom checks and built-in checks. The group name `dockerfile` has no effect on the package name. Note that each package has to contain only one check. However, we can pass multiple checks into our Trivy scan.
|
||||
The first keyword of the package, in this case `custom`, will be reused in the `trivy` command as the `--namespace`.
|
||||
|
||||
## Allowed data
|
||||
|
||||
@@ -90,7 +90,7 @@ trivy config --tf-vars terraform.tfvars ./
|
||||
```
|
||||
### Custom Checks
|
||||
|
||||
We have lots of examples in the [documentation](https://trivy.dev/latest/docs/scanner/misconfiguration/custom/) on how you can write and pass custom Rego checks into terraform misconfiguration scans.
|
||||
We have lots of examples in the [documentation](https://trivy.dev/latest/docs/scanner/misconfiguration/custom/) on how you can write and pass custom Rego checks into terraform misconfiguration scans.
|
||||
|
||||
## Secret and vulnerability scans
|
||||
|
||||
|
||||
283
go.mod
283
go.mod
@@ -1,12 +1,12 @@
|
||||
module github.com/aquasecurity/trivy
|
||||
|
||||
go 1.24
|
||||
go 1.24.2
|
||||
|
||||
require (
|
||||
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2
|
||||
github.com/BurntSushi/toml v1.4.0
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.0
|
||||
github.com/BurntSushi/toml v1.5.0
|
||||
github.com/CycloneDX/cyclonedx-go v0.9.2
|
||||
github.com/GoogleCloudPlatform/docker-credential-gcr v2.0.5+incompatible
|
||||
github.com/Masterminds/sprig/v3 v3.3.0
|
||||
@@ -20,41 +20,38 @@ require (
|
||||
github.com/aquasecurity/go-pep440-version v0.0.1
|
||||
github.com/aquasecurity/go-version v0.0.1
|
||||
github.com/aquasecurity/iamgo v0.0.10
|
||||
github.com/aquasecurity/jfather v0.0.8
|
||||
github.com/aquasecurity/table v1.8.0
|
||||
github.com/aquasecurity/table v1.10.0
|
||||
github.com/aquasecurity/testdocker v0.0.0-20240730042311-4642e94c7fc8
|
||||
github.com/aquasecurity/tml v0.6.1
|
||||
github.com/aquasecurity/trivy-checks v1.8.1
|
||||
github.com/aquasecurity/trivy-db v0.0.0-20250227071930-8bd8a9b89e2d
|
||||
github.com/aquasecurity/trivy-checks v1.11.2-0.20250529074512-7afea1b738c4
|
||||
github.com/aquasecurity/trivy-db v0.0.0-20250529093513-a12dfc204b6e
|
||||
github.com/aquasecurity/trivy-java-db v0.0.0-20240109071736-184bd7481d48
|
||||
github.com/aquasecurity/trivy-kubernetes v0.8.1
|
||||
github.com/aquasecurity/trivy-kubernetes v0.9.0
|
||||
github.com/aws/aws-sdk-go-v2 v1.36.3
|
||||
github.com/aws/aws-sdk-go-v2/config v1.29.13
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.66
|
||||
github.com/aws/aws-sdk-go-v2/service/ec2 v1.211.2
|
||||
github.com/aws/aws-sdk-go-v2/service/ecr v1.43.2
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.79.1
|
||||
github.com/aws/aws-sdk-go-v2/config v1.29.14
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.67
|
||||
github.com/aws/aws-sdk-go-v2/service/ec2 v1.218.0
|
||||
github.com/aws/aws-sdk-go-v2/service/ecr v1.44.0
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.79.3
|
||||
github.com/aws/smithy-go v1.22.3
|
||||
github.com/bitnami/go-version v0.0.0-20231130084017-bb00604d650c
|
||||
github.com/bmatcuk/doublestar/v4 v4.8.1
|
||||
github.com/cenkalti/backoff/v4 v4.3.0
|
||||
github.com/cheggaaa/pb/v3 v3.1.7
|
||||
github.com/containerd/containerd/v2 v2.0.4
|
||||
github.com/containerd/containerd/v2 v2.1.1
|
||||
github.com/containerd/platforms v1.0.0-rc.1
|
||||
github.com/distribution/reference v0.6.0
|
||||
github.com/docker/cli v28.0.4+incompatible
|
||||
github.com/docker/docker v28.0.4+incompatible
|
||||
github.com/docker/cli v28.1.1+incompatible
|
||||
github.com/docker/docker v28.1.1+incompatible
|
||||
github.com/docker/go-connections v0.5.0
|
||||
github.com/docker/go-units v0.5.0
|
||||
github.com/fatih/color v1.18.0
|
||||
github.com/go-git/go-git/v5 v5.14.0
|
||||
github.com/go-git/go-git/v5 v5.16.0
|
||||
github.com/go-json-experiment/json v0.0.0-20250223041408-d3c622f1b874 // Replace with encoding/json/v2 when proposal is accepted. Track https://github.com/golang/go/issues/71497
|
||||
github.com/go-openapi/runtime v0.28.0 // indirect
|
||||
github.com/go-openapi/strfmt v0.23.0 // indirect
|
||||
github.com/go-redis/redis/v8 v8.11.5
|
||||
github.com/gocsaf/csaf/v3 v3.1.1
|
||||
github.com/gocsaf/csaf/v3 v3.2.0
|
||||
github.com/golang-jwt/jwt/v5 v5.2.2
|
||||
github.com/google/go-containerregistry v0.20.3
|
||||
github.com/google/go-containerregistry v0.20.5
|
||||
github.com/google/go-github/v62 v62.0.0
|
||||
github.com/google/licenseclassifier/v2 v2.0.0
|
||||
github.com/google/uuid v1.6.0
|
||||
@@ -65,9 +62,9 @@ require (
|
||||
github.com/hashicorp/go-uuid v1.0.3
|
||||
github.com/hashicorp/go-version v1.7.0
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7
|
||||
github.com/hashicorp/hc-install v0.9.1
|
||||
github.com/hashicorp/hc-install v0.9.2
|
||||
github.com/hashicorp/hcl/v2 v2.23.0
|
||||
github.com/hashicorp/terraform-exec v0.22.0
|
||||
github.com/hashicorp/terraform-exec v0.23.0
|
||||
github.com/in-toto/in-toto-golang v0.9.0
|
||||
github.com/knqyf263/go-apk-version v0.0.0-20200609155635-041fdbb8563f
|
||||
github.com/knqyf263/go-deb-version v0.0.0-20241115132648-6f4aee6ccd23
|
||||
@@ -87,69 +84,65 @@ require (
|
||||
github.com/mitchellh/go-homedir v1.1.0
|
||||
github.com/mitchellh/hashstructure/v2 v2.0.2
|
||||
github.com/mitchellh/mapstructure v1.5.0
|
||||
github.com/moby/buildkit v0.18.2
|
||||
github.com/open-policy-agent/opa v1.2.0
|
||||
github.com/moby/buildkit v0.21.1
|
||||
github.com/open-policy-agent/opa v1.4.2
|
||||
github.com/opencontainers/go-digest v1.0.0
|
||||
github.com/opencontainers/image-spec v1.1.1
|
||||
github.com/openvex/discovery v0.1.1-0.20240802171711-7c54efc57553
|
||||
github.com/openvex/go-vex v0.2.5
|
||||
github.com/owenrumney/go-sarif/v2 v2.3.3
|
||||
github.com/owenrumney/squealer v1.2.11 // indirect
|
||||
github.com/package-url/packageurl-go v0.1.3
|
||||
github.com/quasilyte/go-ruleguard/dsl v0.3.22
|
||||
github.com/rust-secure-code/go-rustaudit v0.0.0-20250226111315-e20ec32e963c
|
||||
github.com/samber/lo v1.49.1
|
||||
github.com/samber/lo v1.50.0
|
||||
github.com/sassoftware/go-rpmutils v0.4.0
|
||||
github.com/secure-systems-lab/go-securesystemslib v0.9.0
|
||||
github.com/sigstore/rekor v1.3.9
|
||||
github.com/sigstore/rekor v1.3.10
|
||||
github.com/sirupsen/logrus v1.9.3
|
||||
github.com/sosedoff/gitkit v0.4.0
|
||||
github.com/spdx/tools-golang v0.5.5 // v0.5.3 with necessary changes. Can be upgraded to version 0.5.4 after release.
|
||||
github.com/spf13/cast v1.7.1
|
||||
github.com/spf13/cast v1.8.0
|
||||
github.com/spf13/cobra v1.9.1
|
||||
github.com/spf13/pflag v1.0.6
|
||||
github.com/spf13/viper v1.20.0
|
||||
github.com/spf13/viper v1.20.1
|
||||
github.com/stretchr/testify v1.10.0
|
||||
github.com/testcontainers/testcontainers-go v0.36.0
|
||||
github.com/testcontainers/testcontainers-go/modules/localstack v0.36.0
|
||||
github.com/testcontainers/testcontainers-go v0.37.0
|
||||
github.com/testcontainers/testcontainers-go/modules/localstack v0.37.0
|
||||
github.com/tetratelabs/wazero v1.9.0
|
||||
github.com/twitchtv/twirp v8.1.3+incompatible
|
||||
github.com/xeipuuv/gojsonschema v1.2.0
|
||||
github.com/xlab/treeprint v1.2.0
|
||||
github.com/zclconf/go-cty v1.16.2
|
||||
github.com/zclconf/go-cty v1.16.3
|
||||
github.com/zclconf/go-cty-yaml v1.1.0
|
||||
go.etcd.io/bbolt v1.4.0
|
||||
golang.org/x/crypto v0.36.0
|
||||
golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect
|
||||
golang.org/x/crypto v0.38.0
|
||||
golang.org/x/mod v0.24.0
|
||||
golang.org/x/net v0.37.0
|
||||
golang.org/x/sync v0.12.0
|
||||
golang.org/x/term v0.30.0
|
||||
golang.org/x/text v0.23.0
|
||||
golang.org/x/net v0.40.0
|
||||
golang.org/x/sync v0.14.0
|
||||
golang.org/x/term v0.32.0
|
||||
golang.org/x/text v0.25.0
|
||||
golang.org/x/vuln v1.1.4
|
||||
golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9
|
||||
google.golang.org/protobuf v1.36.5
|
||||
google.golang.org/protobuf v1.36.6
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
helm.sh/helm/v3 v3.17.2
|
||||
k8s.io/api v0.32.3
|
||||
helm.sh/helm/v3 v3.17.3
|
||||
k8s.io/api v0.33.1
|
||||
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
|
||||
modernc.org/sqlite v1.36.1
|
||||
sigs.k8s.io/yaml v1.4.0 // indirect
|
||||
modernc.org/sqlite v1.37.0
|
||||
)
|
||||
|
||||
require (
|
||||
cel.dev/expr v0.19.0 // indirect
|
||||
cloud.google.com/go v0.116.0 // indirect
|
||||
cloud.google.com/go/auth v0.14.0 // indirect
|
||||
cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect
|
||||
cel.dev/expr v0.20.0 // indirect
|
||||
cloud.google.com/go v0.118.3 // indirect
|
||||
cloud.google.com/go/auth v0.15.0 // indirect
|
||||
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.6.0 // indirect
|
||||
cloud.google.com/go/iam v1.2.2 // indirect
|
||||
cloud.google.com/go/monitoring v1.21.2 // indirect
|
||||
cloud.google.com/go/storage v1.49.0 // indirect
|
||||
cloud.google.com/go/iam v1.4.1 // indirect
|
||||
cloud.google.com/go/monitoring v1.24.0 // indirect
|
||||
cloud.google.com/go/storage v1.50.0 // indirect
|
||||
dario.cat/mergo v1.0.1 // indirect
|
||||
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 // indirect
|
||||
github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20231105174938-2b5cbb29f3e2 // indirect
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect
|
||||
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
|
||||
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
|
||||
github.com/Azure/go-autorest/autorest v0.11.29 // indirect
|
||||
@@ -157,11 +150,11 @@ require (
|
||||
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
|
||||
github.com/Azure/go-autorest/logger v0.2.1 // indirect
|
||||
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3 // indirect
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect
|
||||
github.com/DataDog/zstd v1.5.5 // indirect
|
||||
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 // indirect
|
||||
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect
|
||||
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect
|
||||
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0 // indirect
|
||||
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.49.0 // indirect
|
||||
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.49.0 // indirect
|
||||
github.com/Intevation/gval v1.3.0 // indirect
|
||||
github.com/Intevation/jsonpath v0.2.1 // indirect
|
||||
github.com/MakeNowJust/heredoc v1.0.0 // indirect
|
||||
@@ -169,28 +162,40 @@ require (
|
||||
github.com/Masterminds/semver/v3 v3.3.0 // indirect
|
||||
github.com/Masterminds/squirrel v1.5.4 // indirect
|
||||
github.com/Microsoft/go-winio v0.6.2 // indirect
|
||||
github.com/Microsoft/hcsshim v0.12.9 // indirect
|
||||
github.com/ProtonMail/go-crypto v1.1.5 // indirect
|
||||
github.com/Microsoft/hcsshim v0.13.0 // indirect
|
||||
github.com/ProtonMail/go-crypto v1.1.6 // indirect
|
||||
github.com/VividCortex/ewma v1.2.0 // indirect
|
||||
github.com/agext/levenshtein v1.2.3 // indirect
|
||||
github.com/agnivade/levenshtein v1.2.1 // indirect
|
||||
github.com/alessio/shellescape v1.4.1 // indirect
|
||||
github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302 // indirect
|
||||
github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect
|
||||
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
|
||||
github.com/aquasecurity/jfather v0.0.8 // indirect
|
||||
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
|
||||
github.com/aws/aws-sdk-go v1.55.7 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/ebs v1.22.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
|
||||
github.com/blang/semver v3.5.1+incompatible // indirect
|
||||
github.com/blang/semver/v4 v4.0.0 // indirect
|
||||
github.com/briandowns/spinner v1.23.0 // indirect
|
||||
github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/chai2010/gettext-go v1.0.2 // indirect
|
||||
github.com/cloudflare/circl v1.6.0 // indirect
|
||||
github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect
|
||||
github.com/containerd/cgroups/v3 v3.0.3 // indirect
|
||||
github.com/cloudflare/circl v1.6.1 // indirect
|
||||
github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect
|
||||
github.com/containerd/cgroups/v3 v3.0.5 // indirect
|
||||
github.com/containerd/containerd v1.7.27 // indirect
|
||||
github.com/containerd/containerd/api v1.8.0 // indirect
|
||||
github.com/containerd/containerd/api v1.9.0 // indirect
|
||||
github.com/containerd/continuity v0.4.5 // indirect
|
||||
github.com/containerd/errdefs v1.0.0 // indirect
|
||||
github.com/containerd/errdefs/pkg v0.3.0 // indirect
|
||||
@@ -201,7 +206,7 @@ require (
|
||||
github.com/containerd/ttrpc v1.2.7 // indirect
|
||||
github.com/containerd/typeurl/v2 v2.2.3 // indirect
|
||||
github.com/cpuguy83/dockercfg v0.3.2 // indirect
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
|
||||
github.com/cyberphone/json-canonicalization v0.0.0-20231011164504-785e29786b46 // indirect
|
||||
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
@@ -210,19 +215,21 @@ require (
|
||||
github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7 // indirect
|
||||
github.com/dlclark/regexp2 v1.4.0 // indirect
|
||||
github.com/docker/distribution v2.8.3+incompatible // indirect
|
||||
github.com/docker/docker-credential-helpers v0.8.2 // indirect
|
||||
github.com/docker/docker-credential-helpers v0.9.3 // indirect
|
||||
github.com/docker/go-metrics v0.0.1 // indirect
|
||||
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 // indirect
|
||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
|
||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||
github.com/ebitengine/purego v0.8.2 // indirect
|
||||
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
|
||||
github.com/emirpasic/gods v1.18.1 // indirect
|
||||
github.com/envoyproxy/go-control-plane v0.13.1 // indirect
|
||||
github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect
|
||||
github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect
|
||||
github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect
|
||||
github.com/evanphx/json-patch v5.9.0+incompatible // indirect
|
||||
github.com/evanphx/json-patch/v5 v5.6.0 // indirect
|
||||
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
|
||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||
github.com/fsnotify/fsnotify v1.8.0 // indirect
|
||||
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
||||
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
|
||||
github.com/go-chi/chi v4.1.2+incompatible // indirect
|
||||
github.com/go-errors/errors v1.4.2 // indirect
|
||||
@@ -235,33 +242,37 @@ require (
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/go-ole/go-ole v1.3.0 // indirect
|
||||
github.com/go-openapi/analysis v0.23.0 // indirect
|
||||
github.com/go-openapi/errors v0.22.0 // indirect
|
||||
github.com/go-openapi/errors v0.22.1 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.21.0 // indirect
|
||||
github.com/go-openapi/jsonreference v0.21.0 // indirect
|
||||
github.com/go-openapi/loads v0.22.0 // indirect
|
||||
github.com/go-openapi/runtime v0.28.0 // indirect
|
||||
github.com/go-openapi/spec v0.21.0 // indirect
|
||||
github.com/go-openapi/swag v0.23.0 // indirect
|
||||
github.com/go-openapi/strfmt v0.23.0 // indirect
|
||||
github.com/go-openapi/swag v0.23.1 // indirect
|
||||
github.com/go-openapi/validate v0.24.0 // indirect
|
||||
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
|
||||
github.com/gobwas/glob v0.2.3 // indirect
|
||||
github.com/goccy/go-yaml v1.15.23 // indirect
|
||||
github.com/gofrs/uuid v4.3.1+incompatible // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
|
||||
github.com/golang/protobuf v1.5.4 // indirect
|
||||
github.com/golang/snappy v0.0.4 // indirect
|
||||
github.com/google/btree v1.1.2 // indirect
|
||||
github.com/google/btree v1.1.3 // indirect
|
||||
github.com/google/certificate-transparency-go v1.1.8 // indirect
|
||||
github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect
|
||||
github.com/google/gnostic-models v0.6.9 // indirect
|
||||
github.com/google/go-cmp v0.7.0 // indirect
|
||||
github.com/google/go-github/v31 v31.0.0 // indirect
|
||||
github.com/google/go-querystring v1.1.0 // indirect
|
||||
github.com/google/gofuzz v1.2.0 // indirect
|
||||
github.com/google/s2a-go v0.1.9 // indirect
|
||||
github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 // indirect
|
||||
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect
|
||||
github.com/google/subcommands v1.2.0 // indirect
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect
|
||||
github.com/googleapis/gax-go/v2 v2.14.1 // indirect
|
||||
github.com/gorilla/mux v1.8.1 // indirect
|
||||
github.com/gorilla/websocket v1.5.0 // indirect
|
||||
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
|
||||
github.com/gosuri/uitable v0.0.4 // indirect
|
||||
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
|
||||
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||
@@ -278,7 +289,8 @@ require (
|
||||
github.com/josharian/intern v1.0.0 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/kevinburke/ssh_config v1.2.0 // indirect
|
||||
github.com/klauspost/compress v1.17.11 // indirect
|
||||
github.com/klauspost/compress v1.18.0 // indirect
|
||||
github.com/knqyf263/labeler v0.0.0-20200423181506-7a6e545148c3 // indirect
|
||||
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect
|
||||
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
|
||||
github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec // indirect
|
||||
@@ -286,8 +298,8 @@ require (
|
||||
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
|
||||
github.com/lufia/plan9stats v0.0.0-20240226150601-1dcf7310316a // indirect
|
||||
github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 // indirect
|
||||
github.com/magiconair/properties v1.8.9 // indirect
|
||||
github.com/mailru/easyjson v0.7.7 // indirect
|
||||
github.com/magiconair/properties v1.8.10 // indirect
|
||||
github.com/mailru/easyjson v0.9.0 // indirect
|
||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.16 // indirect
|
||||
@@ -296,13 +308,15 @@ require (
|
||||
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
|
||||
github.com/mitchellh/reflectwalk v1.0.2 // indirect
|
||||
github.com/moby/docker-image-spec v1.3.1 // indirect
|
||||
github.com/moby/go-archive v0.1.0 // indirect
|
||||
github.com/moby/locker v1.0.1 // indirect
|
||||
github.com/moby/patternmatcher v0.6.0 // indirect
|
||||
github.com/moby/spdystream v0.5.0 // indirect
|
||||
github.com/moby/sys/atomicwriter v0.1.0 // indirect
|
||||
github.com/moby/sys/mountinfo v0.7.2 // indirect
|
||||
github.com/moby/sys/sequential v0.6.0 // indirect
|
||||
github.com/moby/sys/signal v0.7.1 // indirect
|
||||
github.com/moby/sys/user v0.3.0 // indirect
|
||||
github.com/moby/sys/user v0.4.0 // indirect
|
||||
github.com/moby/sys/userns v0.1.0 // indirect
|
||||
github.com/moby/term v0.5.0 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
@@ -314,10 +328,13 @@ require (
|
||||
github.com/ncruces/go-strftime v0.1.9 // indirect
|
||||
github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481 // indirect
|
||||
github.com/oklog/ulid v1.3.1 // indirect
|
||||
github.com/opencontainers/runtime-spec v1.2.0 // indirect
|
||||
github.com/opencontainers/selinux v1.11.1 // indirect
|
||||
github.com/oklog/ulid/v2 v2.1.0 // indirect
|
||||
github.com/opencontainers/runtime-spec v1.2.1 // indirect
|
||||
github.com/opencontainers/selinux v1.12.0 // indirect
|
||||
github.com/opentracing/opentracing-go v1.2.0 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
|
||||
github.com/owenrumney/squealer v1.2.11 // indirect
|
||||
github.com/pelletier/go-toml v1.9.5 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
|
||||
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
|
||||
github.com/pjbgf/sha1cd v0.3.2 // indirect
|
||||
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
|
||||
@@ -325,7 +342,7 @@ require (
|
||||
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
||||
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
|
||||
github.com/prometheus/client_golang v1.21.0 // indirect
|
||||
github.com/prometheus/client_golang v1.22.0 // indirect
|
||||
github.com/prometheus/client_model v0.6.1 // indirect
|
||||
github.com/prometheus/common v0.62.0 // indirect
|
||||
github.com/prometheus/procfs v0.15.1 // indirect
|
||||
@@ -335,17 +352,21 @@ require (
|
||||
github.com/rubenv/sql-migrate v1.7.1 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
github.com/sagikazarmark/locafero v0.7.0 // indirect
|
||||
github.com/samber/oops v1.16.1 // indirect
|
||||
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect
|
||||
github.com/sassoftware/relic v7.2.1+incompatible // indirect
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
|
||||
github.com/shibumi/go-pathspec v1.3.0 // indirect
|
||||
github.com/shirou/gopsutil/v4 v4.25.1 // indirect
|
||||
github.com/shopspring/decimal v1.4.0 // indirect
|
||||
github.com/sigstore/cosign/v2 v2.2.4 // indirect
|
||||
github.com/sigstore/sigstore v1.8.12 // indirect
|
||||
github.com/sigstore/protobuf-specs v0.4.1 // indirect
|
||||
github.com/sigstore/sigstore v1.9.1 // indirect
|
||||
github.com/sigstore/timestamp-authority v1.2.2 // indirect
|
||||
github.com/skeema/knownhosts v1.3.1 // indirect
|
||||
github.com/sourcegraph/conc v0.3.0 // indirect
|
||||
github.com/spf13/afero v1.12.0 // indirect
|
||||
github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect
|
||||
github.com/stretchr/objx v0.5.2 // indirect
|
||||
github.com/subosito/gotenv v1.6.0 // indirect
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
|
||||
@@ -354,10 +375,11 @@ require (
|
||||
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
|
||||
github.com/tklauser/go-sysconf v0.3.13 // indirect
|
||||
github.com/tklauser/numcpus v0.7.0 // indirect
|
||||
github.com/tonglil/versioning v0.0.0-20170205083536-8b2a4334bd1d // indirect
|
||||
github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 // indirect
|
||||
github.com/transparency-dev/merkle v0.0.2 // indirect
|
||||
github.com/ulikunitz/xz v0.5.12 // indirect
|
||||
github.com/vbatts/tar-split v0.11.6 // indirect
|
||||
github.com/vbatts/tar-split v0.12.1 // indirect
|
||||
github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect
|
||||
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
|
||||
github.com/x448/float16 v0.8.4 // indirect
|
||||
@@ -368,80 +390,57 @@ require (
|
||||
github.com/yashtewari/glob-intersection v0.2.0 // indirect
|
||||
github.com/yuin/gopher-lua v1.1.1 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
||||
github.com/zeebo/errs v1.4.0 // indirect
|
||||
go.mongodb.org/mongo-driver v1.14.0 // indirect
|
||||
go.opencensus.io v0.24.0 // indirect
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
||||
go.opentelemetry.io/contrib/detectors/gcp v1.32.0 // indirect
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 // indirect
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect
|
||||
go.opentelemetry.io/contrib/detectors/gcp v1.34.0 // indirect
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect
|
||||
go.opentelemetry.io/otel v1.35.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.35.0 // indirect
|
||||
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
|
||||
go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect
|
||||
go.opentelemetry.io/otel/sdk v1.35.0 // indirect
|
||||
go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.35.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/zap v1.27.0 // indirect
|
||||
golang.org/x/oauth2 v0.26.0 // indirect
|
||||
golang.org/x/sys v0.31.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect
|
||||
golang.org/x/oauth2 v0.30.0 // indirect
|
||||
golang.org/x/sys v0.33.0 // indirect
|
||||
golang.org/x/telemetry v0.0.0-20240522233618-39ace7a40ae7 // indirect
|
||||
golang.org/x/time v0.10.0 // indirect
|
||||
golang.org/x/tools v0.29.0 // indirect
|
||||
google.golang.org/api v0.218.0 // indirect
|
||||
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect
|
||||
google.golang.org/grpc v1.70.0 // indirect
|
||||
golang.org/x/time v0.11.0 // indirect
|
||||
golang.org/x/tools v0.33.0 // indirect
|
||||
google.golang.org/api v0.228.0 // indirect
|
||||
google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250313205543-e70fdf4c4cb4 // indirect
|
||||
google.golang.org/grpc v1.72.0 // indirect
|
||||
gopkg.in/cheggaaa/pb.v1 v1.0.28 // indirect
|
||||
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
gopkg.in/warnings.v0 v0.1.2 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
k8s.io/apiextensions-apiserver v0.32.2 // indirect
|
||||
k8s.io/apimachinery v0.32.3 // indirect
|
||||
k8s.io/apiserver v0.32.2 // indirect
|
||||
k8s.io/cli-runtime v0.32.3 // indirect
|
||||
k8s.io/client-go v0.32.3 // indirect
|
||||
k8s.io/component-base v0.32.3 // indirect
|
||||
k8s.io/apimachinery v0.33.1 // indirect
|
||||
k8s.io/apiserver v0.32.3 // indirect
|
||||
k8s.io/cli-runtime v0.33.1 // indirect
|
||||
k8s.io/client-go v0.33.1 // indirect
|
||||
k8s.io/component-base v0.33.1 // indirect
|
||||
k8s.io/klog/v2 v2.130.1 // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
|
||||
k8s.io/kubectl v0.32.3 // indirect
|
||||
modernc.org/libc v1.61.13 // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
|
||||
k8s.io/kubectl v0.33.1 // indirect
|
||||
modernc.org/libc v1.62.1 // indirect
|
||||
modernc.org/mathutil v1.7.1 // indirect
|
||||
modernc.org/memory v1.8.2 // indirect
|
||||
modernc.org/memory v1.9.1 // indirect
|
||||
mvdan.cc/sh/v3 v3.11.0 // indirect
|
||||
oras.land/oras-go v1.2.5 // indirect
|
||||
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
|
||||
sigs.k8s.io/kustomize/api v0.18.0 // indirect
|
||||
sigs.k8s.io/kustomize/kyaml v0.18.1 // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/alessio/shellescape v1.4.1 // indirect
|
||||
github.com/aws/aws-sdk-go v1.55.6 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/ebs v1.22.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.33.18 // indirect
|
||||
github.com/ebitengine/purego v0.8.2 // indirect
|
||||
github.com/evanphx/json-patch/v5 v5.6.0 // indirect
|
||||
github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
|
||||
github.com/google/go-github/v31 v31.0.0 // indirect
|
||||
github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 // indirect
|
||||
github.com/google/subcommands v1.2.0 // indirect
|
||||
github.com/knqyf263/labeler v0.0.0-20200423181506-7a6e545148c3 // indirect
|
||||
github.com/oklog/ulid/v2 v2.1.0 // indirect
|
||||
github.com/pelletier/go-toml v1.9.5 // indirect
|
||||
github.com/samber/oops v1.15.0 // indirect
|
||||
github.com/shirou/gopsutil/v4 v4.25.1 // indirect
|
||||
github.com/tonglil/versioning v0.0.0-20170205083536-8b2a4334bd1d // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
sigs.k8s.io/kind v0.19.0 // indirect
|
||||
sigs.k8s.io/kustomize/api v0.19.0 // indirect
|
||||
sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect
|
||||
sigs.k8s.io/randfill v1.0.0 // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
|
||||
sigs.k8s.io/yaml v1.4.0 // indirect
|
||||
)
|
||||
|
||||
tool (
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apiVersion: v2
|
||||
name: trivy
|
||||
version: 0.13.0
|
||||
appVersion: 0.61.0
|
||||
version: 0.14.1
|
||||
appVersion: 0.62.1
|
||||
description: Trivy helm chart
|
||||
keywords:
|
||||
- scanner
|
||||
|
||||
@@ -60,9 +60,10 @@ func initDB(t *testing.T) string {
|
||||
defer dbtest.Close()
|
||||
|
||||
err = metadata.NewClient(db.Dir(cacheDir)).Update(metadata.Metadata{
|
||||
Version: db.SchemaVersion,
|
||||
NextUpdate: time.Now().Add(24 * time.Hour),
|
||||
UpdatedAt: time.Now(),
|
||||
Version: db.SchemaVersion,
|
||||
NextUpdate: time.Now().Add(24 * time.Hour),
|
||||
UpdatedAt: time.Now(),
|
||||
DownloadedAt: time.Now(),
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -153,6 +154,9 @@ func readReport(t *testing.T, filePath string) types.Report {
|
||||
// We don't compare repo tags because the archive doesn't support it
|
||||
report.Metadata.RepoTags = nil
|
||||
report.Metadata.RepoDigests = nil
|
||||
for i := range report.Metadata.Layers {
|
||||
report.Metadata.Layers[i].Digest = ""
|
||||
}
|
||||
|
||||
for i, result := range report.Results {
|
||||
for j := range result.Vulnerabilities {
|
||||
@@ -301,6 +305,7 @@ func compareReports(t *testing.T, wantFile, gotFile string, override func(t *tes
|
||||
if override != nil {
|
||||
override(t, &want, &got)
|
||||
}
|
||||
|
||||
assert.Equal(t, want, got)
|
||||
}
|
||||
|
||||
|
||||
@@ -145,6 +145,15 @@ func TestRepository(t *testing.T) {
|
||||
},
|
||||
golden: "testdata/pnpm.json.golden",
|
||||
},
|
||||
{
|
||||
name: "bun",
|
||||
args: args{
|
||||
scanner: types.VulnerabilityScanner,
|
||||
input: "testdata/fixtures/repo/bun",
|
||||
listAllPkgs: true,
|
||||
},
|
||||
golden: "testdata/bun.json.golden",
|
||||
},
|
||||
{
|
||||
name: "pip",
|
||||
args: args{
|
||||
@@ -286,6 +295,15 @@ func TestRepository(t *testing.T) {
|
||||
},
|
||||
golden: "testdata/composer.lock.json.golden",
|
||||
},
|
||||
{
|
||||
name: "cargo.lock",
|
||||
args: args{
|
||||
scanner: types.VulnerabilityScanner,
|
||||
listAllPkgs: true,
|
||||
input: "testdata/fixtures/repo/cargo",
|
||||
},
|
||||
golden: "testdata/cargo.lock.json.golden",
|
||||
},
|
||||
{
|
||||
name: "multiple lockfiles",
|
||||
args: args{
|
||||
|
||||
@@ -47,6 +47,10 @@ func TestSBOM(t *testing.T) {
|
||||
want.Results[0].Vulnerabilities[0].PkgIdentifier.BOMRef = "pkg:rpm/centos/bash@4.2.46-31.el7?arch=x86_64&distro=centos-7.6.1810"
|
||||
want.Results[0].Vulnerabilities[1].PkgIdentifier.BOMRef = "pkg:rpm/centos/openssl-libs@1.0.2k-16.el7?arch=x86_64&epoch=1&distro=centos-7.6.1810"
|
||||
want.Results[0].Vulnerabilities[2].PkgIdentifier.BOMRef = "pkg:rpm/centos/openssl-libs@1.0.2k-16.el7?arch=x86_64&epoch=1&distro=centos-7.6.1810"
|
||||
|
||||
// SBOM file doesn't contain info about layers
|
||||
want.Metadata.Size = 0
|
||||
want.Metadata.Layers = nil
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -96,6 +100,10 @@ func TestSBOM(t *testing.T) {
|
||||
want.Results[0].Vulnerabilities[0].PkgIdentifier.BOMRef = "pkg:rpm/centos/bash@4.2.46-31.el7?arch=x86_64&distro=centos-7.6.1810"
|
||||
want.Results[0].Vulnerabilities[1].PkgIdentifier.BOMRef = "pkg:rpm/centos/openssl-libs@1.0.2k-16.el7?arch=x86_64&epoch=1&distro=centos-7.6.1810"
|
||||
want.Results[0].Vulnerabilities[2].PkgIdentifier.BOMRef = "pkg:rpm/centos/openssl-libs@1.0.2k-16.el7?arch=x86_64&epoch=1&distro=centos-7.6.1810"
|
||||
|
||||
// SBOM file doesn't contain info about layers
|
||||
want.Metadata.Size = 0
|
||||
want.Metadata.Layers = nil
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -112,6 +120,10 @@ func TestSBOM(t *testing.T) {
|
||||
|
||||
require.Len(t, got.Results, 1)
|
||||
want.Results[0].Target = "testdata/fixtures/sbom/centos-7-spdx.txt (centos 7.6.1810)"
|
||||
|
||||
// SBOM file doesn't contain info about layers
|
||||
want.Metadata.Size = 0
|
||||
want.Metadata.Layers = nil
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -128,6 +140,10 @@ func TestSBOM(t *testing.T) {
|
||||
|
||||
require.Len(t, got.Results, 1)
|
||||
want.Results[0].Target = "testdata/fixtures/sbom/centos-7-spdx.json (centos 7.6.1810)"
|
||||
|
||||
// SBOM file doesn't contain info about layers
|
||||
want.Metadata.Size = 0
|
||||
want.Metadata.Layers = nil
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
@@ -588,7 +588,7 @@ cache:
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
configPath := filepath.Join(t.TempDir(), "trivy.yaml")
|
||||
err := os.WriteFile(configPath, []byte(tt.configFile), 0600)
|
||||
err := os.WriteFile(configPath, []byte(tt.configFile), 0o600)
|
||||
require.NoError(t, err)
|
||||
|
||||
osArgs := []string{
|
||||
|
||||
10
integration/testdata/almalinux-8.json.golden
vendored
10
integration/testdata/almalinux-8.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/almalinux-8.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 204637184,
|
||||
"OS": {
|
||||
"Family": "alma",
|
||||
"Name": "8.5"
|
||||
@@ -44,7 +45,14 @@
|
||||
],
|
||||
"Image": "sha256:d38d2eac03bc19e080df596d6148863a0f8293f3a277a7524f378da79a1feb0f"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 204637184,
|
||||
"Digest": "sha256:a1f18d9dc5496c63197eb9a4f1d4bf5cc88c6a34f64f0fe11ea233070392ce48",
|
||||
"DiffID": "sha256:124d41c237c5e823577dda97e87cebaecce62d585c725d07e709ce410681de4d"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
10
integration/testdata/alpine-310.json.golden
vendored
10
integration/testdata/alpine-310.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/alpine-310.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 5843968,
|
||||
"OS": {
|
||||
"Family": "alpine",
|
||||
"Name": "3.10.2",
|
||||
@@ -46,7 +47,14 @@
|
||||
"Image": "sha256:06f4121dff4d0123ce11bd2e44f48da9ba9ddcd23ae376ea1f363f63ea0849b5",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 5843968,
|
||||
"Digest": "sha256:9d48c3bd43c520dc2784e868a780e976b207cbf493eaff8c6596eb871cbd9609",
|
||||
"DiffID": "sha256:03901b4a2ea88eeaad62dbe59b072b28b6efa00491962b8741081c5df50c65e0"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/alpine-39.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 5796352,
|
||||
"OS": {
|
||||
"Family": "alpine",
|
||||
"Name": "3.9.4",
|
||||
@@ -46,7 +47,14 @@
|
||||
"Image": "sha256:09f2bbe58e774849d74dc1391c2e01731896c745c4aba1ecf69a283bdb4b537a",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 5796352,
|
||||
"Digest": "sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10",
|
||||
"DiffID": "sha256:f1b5933fe4b5f49bbe8258745cf396afe07e625bdab3168e364daf7c956b6b81"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
@@ -60,7 +68,7 @@
|
||||
"PkgName": "musl",
|
||||
"PkgIdentifier": {
|
||||
"PURL": "pkg:apk/alpine/musl@1.1.20-r4?arch=x86_64\u0026distro=3.9.4",
|
||||
"UID": "d6abd271e71d3ce2"
|
||||
"UID": "aae058383ba5a25e"
|
||||
},
|
||||
"InstalledVersion": "1.1.20-r4",
|
||||
"FixedVersion": "1.1.20-r5",
|
||||
@@ -106,7 +114,7 @@
|
||||
"PkgName": "musl-utils",
|
||||
"PkgIdentifier": {
|
||||
"PURL": "pkg:apk/alpine/musl-utils@1.1.20-r4?arch=x86_64\u0026distro=3.9.4",
|
||||
"UID": "a35dd6cab4aabdf1"
|
||||
"UID": "4089d29c2d05b72d"
|
||||
},
|
||||
"InstalledVersion": "1.1.20-r4",
|
||||
"FixedVersion": "1.1.20-r5",
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/alpine-39.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 5796352,
|
||||
"OS": {
|
||||
"Family": "alpine",
|
||||
"Name": "3.9.4",
|
||||
@@ -46,7 +47,14 @@
|
||||
"Image": "sha256:09f2bbe58e774849d74dc1391c2e01731896c745c4aba1ecf69a283bdb4b537a",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 5796352,
|
||||
"Digest": "sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10",
|
||||
"DiffID": "sha256:f1b5933fe4b5f49bbe8258745cf396afe07e625bdab3168e364daf7c956b6b81"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
10
integration/testdata/alpine-39-skip.json.golden
vendored
10
integration/testdata/alpine-39-skip.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/alpine-39.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 5796352,
|
||||
"OS": {
|
||||
"Family": "none",
|
||||
"Name": ""
|
||||
@@ -45,6 +46,13 @@
|
||||
"Image": "sha256:09f2bbe58e774849d74dc1391c2e01731896c745c4aba1ecf69a283bdb4b537a",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 5796352,
|
||||
"Digest": "sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10",
|
||||
"DiffID": "sha256:f1b5933fe4b5f49bbe8258745cf396afe07e625bdab3168e364daf7c956b6b81"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
14
integration/testdata/alpine-39.json.golden
vendored
14
integration/testdata/alpine-39.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/alpine-39.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 5796352,
|
||||
"OS": {
|
||||
"Family": "alpine",
|
||||
"Name": "3.9.4",
|
||||
@@ -46,7 +47,14 @@
|
||||
"Image": "sha256:09f2bbe58e774849d74dc1391c2e01731896c745c4aba1ecf69a283bdb4b537a",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 5796352,
|
||||
"Digest": "sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10",
|
||||
"DiffID": "sha256:f1b5933fe4b5f49bbe8258745cf396afe07e625bdab3168e364daf7c956b6b81"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
@@ -372,7 +380,7 @@
|
||||
"PkgName": "musl",
|
||||
"PkgIdentifier": {
|
||||
"PURL": "pkg:apk/alpine/musl@1.1.20-r4?arch=x86_64\u0026distro=3.9.4",
|
||||
"UID": "d6abd271e71d3ce2"
|
||||
"UID": "aae058383ba5a25e"
|
||||
},
|
||||
"InstalledVersion": "1.1.20-r4",
|
||||
"FixedVersion": "1.1.20-r5",
|
||||
@@ -418,7 +426,7 @@
|
||||
"PkgName": "musl-utils",
|
||||
"PkgIdentifier": {
|
||||
"PURL": "pkg:apk/alpine/musl-utils@1.1.20-r4?arch=x86_64\u0026distro=3.9.4",
|
||||
"UID": "a35dd6cab4aabdf1"
|
||||
"UID": "4089d29c2d05b72d"
|
||||
},
|
||||
"InstalledVersion": "1.1.20-r4",
|
||||
"FixedVersion": "1.1.20-r5",
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/alpine-distroless.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 35812864,
|
||||
"OS": {
|
||||
"Family": "alpine",
|
||||
"Name": "3.16"
|
||||
@@ -41,7 +42,14 @@
|
||||
],
|
||||
"User": "65532"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 35812864,
|
||||
"Digest": "sha256:6c6f69aa25501b090c54c62a9c17e978064c2f1328f67a7ef88c81ce5f2d7983",
|
||||
"DiffID": "sha256:89da7cc836da4b53ab1ceb572576458c005e7e444b8bb79abda196668a2f0c92"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
10
integration/testdata/amazon-1.json.golden
vendored
10
integration/testdata/amazon-1.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/amazon-1.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 172655616,
|
||||
"OS": {
|
||||
"Family": "amazon",
|
||||
"Name": "AMI release 2018.03"
|
||||
@@ -45,7 +46,14 @@
|
||||
"Image": "sha256:8db654f611aca1693ac658bd981ee35e4b6517e6ef74fa608c4b3b3595a986c8",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 172655616,
|
||||
"Digest": "sha256:105ff6bf468b1422ad7c47ea9d63eae82f875c93310cb8d34551951e754ef43b",
|
||||
"DiffID": "sha256:984fe1509738f6f00f34d9be7398b07ebeb8b98dda077ff6be2cdb87111b73cf"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
10
integration/testdata/amazon-2.json.golden
vendored
10
integration/testdata/amazon-2.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/amazon-2.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 168852480,
|
||||
"OS": {
|
||||
"Family": "amazon",
|
||||
"Name": "2 (Karoo)"
|
||||
@@ -45,7 +46,14 @@
|
||||
"Image": "sha256:648b8b37f8b5087423bec7f4331271253f8aff63154761a67c22cd0c3ba2661b",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 168852480,
|
||||
"Digest": "sha256:72d97abdfae3b3c933ff41e39779cc72853d7bd9dc1e4800c5294d6715257799",
|
||||
"DiffID": "sha256:f387c8b346c85cae37abd1f1a63015acb69f593dc425d0269f57d1012c3a81f6"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
196
integration/testdata/bun.json.golden
vendored
Normal file
196
integration/testdata/bun.json.golden
vendored
Normal file
@@ -0,0 +1,196 @@
|
||||
{
|
||||
"SchemaVersion": 2,
|
||||
"CreatedAt": "2021-08-25T12:20:30.000000005Z",
|
||||
"ArtifactName": "testdata/fixtures/repo/bun",
|
||||
"ArtifactType": "repository",
|
||||
"Metadata": {
|
||||
"ImageConfig": {
|
||||
"architecture": "",
|
||||
"created": "0001-01-01T00:00:00Z",
|
||||
"os": "",
|
||||
"rootfs": {
|
||||
"type": "",
|
||||
"diff_ids": null
|
||||
},
|
||||
"config": {}
|
||||
}
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
"Target": "bun.lock",
|
||||
"Class": "lang-pkgs",
|
||||
"Type": "bun",
|
||||
"Packages": [
|
||||
{
|
||||
"ID": "jquery@3.3.1",
|
||||
"Name": "jquery",
|
||||
"Identifier": {
|
||||
"PURL": "pkg:npm/jquery@3.3.1",
|
||||
"UID": "996607b7a767641"
|
||||
},
|
||||
"Version": "3.3.1",
|
||||
"Relationship": "direct",
|
||||
"Layer": {},
|
||||
"Locations": [
|
||||
{
|
||||
"StartLine": 24,
|
||||
"EndLine": 24
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "typescript@5.8.3",
|
||||
"Name": "typescript",
|
||||
"Identifier": {
|
||||
"PURL": "pkg:npm/typescript@5.8.3",
|
||||
"UID": "dc420153a1d93546"
|
||||
},
|
||||
"Version": "5.8.3",
|
||||
"Relationship": "direct",
|
||||
"Layer": {},
|
||||
"Locations": [
|
||||
{
|
||||
"StartLine": 26,
|
||||
"EndLine": 26
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"Vulnerabilities": [
|
||||
{
|
||||
"VulnerabilityID": "CVE-2019-11358",
|
||||
"PkgID": "jquery@3.3.1",
|
||||
"PkgName": "jquery",
|
||||
"PkgIdentifier": {
|
||||
"PURL": "pkg:npm/jquery@3.3.1",
|
||||
"UID": "996607b7a767641"
|
||||
},
|
||||
"InstalledVersion": "3.3.1",
|
||||
"FixedVersion": "3.4.0",
|
||||
"Status": "fixed",
|
||||
"Layer": {},
|
||||
"SeveritySource": "ghsa",
|
||||
"PrimaryURL": "https://avd.aquasec.com/nvd/cve-2019-11358",
|
||||
"DataSource": {
|
||||
"ID": "ghsa",
|
||||
"Name": "GitHub Security Advisory Npm",
|
||||
"URL": "https://github.com/advisories?query=type%3Areviewed+ecosystem%3Anpm"
|
||||
},
|
||||
"Title": "jquery: Prototype pollution in object's prototype leading to denial of service, remote code execution, or property injection",
|
||||
"Description": "jQuery before 3.4.0, as used in Drupal, Backdrop CMS, and other products, mishandles jQuery.extend(true, {}, ...) because of Object.prototype pollution. If an unsanitized source object contained an enumerable __proto__ property, it could extend the native Object.prototype.",
|
||||
"Severity": "MEDIUM",
|
||||
"CweIDs": [
|
||||
"CWE-79"
|
||||
],
|
||||
"VendorSeverity": {
|
||||
"alma": 2,
|
||||
"amazon": 2,
|
||||
"arch-linux": 2,
|
||||
"ghsa": 2,
|
||||
"nodejs-security-wg": 2,
|
||||
"nvd": 2,
|
||||
"oracle-oval": 2,
|
||||
"redhat": 2,
|
||||
"ruby-advisory-db": 2,
|
||||
"ubuntu": 1
|
||||
},
|
||||
"CVSS": {
|
||||
"nvd": {
|
||||
"V2Vector": "AV:N/AC:M/Au:N/C:N/I:P/A:N",
|
||||
"V3Vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
|
||||
"V2Score": 4.3,
|
||||
"V3Score": 6.1
|
||||
},
|
||||
"redhat": {
|
||||
"V3Vector": "CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L",
|
||||
"V3Score": 5.6
|
||||
}
|
||||
},
|
||||
"References": [
|
||||
"http://lists.opensuse.org/opensuse-security-announce/2019-08/msg00006.html",
|
||||
"http://lists.opensuse.org/opensuse-security-announce/2019-08/msg00025.html",
|
||||
"http://packetstormsecurity.com/files/152787/dotCMS-5.1.1-Vulnerable-Dependencies.html",
|
||||
"http://packetstormsecurity.com/files/153237/RetireJS-CORS-Issue-Script-Execution.html",
|
||||
"http://packetstormsecurity.com/files/156743/OctoberCMS-Insecure-Dependencies.html",
|
||||
"http://seclists.org/fulldisclosure/2019/May/10",
|
||||
"http://seclists.org/fulldisclosure/2019/May/11",
|
||||
"http://seclists.org/fulldisclosure/2019/May/13",
|
||||
"http://www.openwall.com/lists/oss-security/2019/06/03/2",
|
||||
"http://www.securityfocus.com/bid/108023",
|
||||
"https://access.redhat.com/errata/RHBA-2019:1570",
|
||||
"https://access.redhat.com/errata/RHSA-2019:1456",
|
||||
"https://access.redhat.com/errata/RHSA-2019:2587",
|
||||
"https://access.redhat.com/errata/RHSA-2019:3023",
|
||||
"https://access.redhat.com/errata/RHSA-2019:3024",
|
||||
"https://access.redhat.com/security/cve/CVE-2019-11358",
|
||||
"https://backdropcms.org/security/backdrop-sa-core-2019-009",
|
||||
"https://blog.jquery.com/2019/04/10/jquery-3-4-0-released/",
|
||||
"https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-11358",
|
||||
"https://github.com/DanielRuf/snyk-js-jquery-174006?files=1",
|
||||
"https://github.com/advisories/GHSA-6c3j-c64m-qhgq",
|
||||
"https://github.com/jquery/jquery/commit/753d591aea698e57d6db58c9f722cd0808619b1b",
|
||||
"https://github.com/jquery/jquery/pull/4333",
|
||||
"https://github.com/rails/jquery-rails/blob/master/CHANGELOG.md#434",
|
||||
"https://hackerone.com/reports/454365",
|
||||
"https://kb.pulsesecure.net/articles/Pulse_Security_Advisories/SA44601",
|
||||
"https://linux.oracle.com/cve/CVE-2019-11358.html",
|
||||
"https://linux.oracle.com/errata/ELSA-2020-4847.html",
|
||||
"https://lists.apache.org/thread.html/08720ef215ee7ab3386c05a1a90a7d1c852bf0706f176a7816bf65fc@%3Ccommits.airflow.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/519eb0fd45642dcecd9ff74cb3e71c20a4753f7d82e2f07864b5108f@%3Cdev.drill.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/5928aa293e39d248266472210c50f176cac1535220f2486e6a7fa844@%3Ccommits.airflow.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/6097cdbd6f0a337bedd9bb5cc441b2d525ff002a96531de367e4259f@%3Ccommits.airflow.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/88fb0362fd40e5b605ea8149f63241537b8b6fb5bfa315391fc5cbb7@%3Ccommits.airflow.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/b0656d359c7d40ec9f39c8cc61bca66802ef9a2a12ee199f5b0c1442@%3Cdev.drill.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/b736d0784cf02f5a30fbb4c5902762a15ad6d47e17e2c5a17b7d6205@%3Ccommits.airflow.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/ba79cf1658741e9f146e4c59b50aee56656ea95d841d358d006c18b6@%3Ccommits.roller.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/bcce5a9c532b386c68dab2f6b3ce8b0cc9b950ec551766e76391caa3@%3Ccommits.nifi.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/f9bc3e55f4e28d1dcd1a69aae6d53e609a758e34d2869b4d798e13cc@%3Cissues.drill.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/r2041a75d3fc09dec55adfd95d598b38d22715303f65c997c054844c9@%3Cissues.flink.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/r2baacab6e0acb5a2092eb46ae04fd6c3e8277b4fd79b1ffb7f3254fa@%3Cissues.flink.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/r38f0d1aa3c923c22977fe7376508f030f22e22c1379fbb155bf29766@%3Cdev.syncope.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/r41b5bfe009c845f67d4f68948cc9419ac2d62e287804aafd72892b08@%3Cissues.flink.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/r7aac081cbddb6baa24b75e74abf0929bf309b176755a53e3ed810355@%3Cdev.flink.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/r7d64895cc4dff84d0becfc572b20c0e4bf9bfa7b10c6f5f73e783734@%3Cdev.storm.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/r7e8ebccb7c022e41295f6fdb7b971209b83702339f872ddd8cf8bf73@%3Cissues.flink.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/rac25da84ecdcd36f6de5ad0d255f4e967209bbbebddb285e231da37d@%3Cissues.flink.apache.org%3E",
|
||||
"https://lists.apache.org/thread.html/rca37935d661f4689cb4119f1b3b224413b22be161b678e6e6ce0c69b@%3Ccommits.nifi.apache.org%3E",
|
||||
"https://lists.debian.org/debian-lts-announce/2019/05/msg00006.html",
|
||||
"https://lists.debian.org/debian-lts-announce/2019/05/msg00029.html",
|
||||
"https://lists.debian.org/debian-lts-announce/2020/02/msg00024.html",
|
||||
"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/4UOAZIFCSZ3ENEFOR5IXX6NFAD3HV7FA/",
|
||||
"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/5IABSKTYZ5JUGL735UKGXL5YPRYOPUYI/",
|
||||
"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/KYH3OAGR2RTCHRA5NOKX2TES7SNQMWGO/",
|
||||
"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QV3PKZC3PQCO3273HAT76PAQZFBEO4KP/",
|
||||
"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/RLXRX23725JL366CNZGJZ7AQQB7LHQ6F/",
|
||||
"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/WZW27UCJ5CYFL4KFFFMYMIBNMIU2ALG5/",
|
||||
"https://nvd.nist.gov/vuln/detail/CVE-2019-11358",
|
||||
"https://seclists.org/bugtraq/2019/Apr/32",
|
||||
"https://seclists.org/bugtraq/2019/Jun/12",
|
||||
"https://seclists.org/bugtraq/2019/May/18",
|
||||
"https://security.netapp.com/advisory/ntap-20190919-0001/",
|
||||
"https://snyk.io/vuln/SNYK-JS-JQUERY-174006",
|
||||
"https://www.debian.org/security/2019/dsa-4434",
|
||||
"https://www.debian.org/security/2019/dsa-4460",
|
||||
"https://www.drupal.org/sa-core-2019-006",
|
||||
"https://www.oracle.com//security-alerts/cpujul2021.html",
|
||||
"https://www.oracle.com/security-alerts/cpuApr2021.html",
|
||||
"https://www.oracle.com/security-alerts/cpuapr2020.html",
|
||||
"https://www.oracle.com/security-alerts/cpujan2020.html",
|
||||
"https://www.oracle.com/security-alerts/cpujan2021.html",
|
||||
"https://www.oracle.com/security-alerts/cpujul2020.html",
|
||||
"https://www.oracle.com/security-alerts/cpuoct2020.html",
|
||||
"https://www.oracle.com/security-alerts/cpuoct2021.html",
|
||||
"https://www.oracle.com/technetwork/security-advisory/cpujul2019-5072835.html",
|
||||
"https://www.oracle.com/technetwork/security-advisory/cpuoct2019-5072832.html",
|
||||
"https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/",
|
||||
"https://www.synology.com/security/advisory/Synology_SA_19_19",
|
||||
"https://www.tenable.com/security/tns-2019-08",
|
||||
"https://www.tenable.com/security/tns-2020-02"
|
||||
],
|
||||
"PublishedDate": "2019-04-20T00:29:00Z",
|
||||
"LastModifiedDate": "2021-10-20T11:15:00Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/busybox-with-lockfile.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 1491456,
|
||||
"ImageID": "sha256:88702f6b6133bf06cc46af48437d0c0fc661239155548757c65916504a0e5eee",
|
||||
"DiffIDs": [
|
||||
"sha256:797ac4999b67d8c38a596919efa5b7b6a4a8fd5814cb8564efa482c5d8403e6d",
|
||||
@@ -45,7 +46,19 @@
|
||||
],
|
||||
"Image": "sha256:2fb6fc2d97e10c79983aa10e013824cc7fc8bae50630e32159821197dda95fe3"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 1459200,
|
||||
"Digest": "sha256:554879bb300427c7301c1cbdf266a7eba24a85b10d19f270b3d348b9eb9ca7df",
|
||||
"DiffID": "sha256:797ac4999b67d8c38a596919efa5b7b6a4a8fd5814cb8564efa482c5d8403e6d"
|
||||
},
|
||||
{
|
||||
"Size": 32256,
|
||||
"Digest": "sha256:fd2e3bc9bccc9c677572a542d020998389de94f127ca2c252ae627fc7c241cee",
|
||||
"DiffID": "sha256:ea6f6933da66090da8bfe233d68f083792a68f944cd2d8f9fbb52da795813a4f"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
165
integration/testdata/cargo.lock.json.golden
vendored
Normal file
165
integration/testdata/cargo.lock.json.golden
vendored
Normal file
@@ -0,0 +1,165 @@
|
||||
{
|
||||
"SchemaVersion": 2,
|
||||
"CreatedAt": "2021-08-25T12:20:30.000000005Z",
|
||||
"ArtifactName": "testdata/fixtures/repo/cargo",
|
||||
"ArtifactType": "repository",
|
||||
"Metadata": {
|
||||
"ImageConfig": {
|
||||
"architecture": "",
|
||||
"created": "0001-01-01T00:00:00Z",
|
||||
"os": "",
|
||||
"rootfs": {
|
||||
"type": "",
|
||||
"diff_ids": null
|
||||
},
|
||||
"config": {}
|
||||
}
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
"Target": "Cargo.lock",
|
||||
"Class": "lang-pkgs",
|
||||
"Type": "cargo",
|
||||
"Packages": [
|
||||
{
|
||||
"ID": "app@0.1.0",
|
||||
"Name": "app",
|
||||
"Identifier": {
|
||||
"PURL": "pkg:cargo/app@0.1.0",
|
||||
"UID": "a4ce1e2c46af5d56"
|
||||
},
|
||||
"Version": "0.1.0",
|
||||
"Relationship": "root",
|
||||
"DependsOn": [
|
||||
"memchr@1.0.2",
|
||||
"regex@1.7.3"
|
||||
],
|
||||
"Layer": {},
|
||||
"Locations": [
|
||||
{
|
||||
"StartLine": 14,
|
||||
"EndLine": 21
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "memchr@1.0.2",
|
||||
"Name": "memchr",
|
||||
"Identifier": {
|
||||
"PURL": "pkg:cargo/memchr@1.0.2",
|
||||
"UID": "427a73f0e28dc7df"
|
||||
},
|
||||
"Version": "1.0.2",
|
||||
"Relationship": "direct",
|
||||
"DependsOn": [
|
||||
"libc@0.2.171"
|
||||
],
|
||||
"Layer": {},
|
||||
"Locations": [
|
||||
{
|
||||
"StartLine": 29,
|
||||
"EndLine": 36
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "regex@1.7.3",
|
||||
"Name": "regex",
|
||||
"Identifier": {
|
||||
"PURL": "pkg:cargo/regex@1.7.3",
|
||||
"UID": "4633c68363763fad"
|
||||
},
|
||||
"Version": "1.7.3",
|
||||
"Relationship": "direct",
|
||||
"DependsOn": [
|
||||
"aho-corasick@0.7.20",
|
||||
"memchr@2.7.4",
|
||||
"regex-syntax@0.6.29"
|
||||
],
|
||||
"Layer": {},
|
||||
"Locations": [
|
||||
{
|
||||
"StartLine": 44,
|
||||
"EndLine": 53
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "aho-corasick@0.7.20",
|
||||
"Name": "aho-corasick",
|
||||
"Identifier": {
|
||||
"PURL": "pkg:cargo/aho-corasick@0.7.20",
|
||||
"UID": "994a6d343f8da957"
|
||||
},
|
||||
"Version": "0.7.20",
|
||||
"Indirect": true,
|
||||
"Relationship": "indirect",
|
||||
"DependsOn": [
|
||||
"memchr@2.7.4"
|
||||
],
|
||||
"Layer": {},
|
||||
"Locations": [
|
||||
{
|
||||
"StartLine": 5,
|
||||
"EndLine": 12
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "libc@0.2.171",
|
||||
"Name": "libc",
|
||||
"Identifier": {
|
||||
"PURL": "pkg:cargo/libc@0.2.171",
|
||||
"UID": "5395cf65d65d1f19"
|
||||
},
|
||||
"Version": "0.2.171",
|
||||
"Indirect": true,
|
||||
"Relationship": "indirect",
|
||||
"Layer": {},
|
||||
"Locations": [
|
||||
{
|
||||
"StartLine": 23,
|
||||
"EndLine": 27
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "memchr@2.7.4",
|
||||
"Name": "memchr",
|
||||
"Identifier": {
|
||||
"PURL": "pkg:cargo/memchr@2.7.4",
|
||||
"UID": "3f037d5da23e5826"
|
||||
},
|
||||
"Version": "2.7.4",
|
||||
"Indirect": true,
|
||||
"Relationship": "indirect",
|
||||
"Layer": {},
|
||||
"Locations": [
|
||||
{
|
||||
"StartLine": 38,
|
||||
"EndLine": 42
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"ID": "regex-syntax@0.6.29",
|
||||
"Name": "regex-syntax",
|
||||
"Identifier": {
|
||||
"PURL": "pkg:cargo/regex-syntax@0.6.29",
|
||||
"UID": "2c8dd93ce2f15b00"
|
||||
},
|
||||
"Version": "0.6.29",
|
||||
"Indirect": true,
|
||||
"Relationship": "indirect",
|
||||
"Layer": {},
|
||||
"Locations": [
|
||||
{
|
||||
"StartLine": 55,
|
||||
"EndLine": 59
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
10
integration/testdata/centos-6.json.golden
vendored
10
integration/testdata/centos-6.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/centos-6.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 201540608,
|
||||
"OS": {
|
||||
"Family": "centos",
|
||||
"Name": "6.10",
|
||||
@@ -67,7 +68,14 @@
|
||||
"org.label-schema.vendor": "CentOS"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 201540608,
|
||||
"Digest": "sha256:ff50d722b38227ec8f2bbf0cdbce428b66745077c173d8117d91376128fa532e",
|
||||
"DiffID": "sha256:af6bf1987c2eb07d73f33836b0d8fd825d7c785273526b077e46780e8b4b2ae9"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/centos-7.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 209451008,
|
||||
"OS": {
|
||||
"Family": "centos",
|
||||
"Name": "7.6.1810"
|
||||
@@ -57,7 +58,14 @@
|
||||
},
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 209451008,
|
||||
"Digest": "sha256:ac9208207adaac3a48e54a4dc6b49c69e78c3072d2b3add7efdabf814db2133b",
|
||||
"DiffID": "sha256:89169d87dbe2b72ba42bfbb3579c957322baca28e03a1e558076542a1c1b2b4a"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
10
integration/testdata/centos-7-medium.json.golden
vendored
10
integration/testdata/centos-7-medium.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/centos-7.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 209451008,
|
||||
"OS": {
|
||||
"Family": "centos",
|
||||
"Name": "7.6.1810"
|
||||
@@ -57,7 +58,14 @@
|
||||
},
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 209451008,
|
||||
"Digest": "sha256:ac9208207adaac3a48e54a4dc6b49c69e78c3072d2b3add7efdabf814db2133b",
|
||||
"DiffID": "sha256:89169d87dbe2b72ba42bfbb3579c957322baca28e03a1e558076542a1c1b2b4a"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
10
integration/testdata/centos-7.json.golden
vendored
10
integration/testdata/centos-7.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/centos-7.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 209451008,
|
||||
"OS": {
|
||||
"Family": "centos",
|
||||
"Name": "7.6.1810"
|
||||
@@ -57,7 +58,14 @@
|
||||
},
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 209451008,
|
||||
"Digest": "sha256:ac9208207adaac3a48e54a4dc6b49c69e78c3072d2b3add7efdabf814db2133b",
|
||||
"DiffID": "sha256:89169d87dbe2b72ba42bfbb3579c957322baca28e03a1e558076542a1c1b2b4a"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/debian-buster.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 119199744,
|
||||
"OS": {
|
||||
"Family": "debian",
|
||||
"Name": "10.1"
|
||||
@@ -45,7 +46,14 @@
|
||||
"Image": "sha256:5519bb349f72eef81944da56843c995b1b81ed67c8e7e48ac29dd6c543c1dd2d",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 119199744,
|
||||
"Digest": "sha256:4a56a430b2bac33260d6449e162017e2b23076c6411a17b46db67f5b84dde2bd",
|
||||
"DiffID": "sha256:78c1b9419976227e05be9d243b7fa583bea44a5258e52018b2af4cdfe23d148d"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
10
integration/testdata/debian-buster.json.golden
vendored
10
integration/testdata/debian-buster.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/debian-buster.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 119199744,
|
||||
"OS": {
|
||||
"Family": "debian",
|
||||
"Name": "10.1"
|
||||
@@ -45,7 +46,14 @@
|
||||
"Image": "sha256:5519bb349f72eef81944da56843c995b1b81ed67c8e7e48ac29dd6c543c1dd2d",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 119199744,
|
||||
"Digest": "sha256:4a56a430b2bac33260d6449e162017e2b23076c6411a17b46db67f5b84dde2bd",
|
||||
"DiffID": "sha256:78c1b9419976227e05be9d243b7fa583bea44a5258e52018b2af4cdfe23d148d"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
10
integration/testdata/debian-stretch.json.golden
vendored
10
integration/testdata/debian-stretch.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/debian-stretch.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 105582080,
|
||||
"OS": {
|
||||
"Family": "debian",
|
||||
"Name": "9.9"
|
||||
@@ -45,7 +46,14 @@
|
||||
"Image": "sha256:2ce0e924e5d43d66387e476478ce3c857b1eaae74b5c74693ed47b3502bbdc3e",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 105582080,
|
||||
"Digest": "sha256:9cc2ad81d40d54dcae7fa5e8e17d9c34e8bba3b7c2cc7e26fb22734608bda32e",
|
||||
"DiffID": "sha256:f73e7e79899a33b4b9b78da62efb71520844f8dd518f3c390e27bc3063bce307"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
15
integration/testdata/distroless-base.json.golden
vendored
15
integration/testdata/distroless-base.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/distroless-base.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 18503680,
|
||||
"OS": {
|
||||
"Family": "debian",
|
||||
"Name": "9.9"
|
||||
@@ -43,7 +44,19 @@
|
||||
"SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 3061760,
|
||||
"Digest": "sha256:e8d8785a314f385d3675a017f4e2df1707c528c06e7a7989663fdab4900bd8ff",
|
||||
"DiffID": "sha256:932da51564135c98a49a34a193d6cd363d8fa4184d957fde16c9d8527b3f3b02"
|
||||
},
|
||||
{
|
||||
"Size": 15441920,
|
||||
"Digest": "sha256:e005d777a298a3529b1c8cf890883359e050cc966089ce84fea4d17b111907db",
|
||||
"DiffID": "sha256:dffd9992ca398466a663c87c92cfea2a2db0ae0cf33fcb99da60eec52addbfc5"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/distroless-python27.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 48271360,
|
||||
"OS": {
|
||||
"Family": "debian",
|
||||
"Name": "9.9"
|
||||
@@ -60,7 +61,29 @@
|
||||
"SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 3061760,
|
||||
"Digest": "sha256:e8d8785a314f385d3675a017f4e2df1707c528c06e7a7989663fdab4900bd8ff",
|
||||
"DiffID": "sha256:932da51564135c98a49a34a193d6cd363d8fa4184d957fde16c9d8527b3f3b02"
|
||||
},
|
||||
{
|
||||
"Size": 15441920,
|
||||
"Digest": "sha256:e005d777a298a3529b1c8cf890883359e050cc966089ce84fea4d17b111907db",
|
||||
"DiffID": "sha256:dffd9992ca398466a663c87c92cfea2a2db0ae0cf33fcb99da60eec52addbfc5"
|
||||
},
|
||||
{
|
||||
"Size": 1966080,
|
||||
"Digest": "sha256:3e010093287c245d72a774033b4cddd6451a820bfbb1948c97798e1838858dd2",
|
||||
"DiffID": "sha256:6189abe095d53c1c9f2bfc8f50128ee876b9a5d10f9eda1564e5f5357d6ffe61"
|
||||
},
|
||||
{
|
||||
"Size": 27801600,
|
||||
"Digest": "sha256:0fedbb4c6207e6eebb78477eb49d550cafa9eccbf1079c57c026a36d727d684a",
|
||||
"DiffID": "sha256:e92caab8efcf25a24bea5213ab7e54d4a5f5f08644836bb2d296070b1ae1044e"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -21,46 +21,52 @@
|
||||
"Class": "config",
|
||||
"Type": "dockerfile",
|
||||
"MisconfSummary": {
|
||||
"Successes": 28,
|
||||
"Successes": 27,
|
||||
"Failures": 2
|
||||
},
|
||||
"Misconfigurations": [
|
||||
{
|
||||
"Type": "Dockerfile Security Check",
|
||||
"ID": "N/A",
|
||||
"Title": "N/A",
|
||||
"Description": "Rego module: data.user.bar",
|
||||
"ID": "AVD-BAR-0001",
|
||||
"AVDID": "AVD-BAR-0001",
|
||||
"Title": "Custom policy",
|
||||
"Description": "Custom policy for testing",
|
||||
"Message": "something bad: bar",
|
||||
"Namespace": "user.bar",
|
||||
"Query": "data.user.bar.deny",
|
||||
"Severity": "UNKNOWN",
|
||||
"Resolution": "Custom policy for testing",
|
||||
"Severity": "LOW",
|
||||
"Status": "FAIL",
|
||||
"Layer": {},
|
||||
"CauseMetadata": {
|
||||
"Provider": "Generic",
|
||||
"Service": "general",
|
||||
"Provider": "Custom",
|
||||
"Service": "custom",
|
||||
"Code": {
|
||||
"Lines": null
|
||||
}
|
||||
},
|
||||
"RenderedCause": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Type": "Dockerfile Security Check",
|
||||
"ID": "N/A",
|
||||
"Title": "N/A",
|
||||
"Description": "Rego module: data.user.foo",
|
||||
"ID": "AVD-FOO-0001",
|
||||
"AVDID": "AVD-FOO-0001",
|
||||
"Title": "Custom policy",
|
||||
"Description": "Custom policy for testing",
|
||||
"Message": "something bad: foo",
|
||||
"Namespace": "user.foo",
|
||||
"Query": "data.user.foo.deny",
|
||||
"Severity": "UNKNOWN",
|
||||
"Resolution": "Custom policy for testing",
|
||||
"Severity": "LOW",
|
||||
"Status": "FAIL",
|
||||
"Layer": {},
|
||||
"CauseMetadata": {
|
||||
"Provider": "Generic",
|
||||
"Service": "general",
|
||||
"Provider": "Custom",
|
||||
"Service": "custom",
|
||||
"Code": {
|
||||
"Lines": null
|
||||
}
|
||||
},
|
||||
"RenderedCause": {}
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
5
integration/testdata/dockerfile.json.golden
vendored
5
integration/testdata/dockerfile.json.golden
vendored
@@ -21,7 +21,7 @@
|
||||
"Class": "config",
|
||||
"Type": "dockerfile",
|
||||
"MisconfSummary": {
|
||||
"Successes": 27,
|
||||
"Successes": 26,
|
||||
"Failures": 1
|
||||
},
|
||||
"Misconfigurations": [
|
||||
@@ -48,7 +48,8 @@
|
||||
"Service": "general",
|
||||
"Code": {
|
||||
"Lines": null
|
||||
}
|
||||
},
|
||||
"RenderedCause": {}
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"Class": "config",
|
||||
"Type": "dockerfile",
|
||||
"MisconfSummary": {
|
||||
"Successes": 27,
|
||||
"Successes": 26,
|
||||
"Failures": 1
|
||||
},
|
||||
"Misconfigurations": [
|
||||
@@ -48,7 +48,8 @@
|
||||
"Service": "general",
|
||||
"Code": {
|
||||
"Lines": null
|
||||
}
|
||||
},
|
||||
"RenderedCause": {}
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
30
integration/testdata/fixtures/repo/bun/bun.lock
vendored
Normal file
30
integration/testdata/fixtures/repo/bun/bun.lock
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"lockfileVersion": 1,
|
||||
"workspaces": {
|
||||
"": {
|
||||
"name": "buntest",
|
||||
"dependencies": {
|
||||
"jquery": "3.3.1",
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/bun": "latest",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "^5",
|
||||
},
|
||||
},
|
||||
},
|
||||
"packages": {
|
||||
"@types/bun": ["@types/bun@1.2.14", "", { "dependencies": { "bun-types": "1.2.14" } }, "sha512-VsFZKs8oKHzI7zwvECiAJ5oSorWndIWEVhfbYqZd4HI/45kzW7PN2Rr5biAzvGvRuNmYLSANY+H59ubHq8xw7Q=="],
|
||||
|
||||
"@types/node": ["@types/node@22.15.21", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ=="],
|
||||
|
||||
"bun-types": ["bun-types@1.2.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-Kuh4Ub28ucMRWeiUUWMHsT9Wcbr4H3kLIO72RZZElSDxSu7vpetRvxIUDUaW6QtaIeixIpm7OXtNnZPf82EzwA=="],
|
||||
|
||||
"jquery": ["jquery@3.3.1", "", {}, "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg=="],
|
||||
|
||||
"typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="],
|
||||
|
||||
"undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
|
||||
}
|
||||
}
|
||||
81
integration/testdata/fixtures/repo/cargo/Cargo.lock
generated
vendored
Normal file
81
integration/testdata/fixtures/repo/cargo/Cargo.lock
generated
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "0.7.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
|
||||
dependencies = [
|
||||
"memchr 2.7.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "app"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"memchr 1.0.2",
|
||||
"regex",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.171"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "148fab2e51b4f1cfc66da2a7c32981d1d3c083a803978268bb11fe4b86925e7a"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr 2.7.4",
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.6.29"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||
dependencies = [
|
||||
"winapi-i686-pc-windows-gnu",
|
||||
"winapi-x86_64-pc-windows-gnu",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi-i686-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-x86_64-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
15
integration/testdata/fixtures/repo/cargo/Cargo.toml
vendored
Normal file
15
integration/testdata/fixtures/repo/cargo/Cargo.toml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
[package]
|
||||
name = "app"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
regex = "=1.7.3"
|
||||
|
||||
[target.'cfg(not(target_os = "windows"))'.dependencies]
|
||||
memchr = { version = "1.*", optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
winapi = "*"
|
||||
@@ -1,3 +1,17 @@
|
||||
# METADATA
|
||||
# title: Custom policy
|
||||
# description: Custom policy for testing
|
||||
# scope: package
|
||||
# schemas:
|
||||
# - input: schema["input"]
|
||||
# custom:
|
||||
# id: AVD-BAR-0001
|
||||
# avd_id: AVD-BAR-0001
|
||||
# provider: custom
|
||||
# service: custom
|
||||
# severity: LOW
|
||||
# short_code: custom-policy
|
||||
# recommended_action: Custom policy for testing
|
||||
package user.bar
|
||||
|
||||
deny[res] {
|
||||
|
||||
@@ -1,3 +1,17 @@
|
||||
# METADATA
|
||||
# title: Custom policy
|
||||
# description: Custom policy for testing
|
||||
# scope: package
|
||||
# schemas:
|
||||
# - input: schema["input"]
|
||||
# custom:
|
||||
# id: AVD-FOO-0001
|
||||
# avd_id: AVD-FOO-0001
|
||||
# provider: custom
|
||||
# service: custom
|
||||
# severity: LOW
|
||||
# short_code: custom-policy
|
||||
# recommended_action: Custom policy for testing
|
||||
package user.foo
|
||||
|
||||
deny[res] {
|
||||
|
||||
35
integration/testdata/fluentd-gems.json.golden
vendored
35
integration/testdata/fluentd-gems.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/fluentd-multiple-lockfiles.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 157340160,
|
||||
"OS": {
|
||||
"Family": "debian",
|
||||
"Name": "10.2"
|
||||
@@ -98,7 +99,39 @@
|
||||
"80/tcp": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 72479232,
|
||||
"Digest": "sha256:000eee12ec04cc914bf96e8f5dee7767510c2aca3816af6078bd9fbe3150920c",
|
||||
"DiffID": "sha256:831c5620387fb9efec59fc82a42b948546c6be601e3ab34a87108ecf852aa15f"
|
||||
},
|
||||
{
|
||||
"Size": 3584,
|
||||
"Digest": "sha256:aa8e216680f366acbe83d055382ae12208c341300fefd996fbebae49c59a14a5",
|
||||
"DiffID": "sha256:02874b2b269dea8dde0f7edb4c9906904dfe38a09de1a214f20c650cfb15c60e"
|
||||
},
|
||||
{
|
||||
"Size": 2048,
|
||||
"Digest": "sha256:2b92c5265c693f3aa71c011dabcfca1da81b3e5aef0530c2192fe9237a0725ed",
|
||||
"DiffID": "sha256:3752e1f6fd759c795c13aff2c93c081529366e27635ba6621e849b0f9cfc77f0"
|
||||
},
|
||||
{
|
||||
"Size": 84848640,
|
||||
"Digest": "sha256:a8877cad19f14a7044524a145ce33170085441a7922458017db1631dcd5f7602",
|
||||
"DiffID": "sha256:75e43d55939745950bc3f8fad56c5834617c4339f0f54755e69a0dd5372624e9"
|
||||
},
|
||||
{
|
||||
"Size": 3584,
|
||||
"Digest": "sha256:8c669d8f22e42bdc70ab962cd36f36c44d5299a04fbf8de62654eaf1aa70a01a",
|
||||
"DiffID": "sha256:788c00e2cfc8f2a018ae4344ccf0b2c226ebd756d7effd1ce50eea1a4252cd89"
|
||||
},
|
||||
{
|
||||
"Size": 3072,
|
||||
"Digest": "sha256:de335f1b3d0014660d2c8617930e431e23ee369075e14597c3fcad6903a81255",
|
||||
"DiffID": "sha256:25165eb51d15842f870f97873e0a58409d5e860e6108e3dd829bd10e484c0065"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -52,6 +52,10 @@
|
||||
{
|
||||
"name": "aquasecurity:trivy:SchemaVersion",
|
||||
"value": "2"
|
||||
},
|
||||
{
|
||||
"name": "aquasecurity:trivy:Size",
|
||||
"value": "157340160"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
592
integration/testdata/helm.json.golden
vendored
592
integration/testdata/helm.json.golden
vendored
@@ -22,7 +22,7 @@
|
||||
"Type": "helm",
|
||||
"MisconfSummary": {
|
||||
"Successes": 78,
|
||||
"Failures": 22
|
||||
"Failures": 18
|
||||
},
|
||||
"Misconfigurations": [
|
||||
{
|
||||
@@ -865,471 +865,6 @@
|
||||
"RenderedCause": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Type": "Helm Security Check",
|
||||
"ID": "KSV032",
|
||||
"AVDID": "AVD-KSV-0032",
|
||||
"Title": "All container images must start with the *.azurecr.io domain",
|
||||
"Description": "Containers should only use images from trusted registries.",
|
||||
"Message": "container nginx of deployment nginx-deployment in default namespace should restrict container image to your specific registry domain. For Azure any domain ending in 'azurecr.io'",
|
||||
"Namespace": "builtin.kubernetes.KSV032",
|
||||
"Query": "data.builtin.kubernetes.KSV032.deny",
|
||||
"Resolution": "Use images from trusted Azure registries.",
|
||||
"Severity": "MEDIUM",
|
||||
"PrimaryURL": "https://avd.aquasec.com/misconfig/ksv032",
|
||||
"References": [
|
||||
"https://avd.aquasec.com/misconfig/ksv032"
|
||||
],
|
||||
"Status": "FAIL",
|
||||
"Layer": {},
|
||||
"CauseMetadata": {
|
||||
"Provider": "Kubernetes",
|
||||
"Service": "general",
|
||||
"StartLine": 19,
|
||||
"EndLine": 22,
|
||||
"Code": {
|
||||
"Lines": [
|
||||
{
|
||||
"Number": 19,
|
||||
"Content": " - name: nginx",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " - \u001b[38;5;33mname\u001b[0m: nginx",
|
||||
"FirstCause": true,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 20,
|
||||
"Content": " image: nginx:1.14.2",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mimage\u001b[0m: nginx:1.14.2",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 21,
|
||||
"Content": " ports:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mports\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 22,
|
||||
"Content": " - containerPort: 80",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " - \u001b[38;5;33mcontainerPort\u001b[0m: \u001b[38;5;37m80\u001b[0m",
|
||||
"FirstCause": false,
|
||||
"LastCause": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"RenderedCause": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Type": "Helm Security Check",
|
||||
"ID": "KSV033",
|
||||
"AVDID": "AVD-KSV-0033",
|
||||
"Title": "All container images must start with a GCR domain",
|
||||
"Description": "Containers should only use images from trusted GCR registries.",
|
||||
"Message": "container nginx of deployment nginx-deployment in default namespace should restrict container image to your specific registry domain. See the full GCR list here: https://cloud.google.com/container-registry/docs/overview#registries",
|
||||
"Namespace": "builtin.kubernetes.KSV033",
|
||||
"Query": "data.builtin.kubernetes.KSV033.deny",
|
||||
"Resolution": "Use images from trusted GCR registries.",
|
||||
"Severity": "MEDIUM",
|
||||
"PrimaryURL": "https://avd.aquasec.com/misconfig/ksv033",
|
||||
"References": [
|
||||
"https://avd.aquasec.com/misconfig/ksv033"
|
||||
],
|
||||
"Status": "FAIL",
|
||||
"Layer": {},
|
||||
"CauseMetadata": {
|
||||
"Provider": "Kubernetes",
|
||||
"Service": "general",
|
||||
"StartLine": 19,
|
||||
"EndLine": 22,
|
||||
"Code": {
|
||||
"Lines": [
|
||||
{
|
||||
"Number": 19,
|
||||
"Content": " - name: nginx",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " - \u001b[38;5;33mname\u001b[0m: nginx",
|
||||
"FirstCause": true,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 20,
|
||||
"Content": " image: nginx:1.14.2",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mimage\u001b[0m: nginx:1.14.2",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 21,
|
||||
"Content": " ports:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mports\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 22,
|
||||
"Content": " - containerPort: 80",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " - \u001b[38;5;33mcontainerPort\u001b[0m: \u001b[38;5;37m80\u001b[0m",
|
||||
"FirstCause": false,
|
||||
"LastCause": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"RenderedCause": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Type": "Helm Security Check",
|
||||
"ID": "KSV035",
|
||||
"AVDID": "AVD-KSV-0035",
|
||||
"Title": "All container images must start with an ECR domain",
|
||||
"Description": "Container images from non-ECR registries should be forbidden.",
|
||||
"Message": "Container 'nginx' of Deployment 'nginx-deployment' should restrict images to own ECR repository. See the full ECR list here: https://docs.aws.amazon.com/general/latest/gr/ecr.html",
|
||||
"Namespace": "builtin.kubernetes.KSV035",
|
||||
"Query": "data.builtin.kubernetes.KSV035.deny",
|
||||
"Resolution": "Container image should be used from Amazon container Registry",
|
||||
"Severity": "MEDIUM",
|
||||
"PrimaryURL": "https://avd.aquasec.com/misconfig/ksv035",
|
||||
"References": [
|
||||
"https://avd.aquasec.com/misconfig/ksv035"
|
||||
],
|
||||
"Status": "FAIL",
|
||||
"Layer": {},
|
||||
"CauseMetadata": {
|
||||
"Provider": "Kubernetes",
|
||||
"Service": "general",
|
||||
"StartLine": 19,
|
||||
"EndLine": 22,
|
||||
"Code": {
|
||||
"Lines": [
|
||||
{
|
||||
"Number": 19,
|
||||
"Content": " - name: nginx",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " - \u001b[38;5;33mname\u001b[0m: nginx",
|
||||
"FirstCause": true,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 20,
|
||||
"Content": " image: nginx:1.14.2",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mimage\u001b[0m: nginx:1.14.2",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 21,
|
||||
"Content": " ports:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mports\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 22,
|
||||
"Content": " - containerPort: 80",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " - \u001b[38;5;33mcontainerPort\u001b[0m: \u001b[38;5;37m80\u001b[0m",
|
||||
"FirstCause": false,
|
||||
"LastCause": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"RenderedCause": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Type": "Helm Security Check",
|
||||
"ID": "KSV039",
|
||||
"AVDID": "AVD-KSV-0039",
|
||||
"Title": "limit range usage",
|
||||
"Description": "ensure limit range policy has configure in order to limit resource usage for namespaces or nodes",
|
||||
"Message": "limit range policy with a default request and limit, min and max request, for each container should be configure",
|
||||
"Namespace": "builtin.kubernetes.KSV039",
|
||||
"Query": "data.builtin.kubernetes.KSV039.deny",
|
||||
"Resolution": "create limit range policy with a default request and limit, min and max request, for each container.",
|
||||
"Severity": "LOW",
|
||||
"PrimaryURL": "https://avd.aquasec.com/misconfig/ksv039",
|
||||
"References": [
|
||||
"https://kubernetes.io/docs/tasks/administer-cluster/declare-network-policy/",
|
||||
"https://avd.aquasec.com/misconfig/ksv039"
|
||||
],
|
||||
"Status": "FAIL",
|
||||
"Layer": {},
|
||||
"CauseMetadata": {
|
||||
"Provider": "Kubernetes",
|
||||
"Service": "general",
|
||||
"StartLine": 9,
|
||||
"EndLine": 22,
|
||||
"Code": {
|
||||
"Lines": [
|
||||
{
|
||||
"Number": 9,
|
||||
"Content": " replicas: 3",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mreplicas\u001b[0m: \u001b[38;5;37m3",
|
||||
"FirstCause": true,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 10,
|
||||
"Content": " selector:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": "\u001b[0m \u001b[38;5;33mselector\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 11,
|
||||
"Content": " matchLabels:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mmatchLabels\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 12,
|
||||
"Content": " app: nginx",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mapp\u001b[0m: nginx",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 13,
|
||||
"Content": " template:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mtemplate\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 14,
|
||||
"Content": " metadata:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mmetadata\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 15,
|
||||
"Content": " labels:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mlabels\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 16,
|
||||
"Content": " app: nginx",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mapp\u001b[0m: nginx",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 17,
|
||||
"Content": " spec:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mspec\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": true
|
||||
},
|
||||
{
|
||||
"Number": 18,
|
||||
"Content": "",
|
||||
"IsCause": false,
|
||||
"Annotation": "",
|
||||
"Truncated": true,
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"RenderedCause": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Type": "Helm Security Check",
|
||||
"ID": "KSV040",
|
||||
"AVDID": "AVD-KSV-0040",
|
||||
"Title": "resource quota usage",
|
||||
"Description": "ensure resource quota policy has configure in order to limit aggregate resource usage within namespace",
|
||||
"Message": "resource quota policy with hard memory and cpu quota per namespace should be configure",
|
||||
"Namespace": "builtin.kubernetes.KSV040",
|
||||
"Query": "data.builtin.kubernetes.KSV040.deny",
|
||||
"Resolution": "create resource quota policy with mem and cpu quota per each namespace",
|
||||
"Severity": "LOW",
|
||||
"PrimaryURL": "https://avd.aquasec.com/misconfig/ksv040",
|
||||
"References": [
|
||||
"https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/",
|
||||
"https://avd.aquasec.com/misconfig/ksv040"
|
||||
],
|
||||
"Status": "FAIL",
|
||||
"Layer": {},
|
||||
"CauseMetadata": {
|
||||
"Provider": "Kubernetes",
|
||||
"Service": "general",
|
||||
"StartLine": 9,
|
||||
"EndLine": 22,
|
||||
"Code": {
|
||||
"Lines": [
|
||||
{
|
||||
"Number": 9,
|
||||
"Content": " replicas: 3",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mreplicas\u001b[0m: \u001b[38;5;37m3",
|
||||
"FirstCause": true,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 10,
|
||||
"Content": " selector:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": "\u001b[0m \u001b[38;5;33mselector\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 11,
|
||||
"Content": " matchLabels:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mmatchLabels\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 12,
|
||||
"Content": " app: nginx",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mapp\u001b[0m: nginx",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 13,
|
||||
"Content": " template:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mtemplate\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 14,
|
||||
"Content": " metadata:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mmetadata\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 15,
|
||||
"Content": " labels:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mlabels\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 16,
|
||||
"Content": " app: nginx",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mapp\u001b[0m: nginx",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 17,
|
||||
"Content": " spec:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mspec\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": true
|
||||
},
|
||||
{
|
||||
"Number": 18,
|
||||
"Content": "",
|
||||
"IsCause": false,
|
||||
"Annotation": "",
|
||||
"Truncated": true,
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"RenderedCause": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Type": "Helm Security Check",
|
||||
"ID": "KSV104",
|
||||
@@ -1579,8 +1114,131 @@
|
||||
"CauseMetadata": {
|
||||
"Provider": "Kubernetes",
|
||||
"Service": "general",
|
||||
"StartLine": 19,
|
||||
"EndLine": 22,
|
||||
"Code": {
|
||||
"Lines": null
|
||||
"Lines": [
|
||||
{
|
||||
"Number": 19,
|
||||
"Content": " - name: nginx",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " - \u001b[38;5;33mname\u001b[0m: nginx",
|
||||
"FirstCause": true,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 20,
|
||||
"Content": " image: nginx:1.14.2",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mimage\u001b[0m: nginx:1.14.2",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 21,
|
||||
"Content": " ports:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mports\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 22,
|
||||
"Content": " - containerPort: 80",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " - \u001b[38;5;33mcontainerPort\u001b[0m: \u001b[38;5;37m80\u001b[0m",
|
||||
"FirstCause": false,
|
||||
"LastCause": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"RenderedCause": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Type": "Helm Security Check",
|
||||
"ID": "KSV118",
|
||||
"AVDID": "AVD-KSV-0118",
|
||||
"Title": "Default security context configured",
|
||||
"Description": "Security context controls the allocation of security parameters for the pod/container/volume, ensuring the appropriate level of protection. Relying on default security context may expose vulnerabilities to potential attacks that rely on privileged access.",
|
||||
"Message": "deployment nginx-deployment in default namespace is using the default security context, which allows root privileges",
|
||||
"Namespace": "builtin.kubernetes.KSV118",
|
||||
"Query": "data.builtin.kubernetes.KSV118.deny",
|
||||
"Resolution": "To enhance security, it is strongly recommended not to rely on the default security context. Instead, it is advisable to explicitly define the required security parameters (such as runAsNonRoot, capabilities, readOnlyRootFilesystem, etc.) within the security context.",
|
||||
"Severity": "HIGH",
|
||||
"PrimaryURL": "https://avd.aquasec.com/misconfig/ksv118",
|
||||
"References": [
|
||||
"https://kubernetes.io/docs/tasks/configure-pod-container/security-context/",
|
||||
"https://avd.aquasec.com/misconfig/ksv118"
|
||||
],
|
||||
"Status": "FAIL",
|
||||
"Layer": {},
|
||||
"CauseMetadata": {
|
||||
"Provider": "Kubernetes",
|
||||
"Service": "general",
|
||||
"StartLine": 18,
|
||||
"EndLine": 22,
|
||||
"Code": {
|
||||
"Lines": [
|
||||
{
|
||||
"Number": 18,
|
||||
"Content": " containers:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mcontainers\u001b[0m:",
|
||||
"FirstCause": true,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 19,
|
||||
"Content": " - name: nginx",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " - \u001b[38;5;33mname\u001b[0m: nginx",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 20,
|
||||
"Content": " image: nginx:1.14.2",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mimage\u001b[0m: nginx:1.14.2",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 21,
|
||||
"Content": " ports:",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " \u001b[38;5;33mports\u001b[0m:",
|
||||
"FirstCause": false,
|
||||
"LastCause": false
|
||||
},
|
||||
{
|
||||
"Number": 22,
|
||||
"Content": " - containerPort: 80",
|
||||
"IsCause": true,
|
||||
"Annotation": "",
|
||||
"Truncated": false,
|
||||
"Highlighted": " - \u001b[38;5;33mcontainerPort\u001b[0m: \u001b[38;5;37m80\u001b[0m",
|
||||
"FirstCause": false,
|
||||
"LastCause": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"RenderedCause": {}
|
||||
}
|
||||
|
||||
1023
integration/testdata/helm_testchart.json.golden
vendored
1023
integration/testdata/helm_testchart.json.golden
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
16
integration/testdata/julia-spdx.json.golden
vendored
16
integration/testdata/julia-spdx.json.golden
vendored
@@ -3,7 +3,7 @@
|
||||
"dataLicense": "CC0-1.0",
|
||||
"SPDXID": "SPDXRef-DOCUMENT",
|
||||
"name": "testdata/fixtures/repo/julia",
|
||||
"documentNamespace": "http://trivy.dev/filesystem/testdata/fixtures/repo/julia-3ff14136-e09f-4df9-80ea-000000000006",
|
||||
"documentNamespace": "http://trivy.dev/filesystem/testdata/fixtures/repo/julia-3ff14136-e09f-4df9-80ea-000000000007",
|
||||
"creationInfo": {
|
||||
"creators": [
|
||||
"Organization: aquasecurity",
|
||||
@@ -35,7 +35,7 @@
|
||||
},
|
||||
{
|
||||
"name": "A",
|
||||
"SPDXID": "SPDXRef-Package-7784b00da0cb0cb0",
|
||||
"SPDXID": "SPDXRef-Package-761ce79b41d8f121",
|
||||
"versionInfo": "1.9.0",
|
||||
"supplier": "NOASSERTION",
|
||||
"downloadLocation": "NONE",
|
||||
@@ -68,7 +68,7 @@
|
||||
},
|
||||
{
|
||||
"name": "B",
|
||||
"SPDXID": "SPDXRef-Package-960543ac5c5f7e10",
|
||||
"SPDXID": "SPDXRef-Package-28f04edc422602a",
|
||||
"versionInfo": "1.9.0",
|
||||
"supplier": "NOASSERTION",
|
||||
"downloadLocation": "NONE",
|
||||
@@ -101,7 +101,7 @@
|
||||
},
|
||||
{
|
||||
"name": "B",
|
||||
"SPDXID": "SPDXRef-Package-a4705eb108e4f15c",
|
||||
"SPDXID": "SPDXRef-Package-6e0b0d1825d8c02c",
|
||||
"versionInfo": "1.9.0",
|
||||
"supplier": "NOASSERTION",
|
||||
"downloadLocation": "NONE",
|
||||
@@ -151,12 +151,12 @@
|
||||
"relationships": [
|
||||
{
|
||||
"spdxElementId": "SPDXRef-Application-18fc3597717a3e56",
|
||||
"relatedSpdxElement": "SPDXRef-Package-7784b00da0cb0cb0",
|
||||
"relatedSpdxElement": "SPDXRef-Package-6e0b0d1825d8c02c",
|
||||
"relationshipType": "CONTAINS"
|
||||
},
|
||||
{
|
||||
"spdxElementId": "SPDXRef-Application-18fc3597717a3e56",
|
||||
"relatedSpdxElement": "SPDXRef-Package-a4705eb108e4f15c",
|
||||
"relatedSpdxElement": "SPDXRef-Package-761ce79b41d8f121",
|
||||
"relationshipType": "CONTAINS"
|
||||
},
|
||||
{
|
||||
@@ -170,8 +170,8 @@
|
||||
"relationshipType": "CONTAINS"
|
||||
},
|
||||
{
|
||||
"spdxElementId": "SPDXRef-Package-7784b00da0cb0cb0",
|
||||
"relatedSpdxElement": "SPDXRef-Package-960543ac5c5f7e10",
|
||||
"spdxElementId": "SPDXRef-Package-761ce79b41d8f121",
|
||||
"relatedSpdxElement": "SPDXRef-Package-28f04edc422602a",
|
||||
"relationshipType": "DEPENDS_ON"
|
||||
}
|
||||
]
|
||||
|
||||
10
integration/testdata/mariner-1.0.json.golden
vendored
10
integration/testdata/mariner-1.0.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/mariner-1.0.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 177582080,
|
||||
"OS": {
|
||||
"Family": "cbl-mariner",
|
||||
"Name": "1.0"
|
||||
@@ -30,7 +31,14 @@
|
||||
]
|
||||
},
|
||||
"config": {}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 177582080,
|
||||
"Digest": "sha256:3df36548ffbf2fa7319966e038058a3d2a922880009e535202546a6b250b9d57",
|
||||
"DiffID": "sha256:4266328c97a194b2ca52ec83bc05496596303f5e9b244ffa99cf84763a487804"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/opensuse-leap-151.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 105899520,
|
||||
"OS": {
|
||||
"Family": "opensuse-leap",
|
||||
"Name": "15.1",
|
||||
@@ -53,7 +54,14 @@
|
||||
"org.opensuse.reference": "registry.opensuse.org/opensuse/leap:15.1.3.67"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 105899520,
|
||||
"Digest": "sha256:5c5a844f54abd051851758624820ae6a08a9d6ddffddaebbb335601c32608fb3",
|
||||
"DiffID": "sha256:f7f9ae80878a1c56d8f9ca977a5d844168f7afc0c1429feef9366e713eac06ff"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/opensuse-tumbleweed.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 115281408,
|
||||
"OS": {
|
||||
"Family": "opensuse-tumbleweed",
|
||||
"Name": "20240607"
|
||||
@@ -56,7 +57,14 @@
|
||||
"org.opensuse.reference": "registry.opensuse.org/opensuse/tumbleweed:20240607.30.45"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 115281408,
|
||||
"Digest": "sha256:427d16a14c45614f51357aeebee0dfe209a1cebfc044b3b724b6ea35663b3111",
|
||||
"DiffID": "sha256:7a335bdf2d91d6d158da360054aa7e477d708187d43fe9d0ac20144cdf90f763"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
10
integration/testdata/oraclelinux-8.json.golden
vendored
10
integration/testdata/oraclelinux-8.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/oraclelinux-8.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 416893952,
|
||||
"OS": {
|
||||
"Family": "oracle",
|
||||
"Name": "8.0"
|
||||
@@ -54,7 +55,14 @@
|
||||
"Image": "sha256:d2f0ba2a964f3d0b1935be99979b6930f8b989217ff6a5e6d4093e9df9baee11",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 416893952,
|
||||
"Digest": "sha256:e1b9aa33b064e76023cc29e9fac51bcebe62740c92ed38f09ba6205ddd9aa6f4",
|
||||
"DiffID": "sha256:91bac58a9ffae0dc2031e3f90d7bf04f66ccf019f180372152b0916d6e8a796f"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
10
integration/testdata/photon-30.json.golden
vendored
10
integration/testdata/photon-30.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/photon-30.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 34946560,
|
||||
"OS": {
|
||||
"Family": "photon",
|
||||
"Name": "3.0"
|
||||
@@ -55,7 +56,14 @@
|
||||
},
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 34946560,
|
||||
"Digest": "sha256:675aead3dff5e25094cb9f4d7cc64f05e9f04a3f3397d5d45bfbc1c8a99c3a73",
|
||||
"DiffID": "sha256:0f379947a276b7b051643960392fa66c2f0cb493bc1dcd471abb5545005949fd"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
10
integration/testdata/rockylinux-8.json.golden
vendored
10
integration/testdata/rockylinux-8.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/rockylinux-8.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 211280384,
|
||||
"OS": {
|
||||
"Family": "rocky",
|
||||
"Name": "8.5"
|
||||
@@ -44,7 +45,14 @@
|
||||
],
|
||||
"Image": "sha256:b3d7893772a2427ad53224d9db4c70be399de0a28c09804ac0c5cb203ab0244e"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 211280384,
|
||||
"Digest": "sha256:72a2451028f11c6927678e5f1bb8f35b4e723d3b342ec1a6980d7b5591cf81d6",
|
||||
"DiffID": "sha256:65dbea0a4b39709e0a2cc8624fd99478e9f302c0a5661d7676d6d3bd3cb6d181"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/sle-micro-rancher-5.4_ndb.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 709748736,
|
||||
"OS": {
|
||||
"Family": "slem",
|
||||
"Name": "5.4"
|
||||
@@ -57,7 +58,14 @@
|
||||
"org.suse.reference": "registry.suse.com/suse/sle-micro-rancher/5.4:%PKG_VERSION%-%RELEASE"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 709748736,
|
||||
"Digest": "sha256:832d9b8a90d142f11cf1b5d3f0b5d6c099be9b7af791b426138a4205b6ee78de",
|
||||
"DiffID": "sha256:7cdd3aec849d122d63dc83a5e1e2fb89b341c67b03e25979131ca335a463bb57"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/spring4shell-jre11.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 270418944,
|
||||
"OS": {
|
||||
"Family": "debian",
|
||||
"Name": "11.3"
|
||||
@@ -181,7 +182,54 @@
|
||||
"8080/tcp": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 83895296,
|
||||
"Digest": "sha256:c229119241af7b23b121052a1cae4c03e0a477a72ea6a7f463ad7623ff8f274b",
|
||||
"DiffID": "sha256:608f3a074261105f129d707e4d9ad3d41b5baa94887f092b7c2857f7274a2fce"
|
||||
},
|
||||
{
|
||||
"Size": 5177344,
|
||||
"Digest": "sha256:2f1dc05f270bad654ee17f1143c48586c188a72929a128d61fd8ae15905d7b00",
|
||||
"DiffID": "sha256:1f6e409d1c59c8e06608a024b82d50490313abc3b2ff93730e43135d5be0cd72"
|
||||
},
|
||||
{
|
||||
"Size": 3584,
|
||||
"Digest": "sha256:39b2c24c052eb115ae98ac01ea7a403af9bd678866744f0eea033d71d18f893b",
|
||||
"DiffID": "sha256:1f0e278ace87a84577de56c99e5c05c6af6f8b582d1eb8dfd7de7be4cf215775"
|
||||
},
|
||||
{
|
||||
"Size": 142896128,
|
||||
"Digest": "sha256:e94fd7d3bf7a9b78b61be8303cd35eb9da3f8d121cf572a3b8878cbf11e84818",
|
||||
"DiffID": "sha256:64272e9218cd019d57b84ac283aa35036cbd8c1dcface8c69f756088a0a13c45"
|
||||
},
|
||||
{
|
||||
"Size": 3072,
|
||||
"Digest": "sha256:b7bcef2d90f7acb11e94822db33bc4011654954b978fa35c89acac5f7b8d9620",
|
||||
"DiffID": "sha256:8e6776c643c1db15d540016171fe04137ee2a26c7d0b18bfebdcbd31c6b0d8b3"
|
||||
},
|
||||
{
|
||||
"Size": 18070016,
|
||||
"Digest": "sha256:ac3639dc6fd33e9eeead58a99c277cb06b8f69ba6a30fe7028e9677a67d94bd8",
|
||||
"DiffID": "sha256:0b201a611e5455d637c719d70eb5dd76fd4154bc4a5cf597d67ed2fb6647cc42"
|
||||
},
|
||||
{
|
||||
"Size": 1369088,
|
||||
"Digest": "sha256:7b4e8e3a75a692d7c80924f540916787b858aac41b99d55e2786a6edb9520c19",
|
||||
"DiffID": "sha256:19da2426772aaa344a242e474fd7906d272fc8ded6eef5b4e461a4aa0725d7e5"
|
||||
},
|
||||
{
|
||||
"Size": 2048,
|
||||
"Digest": "sha256:9177f8e1f9863beb4f13bfeb344734617e6c30d09ccbbaa4ff2830c2874a3c99",
|
||||
"DiffID": "sha256:1fdc094b0e85888d2204310083e3c09fff6a4daeecf22692aa6be5e8b4001f94"
|
||||
},
|
||||
{
|
||||
"Size": 19002368,
|
||||
"Digest": "sha256:b47862f824700e0ea830e568e989fba777d8223c1f8321c6256b0c965b9f61ee",
|
||||
"DiffID": "sha256:192960b65b1579403b36581de471fd2bd75a043b4743552f27ba16623f02c68f"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/spring4shell-jre8.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 236810240,
|
||||
"OS": {
|
||||
"Family": "debian",
|
||||
"Name": "11.3"
|
||||
@@ -181,7 +182,54 @@
|
||||
"8080/tcp": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 83895296,
|
||||
"Digest": "sha256:c229119241af7b23b121052a1cae4c03e0a477a72ea6a7f463ad7623ff8f274b",
|
||||
"DiffID": "sha256:608f3a074261105f129d707e4d9ad3d41b5baa94887f092b7c2857f7274a2fce"
|
||||
},
|
||||
{
|
||||
"Size": 5177344,
|
||||
"Digest": "sha256:2f1dc05f270bad654ee17f1143c48586c188a72929a128d61fd8ae15905d7b00",
|
||||
"DiffID": "sha256:1f6e409d1c59c8e06608a024b82d50490313abc3b2ff93730e43135d5be0cd72"
|
||||
},
|
||||
{
|
||||
"Size": 3584,
|
||||
"Digest": "sha256:69e68111de204b0c46a897b6ac5dd87c1e8aafae5aca100c679358a7a00513a8",
|
||||
"DiffID": "sha256:0e78b1e5673e8cc7c102fdda9e6b830b7dee2b29b178f34d25d9be59387e6950"
|
||||
},
|
||||
{
|
||||
"Size": 109289984,
|
||||
"Digest": "sha256:d7b564a873af313eb2dbcb1ed0d393c57543e3666bdedcbe5d75841d72b1f791",
|
||||
"DiffID": "sha256:ba40706eccba610401e4942e29f50bdf36807f8638942ce20805b359ae3ac1c1"
|
||||
},
|
||||
{
|
||||
"Size": 3072,
|
||||
"Digest": "sha256:3a1b5fc9d258d3604588adb7cdea42ffb34c49f273d1e81dd7d94dab6dc3c1e9",
|
||||
"DiffID": "sha256:053db4876c0df3df3294ee00e32e140b130ba33807d088750cb69b0e6fad158e"
|
||||
},
|
||||
{
|
||||
"Size": 18067968,
|
||||
"Digest": "sha256:59c0978ccb117247fd40d936973c40df89195f60466118c5acc6a55f8ba29f06",
|
||||
"DiffID": "sha256:85595543df2b1115a18284a8ef62d0b235c4bc29e3d33b55f89b54ee1eadf4c6"
|
||||
},
|
||||
{
|
||||
"Size": 1368576,
|
||||
"Digest": "sha256:457ac2ac52ffcc6b352c6a8b314f7bc364bf1f407506e3337da06955597433cf",
|
||||
"DiffID": "sha256:868d710aa4dc5fc4793508564fc45c991ed8d5f6ab3e4cf52bb856f29546f3d8"
|
||||
},
|
||||
{
|
||||
"Size": 2048,
|
||||
"Digest": "sha256:c87852fd4f78fd9aa07b6dc3ca5e6292a466246036c517fa6abf1532da9be38f",
|
||||
"DiffID": "sha256:77b2d158369254d5055183f5483f8b6661170857b61768d1d95d18c2ec1714b6"
|
||||
},
|
||||
{
|
||||
"Size": 19002368,
|
||||
"Digest": "sha256:cc44af318e91e6f9f9bf73793fa4f0639487613f46aa1f819b02b6e8fb5c6c07",
|
||||
"DiffID": "sha256:eb769943b91f10a0418f2fc3b4a4fde6c6293be60c37293fcc0fa319edaf27a5"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/ubi-7.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 215162880,
|
||||
"OS": {
|
||||
"Family": "redhat",
|
||||
"Name": "7.7"
|
||||
@@ -68,7 +69,19 @@
|
||||
},
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 215142400,
|
||||
"Digest": "sha256:7b1c937e0f6794db2535be6e4cb6d60a0b668ef78c2576611a3fb9c97a95ccdf",
|
||||
"DiffID": "sha256:4468e6d912c76d5b127f3554c3cd83b7dc07cce6107c6b916299ba76fa7d15ac"
|
||||
},
|
||||
{
|
||||
"Size": 20480,
|
||||
"Digest": "sha256:bff3b73cbcc496de1de4ea51df88b7249169d0b6eb7d677169eaf90b8a92240e",
|
||||
"DiffID": "sha256:ecb0311889b3478bc9b62660fa9391d5ebf8da4c6ae143cb33434873668f9e36"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
15
integration/testdata/ubi-7.json.golden
vendored
15
integration/testdata/ubi-7.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/ubi-7.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 215162880,
|
||||
"OS": {
|
||||
"Family": "redhat",
|
||||
"Name": "7.7"
|
||||
@@ -68,7 +69,19 @@
|
||||
},
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 215142400,
|
||||
"Digest": "sha256:7b1c937e0f6794db2535be6e4cb6d60a0b668ef78c2576611a3fb9c97a95ccdf",
|
||||
"DiffID": "sha256:4468e6d912c76d5b127f3554c3cd83b7dc07cce6107c6b916299ba76fa7d15ac"
|
||||
},
|
||||
{
|
||||
"Size": 20480,
|
||||
"Digest": "sha256:bff3b73cbcc496de1de4ea51df88b7249169d0b6eb7d677169eaf90b8a92240e",
|
||||
"DiffID": "sha256:ecb0311889b3478bc9b62660fa9391d5ebf8da4c6ae143cb33434873668f9e36"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/ubuntu-1804.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 66571264,
|
||||
"OS": {
|
||||
"Family": "ubuntu",
|
||||
"Name": "18.04"
|
||||
@@ -63,7 +64,29 @@
|
||||
"Image": "sha256:bcbe079849fdbb50b3eb04798547e046bdbc82020b8b780d767cf29f7e60b396",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 65561088,
|
||||
"Digest": "sha256:35c102085707f703de2d9eaad8752d6fe1b8f02b5d2149f1d8357c9cc7fb7d0a",
|
||||
"DiffID": "sha256:6cebf3abed5fac58d2e792ce8461454e92c245d5312c42118f02e231a73b317f"
|
||||
},
|
||||
{
|
||||
"Size": 991232,
|
||||
"Digest": "sha256:251f5509d51d9e4119d4ffb70d4820f8e2d7dc72ad15df3ebd7cd755539e40fd",
|
||||
"DiffID": "sha256:f7eae43028b334123c3a1d778f7bdf9783bbe651c8b15371df0120fd13ec35c5"
|
||||
},
|
||||
{
|
||||
"Size": 15872,
|
||||
"Digest": "sha256:8e829fe70a46e3ac4334823560e98b257234c23629f19f05460e21a453091e6d",
|
||||
"DiffID": "sha256:7beb13bce073c21c9ee608acb13c7e851845245dc76ce81b418fdf580c45076b"
|
||||
},
|
||||
{
|
||||
"Size": 3072,
|
||||
"Digest": "sha256:6001e1789921cf851f6fb2e5fe05be70f482fe9c2286f66892fe5a3bc404569c",
|
||||
"DiffID": "sha256:122be11ab4a29e554786b4a1ec4764dd55656b59d6228a0a3de78eaf5c1f226c"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
25
integration/testdata/ubuntu-1804.json.golden
vendored
25
integration/testdata/ubuntu-1804.json.golden
vendored
@@ -4,6 +4,7 @@
|
||||
"ArtifactName": "testdata/fixtures/images/ubuntu-1804.tar.gz",
|
||||
"ArtifactType": "container_image",
|
||||
"Metadata": {
|
||||
"Size": 66571264,
|
||||
"OS": {
|
||||
"Family": "ubuntu",
|
||||
"Name": "18.04"
|
||||
@@ -63,7 +64,29 @@
|
||||
"Image": "sha256:bcbe079849fdbb50b3eb04798547e046bdbc82020b8b780d767cf29f7e60b396",
|
||||
"ArgsEscaped": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"Layers": [
|
||||
{
|
||||
"Size": 65561088,
|
||||
"Digest": "sha256:35c102085707f703de2d9eaad8752d6fe1b8f02b5d2149f1d8357c9cc7fb7d0a",
|
||||
"DiffID": "sha256:6cebf3abed5fac58d2e792ce8461454e92c245d5312c42118f02e231a73b317f"
|
||||
},
|
||||
{
|
||||
"Size": 991232,
|
||||
"Digest": "sha256:251f5509d51d9e4119d4ffb70d4820f8e2d7dc72ad15df3ebd7cd755539e40fd",
|
||||
"DiffID": "sha256:f7eae43028b334123c3a1d778f7bdf9783bbe651c8b15371df0120fd13ec35c5"
|
||||
},
|
||||
{
|
||||
"Size": 15872,
|
||||
"Digest": "sha256:8e829fe70a46e3ac4334823560e98b257234c23629f19f05460e21a453091e6d",
|
||||
"DiffID": "sha256:7beb13bce073c21c9ee608acb13c7e851845245dc76ce81b418fdf580c45076b"
|
||||
},
|
||||
{
|
||||
"Size": 3072,
|
||||
"Digest": "sha256:6001e1789921cf851f6fb2e5fe05be70f482fe9c2286f66892fe5a3bc404569c",
|
||||
"DiffID": "sha256:122be11ab4a29e554786b4a1ec4764dd55656b59d6228a0a3de78eaf5c1f226c"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Results": [
|
||||
{
|
||||
|
||||
17
integration/testdata/yarn.json.golden
vendored
17
integration/testdata/yarn.json.golden
vendored
@@ -21,6 +21,23 @@
|
||||
"Class": "lang-pkgs",
|
||||
"Type": "yarn",
|
||||
"Packages": [
|
||||
{
|
||||
"ID": "integration@1.0.0",
|
||||
"Name": "integration",
|
||||
"Identifier": {
|
||||
"PURL": "pkg:npm/integration@1.0.0",
|
||||
"UID": "830dfbb17accac93"
|
||||
},
|
||||
"Version": "1.0.0",
|
||||
"Licenses": [
|
||||
"MIT"
|
||||
],
|
||||
"Relationship": "root",
|
||||
"DependsOn": [
|
||||
"jquery@3.2.1"
|
||||
],
|
||||
"Layer": {}
|
||||
},
|
||||
{
|
||||
"ID": "jquery@3.2.1",
|
||||
"Name": "jquery",
|
||||
|
||||
@@ -21,7 +21,7 @@ func InitDB(t *testing.T, fixtureFiles []string) string {
|
||||
|
||||
dbDir := db.Dir(cacheDir)
|
||||
dbPath := trivydb.Path(dbDir)
|
||||
err := os.MkdirAll(dbDir, 0700)
|
||||
err := os.MkdirAll(dbDir, 0o700)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Load testdata into BoltDB
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user