-
Notifications
You must be signed in to change notification settings - Fork 2.8k
feat(seal): add seal support #9370
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(seal): add seal support #9370
Conversation
- add baseID field
- add coverage page - add seal datasource
knqyf263
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. I left small comments.
| comparer = version.NewDEBComparer() | ||
| vsg = seal.NewVulnSrcGetter(ecosystem.Debian) | ||
| default: | ||
| // Should never happen as it's validated in the provider |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't find the validation in the provider. Am I missing something?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice catch.
Added in a8d5e2d
pkg/detector/ospkg/seal/seal.go
Outdated
| case ftypes.CentOS: | ||
| scanner = redhat.NewScanner() | ||
| comparer = version.NewRPMComparer() | ||
| vsg = seal.NewVulnSrcGetter(ecosystem.RedHat) | ||
| case ftypes.Debian: | ||
| scanner = debian.NewScanner() | ||
| comparer = version.NewDEBComparer() | ||
| vsg = seal.NewVulnSrcGetter(ecosystem.Debian) | ||
| case ftypes.Oracle: | ||
| scanner = oracle.NewScanner() | ||
| comparer = version.NewRPMComparer() | ||
| vsg = seal.NewVulnSrcGetter(ecosystem.RedHat) | ||
| case ftypes.RedHat: | ||
| scanner = redhat.NewScanner() | ||
| comparer = version.NewRPMComparer() | ||
| vsg = seal.NewVulnSrcGetter(ecosystem.RedHat) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need the case for CentOS?
| case ftypes.CentOS: | |
| scanner = redhat.NewScanner() | |
| comparer = version.NewRPMComparer() | |
| vsg = seal.NewVulnSrcGetter(ecosystem.RedHat) | |
| case ftypes.Debian: | |
| scanner = debian.NewScanner() | |
| comparer = version.NewDEBComparer() | |
| vsg = seal.NewVulnSrcGetter(ecosystem.Debian) | |
| case ftypes.Oracle: | |
| scanner = oracle.NewScanner() | |
| comparer = version.NewRPMComparer() | |
| vsg = seal.NewVulnSrcGetter(ecosystem.RedHat) | |
| case ftypes.RedHat: | |
| scanner = redhat.NewScanner() | |
| comparer = version.NewRPMComparer() | |
| vsg = seal.NewVulnSrcGetter(ecosystem.RedHat) | |
| case ftypes.Debian: | |
| scanner = debian.NewScanner() | |
| comparer = version.NewDEBComparer() | |
| vsg = seal.NewVulnSrcGetter(ecosystem.Debian) | |
| case ftypes.Oracle: | |
| scanner = oracle.NewScanner() | |
| comparer = version.NewRPMComparer() | |
| vsg = seal.NewVulnSrcGetter(ecosystem.RedHat) | |
| case ftypes.CentOS, ftypes.RedHat: | |
| scanner = redhat.NewScanner() | |
| comparer = version.NewRPMComparer() | |
| vsg = seal.NewVulnSrcGetter(ecosystem.RedHat) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
Updated in 1c9ce37
pkg/detector/ospkg/seal/seal.go
Outdated
| continue | ||
| } | ||
|
|
||
| srcName := pkg.SrcName |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit
| srcName := pkg.SrcName | |
| srcName := cmp.Or(pkg.SrcName, pkg.Name) | |
| srcRelease := cmp.Or(pkg.SrcRelease, pkg.Release) |
However, in my implementation, SrcName and SrcRelease are evaluated separately, so if you want to evaluate whether SrcName is empty in both cases, I think the current code is fine.
| srcName := pkg.SrcName | |
| srcName := cmp.Or(pkg.SrcName, pkg.Name) | |
| srcRelease := lo.Ternary(pkg.SrcName != "", pkg.SrcRelease, pkg.Release) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Most likely, if srcName exists, then srcRelease will also exist.
But I still added the check (your second option).
Updated in 1c9ce37
pkg/detector/ospkg/seal/seal_test.go
Outdated
| for _, tt := range tests { | ||
| t.Run(tt.name, func(t *testing.T) { | ||
| _ = dbtest.InitDB(t, tt.fixtures) | ||
| defer db.Close() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: We can remove the import of the db package.
| defer db.Close() | |
| defer dbtest.Close() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated in 1c9ce37
- merge RedHat and CentOS cases - simplify logic to get pkg Name and Release - use `dbtest` package
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [mirror.gcr.io/aquasec/trivy](https://www.aquasec.com/products/trivy/) ([source](https://github.com/aquasecurity/trivy)) | minor | `0.66.0` -> `0.67.0` | --- ### Release Notes <details> <summary>aquasecurity/trivy (mirror.gcr.io/aquasec/trivy)</summary> ### [`v0.67.0`](https://github.com/aquasecurity/trivy/blob/HEAD/CHANGELOG.md#0670-2025-09-30) [Compare Source](aquasecurity/trivy@v0.66.0...v0.67.0) ##### Features - add documentation URL for database lock errors ([#​9531](aquasecurity/trivy#9531)) ([eba48af](aquasecurity/trivy@eba48af)) - **cli:** change --list-all-pkgs default to true ([#​9510](aquasecurity/trivy#9510)) ([7b663d8](aquasecurity/trivy@7b663d8)) - **cloudformation:** support default values and list results in Fn::FindInMap ([#​9515](aquasecurity/trivy#9515)) ([42b3bf3](aquasecurity/trivy@42b3bf3)) - **cyclonedx:** preserve SBOM structure when scanning SBOM files with vulnerability updates ([#​9439](aquasecurity/trivy#9439)) ([aff03eb](aquasecurity/trivy@aff03eb)) - **redhat:** add os-release detection for RHEL-based images ([#​9458](aquasecurity/trivy#9458)) ([cb25a07](aquasecurity/trivy@cb25a07)) - **sbom:** added support for CoreOS ([#​9448](aquasecurity/trivy#9448)) ([6d562a3](aquasecurity/trivy@6d562a3)) - **seal:** add seal support ([#​9370](aquasecurity/trivy#9370)) ([e4af279](aquasecurity/trivy@e4af279)) ##### Bug Fixes - **aws:** use `BuildableClient` insead of `xhttp.Client` ([#​9436](aquasecurity/trivy#9436)) ([fa6f1bf](aquasecurity/trivy@fa6f1bf)) - close file descriptors and pipes on error paths ([#​9536](aquasecurity/trivy#9536)) ([a4cbd6a](aquasecurity/trivy@a4cbd6a)) - **db:** Dowload database when missing but metadata still exists ([#​9393](aquasecurity/trivy#9393)) ([92ebc7e](aquasecurity/trivy@92ebc7e)) - **k8s:** disable parallel traversal with fs cache for k8s images ([#​9534](aquasecurity/trivy#9534)) ([c0c7a6b](aquasecurity/trivy@c0c7a6b)) - **misconf:** handle tofu files in module detection ([#​9486](aquasecurity/trivy#9486)) ([bfd2f6b](aquasecurity/trivy@bfd2f6b)) - **misconf:** strip build metadata suffixes from image history ([#​9498](aquasecurity/trivy#9498)) ([c938806](aquasecurity/trivy@c938806)) - **misconf:** unmark cty values before access ([#​9495](aquasecurity/trivy#9495)) ([8e40d27](aquasecurity/trivy@8e40d27)) - **misconf:** wrap legacy ENV values in quotes to preserve spaces ([#​9497](aquasecurity/trivy#9497)) ([267a970](aquasecurity/trivy@267a970)) - **nodejs:** parse workspaces as objects for package-lock.json files ([#​9518](aquasecurity/trivy#9518)) ([404abb3](aquasecurity/trivy@404abb3)) - **nodejs:** use snapshot string as `Package.ID` for pnpm packages ([#​9330](aquasecurity/trivy#9330)) ([4517e8c](aquasecurity/trivy@4517e8c)) - **vex:** don't suppress vulns for packages with infinity loop ([#​9465](aquasecurity/trivy#9465)) ([78f0d4a](aquasecurity/trivy@78f0d4a)) - **vuln:** compare `nuget` package names in lower case ([#​9456](aquasecurity/trivy#9456)) ([1ff9ac7](aquasecurity/trivy@1ff9ac7)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMTYuNiIsInVwZGF0ZWRJblZlciI6IjQxLjExNi42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbWFnZSJdfQ==--> Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/1622 Co-authored-by: Renovate Bot <[email protected]> Co-committed-by: Renovate Bot <[email protected]>
Description
This PR adds support for detecting vulnerabilities in Seal Security packages within Trivy. Seal Security provides patched versions of open source packages with security fixes that may not be available in upstream distributions. This
implementation enables Trivy to detect vulnerabilities specific to these Seal-patched packages by integrating with the Seal Security vulnerability database.
Features of implementation
Examples
Alpinebased image:Debianbased image:CentOSbased image:Related issues
Related PRs
Remove this section if you don't have related PRs.
Checklist