Skip to content

DAT-21268: Add vulnerability scanning docs and Liquibase Security links#513

Open
jandroav wants to merge 3 commits intomainfrom
DAT-21268
Open

DAT-21268: Add vulnerability scanning docs and Liquibase Security links#513
jandroav wants to merge 3 commits intomainfrom
DAT-21268

Conversation

@jandroav
Copy link
Contributor

Summary

  • Add Vulnerability Scanning section to README.md documenting the three scan types (Trivy surface, Trivy deep, Grype SBOM) and how to view results via Liquibase Security
  • Expand SECURITY.md with scan-results branch structure, manifest format, component classification (OS/JRE/JAR/Driver/Other), and new FAQ entries about version comparison and upgrade recommendations
  • Replace all references to "Security Hub" with "Liquibase Security" and use security.liquibase.com URLs
  • Fix broken link to scripts/README.md

Test plan

  • README.md renders correctly on GitHub — Vulnerability Scanning section visible between "Verifying Secure Images" and "Dockerfile"
  • SECURITY.md renders correctly — new sections, FAQ entries, and code blocks display properly
  • All links to security.liquibase.com use correct paths

🤖 Generated with Claude Code

Document the scan-results branch structure, component classification,
and link to Liquibase Security (security.liquibase.com) for interactive
vulnerability reports, version comparison, and export capabilities.

DAT-21268

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link

coderabbitai bot commented Mar 10, 2026

Caution

Review failed

The head commit changed during the review from 64438ba to 6e13b51.

📝 Walkthrough

Walkthrough

Documentation updates to README.md and SECURITY.md expand security-related guidance. README.md duplicates the vulnerability scanning section, while SECURITY.md adds comprehensive content covering data structures, workflow schedules, version comparisons, and upgrade recommendations.

Changes

Cohort / File(s) Summary
Documentation Updates
README.md
Duplicated "🛡️ Vulnerability Scanning" section entirely (+30 lines).
Security Documentation Expansion
SECURITY.md
Extended with new sections: Vulnerability Scan Data (including data structure, manifest format, component classification), Workflow Schedule (weekday and on-demand triggers), and updated guidance on version comparisons and upgrade recommendations (+56/-2 lines).

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Suggested labels

TypeDocs

Suggested reviewers

  • sayaliM0412
  • jnewton03
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change—adding vulnerability scanning documentation and updating Liquibase Security references.
Description check ✅ Passed The description is directly related to the changeset, detailing the specific documentation additions and link updates across README.md and SECURITY.md.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch DAT-21268

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@claude
Copy link
Contributor

claude bot commented Mar 10, 2026

Claude finished @jandroav's task in 51s —— View job


PR Review: DAT-21268 - Vulnerability Scanning Docs

Tasks

  • Gather context
  • Review changed files
  • Post review feedback

LGTM - no significant issues found.

The scripts/README.md link fix is confirmed correct (file exists). Documentation is well-structured, content is accurate, and the new FAQ entries and component classification table add clear value.

Minor note: The manifest.json example in SECURITY.md:143 uses "..." as a placeholder inside a JSON array, which is technically invalid JSON. Consider using a comment or prose to indicate the list is truncated (e.g., "<additional versions>" or a note beneath the block).

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates repository documentation to describe the automated container vulnerability scanning process and standardize links/terminology around Liquibase Security for viewing results.

Changes:

  • Add a “Vulnerability Scanning” section to README.md, including scan types and where to view results.
  • Expand SECURITY.md with scan-results branch structure, manifest/schema examples, component classification, and new FAQs.
  • Update documentation links/terminology to use “Liquibase Security” and fix the scripts documentation link.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
