NVIDIA-NeMo / NVIDIA-NeMo/Guardrails

feature: Add Trivy CVE scanner

Open
#2,248 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement status: needs triage
Dominant language
Python
Stars
7.2k
Forks
842
Avg merge
3d 1h
Merged PRs (30d)
25

Description

Did you check the docs?
  • I have read all the NeMo-Guardrails docs
Is your feature request related to a problem? Please describe.

There is no automated scanning for vulnerabilities in Python dependencies. With many dependencies, CVEs in packages like aiohttp, urllib3, and NLTK can go undetected until downstream consumers or container image scanners flag them.

Describe the solution you'd like

A weekly cron on the develop branch makes to catch newly disclosed CVEs using trivy

We would get a report along the lines of this:


Report Summary

┌─────────────┬────────┬─────────────────┐
│   Target    │  Type  │ Vulnerabilities │
├─────────────┼────────┼─────────────────┤
│ poetry.lock │ poetry │       48        │
└─────────────┴────────┴─────────────────┘
Legend:
- '-': Not scanned
- '0': Clean (no security findings detected)


poetry.lock (poetry)
====================
Total: 48 (HIGH: 48, CRITICAL: 0)

┌───────────────────┬─────────────────────┬──────────┬────────┬───────────────────┬───────────────┬──────────────────────────────────────────────────────────────┐
│      Library      │    Vulnerability    │ Severity │ Status │ Installed Version │ Fixed Version │                            Title                             │
├───────────────────┼─────────────────────┼──────────┼────────┼───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ aiohttp           │ CVE-2026-69244      │ HIGH     │ fixed  │ 3.13.5            │ 3.14.3        │ AIOHTTP: Out-of-bounds heap read in C HTTP response parser   │
│                   │                     │          │        │                   │               │ error path (malformed...                                     │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-69244                   │
├───────────────────┼─────────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ cryptography      │ CVE-2026-69247      │          │        │ 46.0.6            │ 50.0.0        │ cryptography: PKCS#7 EnvelopedData decryption exposes a      │
│                   │                     │          │        │                   │               │ Bleichenbacher oracle through distinguishable errors and...  │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-69247                   │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-69249      │          │        │                   │ 49.0.0        │ python-cryptography: Duplicate self-signed intermediates can │
│                   │                     │          │        │                   │               │ cause exponential path-building                              │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-69249                   │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ GHSA-537c-gmf6-5ccf │          │        │                   │ 48.0.1        │ Vulnerable OpenSSL included in cryptography wheels           │
│                   │                     │          │        │                   │               │ https://github.com/advisories/GHSA-537c-gmf6-5ccf            │
├───────────────────┼─────────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ gitpython         │ CVE-2026-42215      │          │        │ 3.1.46            │ 3.1.47        │ GitPython is a python library used to interact with Git      │
│                   │                     │          │        │                   │               │ repositories. ...                                            │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-42215                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-42284      │          │        │                   │               │ GitPython is a python library used to interact with Git      │
│                   │                     │          │        │                   │               │ repositories. ...                                            │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-42284                   │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-44243      │          │        │                   │ 3.1.48        │ GitPython: GitPython: Arbitrary file write via crafted       │
│                   │                     │          │        │                   │               │ reference paths                                              │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-44243                   │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-44244      │          │        │                   │ 3.1.49        │ GitPython is a python library used to interact with Git      │
│                   │                     │          │        │                   │               │ repositories. ...                                            │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-44244                   │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ GHSA-2f96-g7mh-g2hx │          │        │                   │ 3.1.51        │ GitPython: Command Injection via git long-option prefix      │
│                   │                     │          │        │                   │               │ abbreviation bypass of CVE-2026-42215 blocklist...           │
│                   │                     │          │        │                   │               │ https://github.com/advisories/GHSA-2f96-g7mh-g2hx            │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ GHSA-3f7w-8rr8-f37f │          │        │                   │ 3.1.57        │ GitPython: Unguarded git option forwarding in                │
│                   │                     │          │        │                   │               │ IndexFile.checkout() and TagReference.create() enables       │
│                   │                     │          │        │                   │               │ arbitrary file...                                            │
│                   │                     │          │        │                   │               │ https://github.com/advisories/GHSA-3f7w-8rr8-f37f            │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ GHSA-3rp5-jjmw-4wv2 │          │        │                   │ 3.1.53        │ GitPython: git-config section-name injection enables         │
│                   │                     │          │        │                   │               │ arbitrary config directives (core.sshCommand RCE)            │
│                   │                     │          │        │                   │               │ https://github.com/advisories/GHSA-3rp5-jjmw-4wv2            │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ GHSA-6p8h-3wgx-97gf │          │        │                   │ 3.1.54        │ GitPython: Incomplete unsafe_git_clone_options denylist      │
│                   │                     │          │        │                   │               │ omits --template enabling arbitrary command execution via    │
│                   │                     │          │        │                   │               │ clone...                                                     │
│                   │                     │          │        │                   │               │ https://github.com/advisories/GHSA-6p8h-3wgx-97gf            │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ GHSA-94p4-4cq8-9g67 │          │        │                   │ 3.1.55        │ GitPython: Environment-variable exfiltration via             │
│                   │                     │          │        │                   │               │ Repo.create_remote() / Remote.add() URL (incomplete fix of   │
│                   │                     │          │        │                   │               │ GHSA-rwj8-pgh3-r573)...                                      │
│                   │                     │          │        │                   │               │ https://github.com/advisories/GHSA-94p4-4cq8-9g67            │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ GHSA-956x-8gvw-wg5v │          │        │                   │ 3.1.51        │ GitPython: command injection via unguarded Git options in    │
│                   │                     │          │        │                   │               │ `Repo.archive()`, `git.ls_remote()`, and arbitrary...        │
│                   │                     │          │        │                   │               │ https://github.com/advisories/GHSA-956x-8gvw-wg5v            │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ GHSA-fjr4-x663-mwxc │          │        │                   │ 3.1.54        │ GitPython: Arbitrary file overwrite via git diff --output    │
│                   │                     │          │        │                   │               │ argument injection in Diffable.diff...                       │
│                   │                     │          │        │                   │               │ https://github.com/advisories/GHSA-fjr4-x663-mwxc            │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ GHSA-mv93-w799-cj2w │          │        │                   │ 3.1.50        │ GitPython: Newline injection in config_writer() section      │
│                   │                     │          │        │                   │               │ parameter bypasses CVE-2026-42215 patch, enabling RCE...     │
│                   │                     │          │        │                   │               │ https://github.com/advisories/GHSA-mv93-w799-cj2w            │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ GHSA-r9mr-m37c-5fr3 │          │        │                   │ 3.1.54        │ GitPython: Unsafe git option guard bypass via                │
│                   │                     │          │        │                   │               │ single-character kwarg value token smuggling...              │
│                   │                     │          │        │                   │               │ https://github.com/advisories/GHSA-r9mr-m37c-5fr3            │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ GHSA-rwj8-pgh3-r573 │          │        │                   │ 3.1.52        │ GitPython: Environment-variable exfiltration via             │
│                   │                     │          │        │                   │               │ os.path.expandvars() on Repo.clone_from() URL                │
│                   │                     │          │        │                   │               │ https://github.com/advisories/GHSA-rwj8-pgh3-r573            │
├───────────────────┼─────────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ langchain-classic │ CVE-2026-45134      │          │        │ 1.0.3             │ 1.0.7         │ LangSmith SDK: Public prompt pull deserializes untrusted     │
│                   │                     │          │        │                   │               │ manifests without trust boundary warning...                  │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-45134                   │
├───────────────────┼─────────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ langchain-core    │ CVE-2026-44843      │          │        │ 1.2.26            │ 1.3.3, 0.3.85 │ langchain: LangChain: Information disclosure and data        │
│                   │                     │          │        │                   │               │ integrity compromise via insecure deserialization            │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-44843                   │
├───────────────────┼─────────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ langsmith         │ CVE-2026-45134      │          │        │ 0.7.26            │ 0.8.0         │ LangSmith SDK: Public prompt pull deserializes untrusted     │
│                   │                     │          │        │                   │               │ manifests without trust boundary warning...                  │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-45134                   │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ GHSA-f4xh-w4cj-qxq8 │          │        │                   │ 0.8.18        │ LangSmith SDK TracingMiddleware: Arbitrary server-side file  │
│                   │                     │          │        │                   │               │ read                                                         │
│                   │                     │          │        │                   │               │ https://github.com/advisories/GHSA-f4xh-w4cj-qxq8            │
├───────────────────┼─────────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ nltk              │ CVE-2026-12061      │          │        │ 3.9.4             │ 3.10.0        │ Natural Language Toolkit (NLTK): ReDoS in NLTK               │
│                   │                     │          │        │                   │               │ ReviewsCorpusReader FEATURES regex                           │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-12061                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-12072      │          │        │                   │               │ Natural Language Toolkit (NLTK): Path Traversal in           │
│                   │                     │          │        │                   │               │ NKJPCorpusReader leads to Arbitrary File...                  │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-12072                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-12074      │          │        │                   │               │ Natural Language Toolkit (NLTK) has path traversal in        │
│                   │                     │          │        │                   │               │ FramenetCorpusReader.frame() that allows arbitrary...        │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-12074                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-12075      │          │        │                   │               │ Natural Language Toolkit (NLTK): DNS-rebinding SSRF filter   │
│                   │                     │          │        │                   │               │ bypass in nltk.pathsec.urlopen (nltk.download /...           │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-12075                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-54293      │          │        │                   │               │ nltk: NLTK: Information Disclosure via Path Traversal in     │
│                   │                     │          │        │                   │               │ `nltk.data.load()`                                           │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-54293                   │
├───────────────────┼─────────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ pillow            │ CVE-2026-54058      │          │        │ 12.2.0            │ 12.3.0        │ Pillow: Pillow: Memory disclosure or denial of service via   │
│                   │                     │          │        │                   │               │ crafted McIdas AREA...                                       │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-54058                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-54059      │          │        │                   │               │ python-pillow: Pillow: Denial of Service via crafted PCF     │
│                   │                     │          │        │                   │               │ font data                                                    │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-54059                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-54060      │          │        │                   │               │ python-pillow: Pillow: Denial of Service via excessive       │
│                   │                     │          │        │                   │               │ memory allocation when processing font...                    │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-54060                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-55379      │          │        │                   │               │ python-pillow: Pillow: Denial of Service via crafted BDF     │
│                   │                     │          │        │                   │               │ font file                                                    │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-55379                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-55380      │          │        │                   │               │ python-pillow: Pillow: Denial of Service via crafted GD 2.x  │
│                   │                     │          │        │                   │               │ image file                                                   │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-55380                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-59197      │          │        │                   │               │ Pillow: Pillow: Native heap out-of-bounds write              │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-59197                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-59199      │          │        │                   │               │ Pillow: Pillow: Denial of Service via out-of-bounds write in │
│                   │                     │          │        │                   │               │ image processing                                             │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-59199                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-59200      │          │        │                   │               │ Pillow: Pillow: Denial of service via crafted PDF stream     │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-59200                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-59204      │          │        │                   │               │ Pillow: Pillow: Denial of Service via crafted JPEG2000 image │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-59204                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-59205      │          │        │                   │               │ Pillow: Pillow: Controlled native heap corruption in         │
│                   │                     │          │        │                   │               │ ImageCms.ImageCmsTransform.apply API                         │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-59205                   │
├───────────────────┼─────────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ pyasn1            │ CVE-2026-59884      │          │        │ 0.6.3             │ 0.6.4         │ python-pyasn1: pyasn1: Denial of Service via crafted BER     │
│                   │                     │          │        │                   │               │ input                                                        │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-59884                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-59885      │          │        │                   │               │ pyasn1: python-pyasn1: pyasn1: Denial of Service via crafted │
│                   │                     │          │        │                   │               │ ASN.1 OBJECT IDENTIFIER                                      │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-59885                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-59886      │          │        │                   │               │ pyasn1: pyasn1: Denial of Service via crafted ASN.1 REAL     │
│                   │                     │          │        │                   │               │ values                                                       │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-59886                   │
├───────────────────┼─────────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ soupsieve         │ CVE-2026-49476      │          │        │ 2.8.3             │ 2.8.4         │ python-soupsieve: Soupsieve: Denial of Service via crafted   │
│                   │                     │          │        │                   │               │ CSS selector string                                          │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-49476                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-49477      │          │        │                   │               │ soupsieve: Soupsieve: Denial of Service via crafted CSS      │
│                   │                     │          │        │                   │               │ selector strings                                             │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-49477                   │
├───────────────────┼─────────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ starlette         │ CVE-2026-48818      │          │        │ 1.0.0             │ 1.1.0         │ starlette: Starlette: SSRF and NTLM credential theft via UNC │
│                   │                     │          │        │                   │               │ paths in StaticFiles...                                      │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-48818                   │
│                   ├─────────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-54283      │          │        │                   │ 1.3.1         │ starlette: Starlette: request.form() limits silently ignored │
│                   │                     │          │        │                   │               │ for application/x-www-form-urlencoded enable DoS             │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-54283                   │
├───────────────────┼─────────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ tornado           │ CVE-2026-49853      │          │        │ 6.5.5             │ 6.5.6         │ Tornado is a Python web framework and asynchronous           │
│                   │                     │          │        │                   │               │ networking library. ...                                      │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-49853                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-49855      │          │        │                   │               │ Tornado is a Python web framework and asynchronous           │
│                   │                     │          │        │                   │               │ networking library. ...                                      │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-49855                   │
├───────────────────┼─────────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ urllib3           │ CVE-2026-44431      │          │        │ 2.6.3             │ 2.7.0         │ urllib3: urllib3: Information disclosure via cross-origin    │
│                   │                     │          │        │                   │               │ redirects forwarding sensitive headers                       │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-44431                   │
│                   ├─────────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                   │ CVE-2026-44432      │          │        │                   │               │ urllib3: urllib3: Denial of Service due to excessive HTTP    │
│                   │                     │          │        │                   │               │ response decompression                                       │
│                   │                     │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2026-44432                   │
└───────────────────┴─────────────────────┴──────────┴────────┴───────────────────┴───────────────┴──────────────────────────────────────────────────────────────┘

This can be used to inform dependency upgrades

Describe alternatives you've considered

n / a

Additional context

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the repository's CI configuration for the develop branch and how poetry.lock is handled, then check Trivy's workflow usage. Done means a weekly scan runs against the Python dependencies and produces a vulnerability report for newly disclosed CVEs.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
ci-cd, security
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.