grype
grype copied to clipboard
Fix: Fully validate `vulnerability.db` by hash
Fixes: #1975 Fixes: #1648
Setting ValidateByHashOnStart
to true
by default, enables the database curator to execute ValidateByHash
in validateIntegrity
and report an invalid database.
$ cd $HOME/.cache/grype/db/5/
$ mv vulnerability.db vulnerability.db.bak
# with an invalid db
$ tail -n 50 vulnerability.db.bak > vulnerability.db
$ grype db status
Location: /home/joshua/.cache/grype/db/5
Built: 2024-07-03 01:30:39 +0000 UTC
Schema: 5
Checksum: sha256:a7920011e5de7de5e0acafb614f94c38dc4353d34784de07cf16fa765c07904f
Status: invalid
bad db checksum (/home/joshua/.cache/grype/db/5/vulnerability.db): "sha256:a7920011e5de7de5e0acafb614f94c38dc4353d34784de07cf16fa765c07904f" vs "sha256:d3b1df971b1c7753cb658a2c0cb1046b781bc97f0727682bf6eacada5e92e5c8"
# with missing db
$ rm vulnerability.db
$ grype db status
Location: /home/joshua/.cache/grype/db/5
Built: 2024-07-03 01:30:39 +0000 UTC
Schema: 5
Checksum: sha256:a7920011e5de7de5e0acafb614f94c38dc4353d34784de07cf16fa765c07904f
Status: invalid
failed to open file '/home/joshua/.cache/grype/db/5/vulnerability.db': open /home/joshua/.cache/grype/db/5/vulnerability.db: no such file or directory
Scans with grype
now give a better error too:
# with invalid db
$ grype alpine:latest
✔ Vulnerability DB [no update available]
✔ Parsed image sha256:a606584aa9aa875552092ec9e1d62cb98d486f51f389609914039aabd9414687
✔ Cataloged contents dabf91b69c191a1a0a1628fd6bdd029c0c4018041c7f052870bb13c5a222ae76
├── ✔ Packages [14 packages]
├── ✔ File digests [77 files]
├── ✔ File metadata [77 locations]
└── ✔ Executables [17 executables]
failed to load vulnerability db: vulnerability database is invalid (run db update to correct): bad db checksum (/home/joshua/.cache/grype/db/5/vulnerability.db): "sha256:a7920011e5de7de5e0acafb614f94c38dc4353d34784de07cf16fa765c07904f" vs "sha256:d3b1df971b1c7753cb658a2c0cb1046b781bc97f0727682bf6eacada5e92e5c8"
# with missing db
$ grype alpine:latest
✔ Vulnerability DB [no update available]
✔ Parsed image sha256:a606584aa9aa875552092ec9e1d62cb98d486f51f389609914039aabd9414687
✔ Cataloged contents dabf91b69c191a1a0a1628fd6bdd029c0c4018041c7f052870bb13c5a222ae76
├── ✔ Packages [14 packages]
├── ✔ File digests [77 files]
├── ✔ File metadata [77 locations]
└── ✔ Executables [17 executables]
failed to load vulnerability db: vulnerability database is invalid (run db update to correct): failed to open file '/home/joshua/.cache/grype/db/5/vulnerability.db': open /home/joshua/.cache/grype/db/5/vulnerability.db: no such file or directory