README.md Adds end-user documentation for scan coverage and how to view results in Liquibase Security and GitHub Actions.
SECURITY.md Adds detailed guidance on persisted scan data layout/manifest and expands FAQs; fixes link to scripts/README.md.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@README.md`:
- Around line 281-282: The README currently claims "Every published" image is
scanned which is inaccurate; update the sentence to state that scans run
Monday–Friday at 10 AM UTC and cover only the most recent tags rather than all
published images, and reference the configuration that controls this
(max_tags_to_scan in .github/workflows/trivy-scan-published-images.yml) and the
trimming logic in scripts/generate-dockerhub-matrix.sh so readers know the scan
window is limited to recent tags.

In `@SECURITY.md`:
- Line 170: The "Vulnerability Scanning Scripts" link in SECURITY.md points to a
stale document (scripts/README.md); either update scripts/README.md to
accurately list the current scripts and their usage or change the link in
SECURITY.md to a maintained document; locate the reference "Vulnerability
Scanning Scripts" in SECURITY.md and then either edit scripts/README.md to
remove/replace outdated script entries and add current commands/examples, or
update the link target to the correct, up-to-date developer documentation.
- Around line 123-133: The fenced code block that shows the scan-results
directory tree triggers markdownlint MD040 because it lacks a language; update
the fenced block (the block containing "scan-results/ manifest.json ...
liquibase/liquibase-secure/<version>/") to use a language token like ```text (or
```plaintext) so the snippet becomes fenced as ```text ... ``` to satisfy the
linter.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0e541d71-2d33-4cd7-8257-7a9ec750d59a

📥 Commits

Reviewing files that changed from the base of the PR and between 821fe47 and 5a1e3f9.

📒 Files selected for processing (2)
  • README.md
  • SECURITY.md

Comment on lines +281 to +282
Every published Liquibase Docker image (Community and Secure) is automatically scanned for known vulnerabilities using multiple security scanners. Scans run Monday through Friday at 10 AM UTC and cover the most recent tags of each image.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Avoid overstating scan coverage.

This opening sentence says every published image is scanned, but the workflow only processes the newest tag set. That will mislead readers looking for older releases that fall outside the scan window. .github/workflows/trivy-scan-published-images.yml:9-20 exposes max_tags_to_scan, and scripts/generate-dockerhub-matrix.sh:29-100 trims the list to the most recent tags.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 281 - 282, The README currently claims "Every
published" image is scanned which is inaccurate; update the sentence to state
that scans run Monday–Friday at 10 AM UTC and cover only the most recent tags
rather than all published images, and reference the configuration that controls
this (max_tags_to_scan in .github/workflows/trivy-scan-published-images.yml) and
the trimming logic in scripts/generate-dockerhub-matrix.sh so readers know the
scan window is limited to recent tags.

Comment on lines +123 to +133
```
scan-results/
manifest.json # Index of all scanned images and versions
liquibase/liquibase/<version>/
trivy-surface.json # OS and top-level library scan (Trivy)
trivy-deep.json # Nested JAR dependency scan (Trivy)
grype-results.json # SBOM-based scan (Grype)
metadata.json # Scan timestamp, image digest, workflow run ID
liquibase/liquibase-secure/<version>/
...
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add a language to this fenced block.

This directory-tree block currently trips markdownlint MD040. Use text/plaintext so the docs stay lint-clean.

Suggested fix
-```
+```text
 scan-results/
   manifest.json                          # Index of all scanned images and versions
   liquibase/liquibase/<version>/
     trivy-surface.json                   # OS and top-level library scan (Trivy)
     trivy-deep.json                      # Nested JAR dependency scan (Trivy)
     grype-results.json                   # SBOM-based scan (Grype)
     metadata.json                        # Scan timestamp, image digest, workflow run ID
   liquibase/liquibase-secure/<version>/
     ...
</details>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.21.0)</summary>

