NVIDIA-NeMo / NVIDIA-NeMo/Guardrails
feature: Add Trivy CVE scanner
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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