[warning] 123-123: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @SECURITY.md around lines 123 - 133, The fenced code block that shows the
scan-results directory tree triggers markdownlint MD040 because it lacks a
language; update the fenced block (the block containing "scan-results/
manifest.json ... liquibase/liquibase-secure//") to use a language
token like text (or plaintext) so the snippet becomes fenced as text ... to satisfy the linter.


</details>

<!-- fingerprinting:phantom:triton:grasshopper -->

<!-- This is an auto-generated comment by CodeRabbit -->

## Related Documentation

- [Vulnerability Scanning Scripts](README.md) - Technical documentation for developers
- [Vulnerability Scanning Scripts](scripts/README.md) - Technical documentation for developers
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

This related-docs link points at stale technical docs.

scripts/README.md:1-15 still describes several scripts that are not present in the scripts directory, so linking it here as the developer reference is likely to send readers to inaccurate documentation. Please update that README in the same PR or keep this section pointed at a maintained document.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@SECURITY.md` at line 170, The "Vulnerability Scanning Scripts" link in
SECURITY.md points to a stale document (scripts/README.md); either update
scripts/README.md to accurately list the current scripts and their usage or
change the link in SECURITY.md to a maintained document; locate the reference
"Vulnerability Scanning Scripts" in SECURITY.md and then either edit
scripts/README.md to remove/replace outdated script entries and add current
commands/examples, or update the link target to the correct, up-to-date
developer documentation.

After vulnerability scans complete, a new persist-results job downloads
all scan artifacts and commits them to a scan-results branch. This gives
the Liquibase Security dashboard persistent access to historical scan
data via GitHub Contents API, replacing the 7-day artifact retention.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@claude
Copy link
Contributor

claude bot commented Mar 10, 2026

Claude finished @jandroav's task in 1m 58s —— View job


PR Review: DAT-21268 - Vulnerability Scanning Docs

Tasks

  • Gather context
  • Review changed files
  • Post review feedback

Issues Found

  • Overly broad workflow permissions (.github/workflows/trivy-scan-published-images.yml:22): contents: write is set at the workflow level, granting write access to all jobs including generate-matrix and the reusable vulnerability-scan call. Only persist-results actually needs it — this should be a job-level permission on that job, with the top-level kept at contents: read.

  • scripts/README.md is stale (SECURITY.md:170 links to it): The README documents 7 scripts (extract-nested-deps.sh, analyze-scan-results.sh, convert-scan-results.sh, create-enhanced-report.sh, append-github-summary.sh, save-grype-results.sh, check-file-exists.sh) that do not exist in the scripts/ directory. Only generate-dockerhub-matrix.sh and the newly-added persist-scan-results.sh are actually present.

  • Invalid JSON in manifest example (SECURITY.md:143): "..." is not valid JSON — an inline comment was posted with a fix suggestion.

@claude
Copy link
Contributor

claude bot commented Mar 10, 2026

Claude finished @jandroav's task in 1m 33s —— View job


PR Review: DAT-21268 - Vulnerability Scanning Docs

Tasks

  • Gather context
  • Review changed files
  • Post review feedback

The documentation additions are clear and well-structured. Three issues found:

  1. SECURITY.md:123 — Fenced code block is missing a language specifier (text/plaintext), triggering markdownlint MD040. (inline comment posted with fix)

  2. SECURITY.md:143 — The manifest JSON example contains "..." as a placeholder, which is invalid JSON and could break tooling that parses it literally. (inline comment posted with fix)

  3. SECURITY.md:170 — The link points to scripts/README.md, which documents 7 scripts that don't exist in the repo (extract-nested-deps.sh, analyze-scan-results.sh, convert-scan-results.sh, create-enhanced-report.sh, append-github-summary.sh, save-grype-results.sh, check-file-exists.sh). Only generate-dockerhub-matrix.sh is present. The linked doc is significantly stale and will mislead developers who follow it. This should be resolved before merging. (inline comment posted)

{
"lastUpdated": "2026-03-10T10:00:00Z",
"images": {
"liquibase/liquibase": ["5.0.1", "5.0.0", "4.31.0", "..."],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "..." placeholder is not valid JSON — parsers will reject this. Use a note below the block or a comment-style placeholder instead:

Suggested change
"liquibase/liquibase": ["5.0.1", "5.0.0", "4.31.0", "..."],
"liquibase/liquibase": ["5.0.1", "5.0.0", "4.31.0"],
"liquibase/liquibase-secure": ["5.0.1", "5.0.0"]

(Or add a prose note: "Additional versions are listed in chronological order.")


The `scan-results` branch contains:

```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing language specifier on fenced code block (markdownlint MD040). Use ```text to fix:

Suggested change
```
```text

{
"lastUpdated": "2026-03-10T10:00:00Z",
"images": {
"liquibase/liquibase": ["5.0.1", "5.0.0", "4.31.0", "..."],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"..." is not valid JSON — it will break any tool that parses this example literally. Replace with a valid placeholder string or add a comment after the block noting the list is truncated.

Suggested change
"liquibase/liquibase": ["5.0.1", "5.0.0", "4.31.0", "..."],
"liquibase/liquibase": ["5.0.1", "5.0.0", "4.31.0"],

## Related Documentation

- [Vulnerability Scanning Scripts](README.md) - Technical documentation for developers
- [Vulnerability Scanning Scripts](scripts/README.md) - Technical documentation for developers
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

scripts/README.md documents 7 scripts (extract-nested-deps.sh, analyze-scan-results.sh, convert-scan-results.sh, create-enhanced-report.sh, append-github-summary.sh, save-grype-results.sh, check-file-exists.sh) that do not exist in the scripts/ directory — only generate-dockerhub-matrix.sh is present. The linked document is stale and will mislead developers. Either remove scripts that no longer exist from scripts/README.md, or update this link to point to a maintained document. Fix this →

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants