Skip to main content

A vulnerability scan diffing library for container images and SBOMs

Project description

Diffused Library

The core Python library providing vulnerability scanning and diffing functionality for container images and SBOMs (Software Bill of Materials). This library enables programmatic access to vulnerability analysis capabilities.

Features

  • 🔍 Vulnerability Scanning: Automated scanning of SBOMs using Trivy or scanning of container images using RHACS
  • 📊 SBOM Diffing: Direct comparison of SPDX-JSON formatted SBOMs (Trivy only)
  • 📄 Flexible Output: Programmatic access to vulnerability data
  • 🐍 Python API: Clean, intuitive Python interface

Installation

Prerequisites

  1. Install the scanner:
    1. Trivy: Follow the official Trivy installation guide
    2. RHACS: Follow the official roxctl installation guide
  2. Python Environment: Ensure Python 3.9+ is installed

From Source

cd diffused
pip install -e .

From PyPI

pip install diffused-lib

Usage

Basic Library Usage

Comparing Container Images

from diffused.differ import VulnerabilityDiffer

# Create a differ instance for container images
vuln_differ = VulnerabilityDiffer(
    previous_image="ubuntu:20.04",
    next_image="ubuntu:22.04",
    scan_type="image"  # Automatically scans images
)

# Retrieve the vulnerabilities diff (list of fixed CVEs)
fixed_vulnerabilities = vuln_differ.vulnerabilities_diff
print(f"Fixed vulnerabilities: {fixed_vulnerabilities}")

# Get detailed information about each fixed vulnerability
detailed_info = vuln_differ.vulnerabilities_diff_all_info

Comparing SBOMs

from diffused.differ import VulnerabilityDiffer

# Create a differ instance for SBOMs
vuln_differ = VulnerabilityDiffer(
    previous_sbom="previous.sbom.json",
    next_sbom="current.sbom.json",
    scan_type="sbom"  # Automatically scans SBOMs
)

# Retrieve the vulnerabilities diff
fixed_vulnerabilities = vuln_differ.vulnerabilities_diff

Using Different Scanners

from diffused.differ import VulnerabilityDiffer

# Use Trivy scanner (default)
trivy_differ = VulnerabilityDiffer(
    previous_image="nginx:1.20",
    next_image="nginx:1.21",
    scanner="trivy",
    scan_type="image"
)

# Use ACS scanner (requires ROX_ENDPOINT and ROX_API_TOKEN environment variables)
acs_differ = VulnerabilityDiffer(
    previous_image="nginx:1.20",
    next_image="nginx:1.21",
    scanner="acs",
    scan_type="image"
)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

diffused_lib-0.3.0.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

diffused_lib-0.3.0-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file diffused_lib-0.3.0.tar.gz.

File metadata

  • Download URL: diffused_lib-0.3.0.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for diffused_lib-0.3.0.tar.gz
Algorithm Hash digest
SHA256 31dfbf644d4676c43af1f9deaf730c652059c19b656fec5df201fa8a99de451c
MD5 f95b3f0ab71d833582a214668296d061
BLAKE2b-256 c79ed3fc024efb6d4603db0fbb2e90a976cf5f54205784c554e3c7a9ce724731

See more details on using hashes here.

Provenance

The following attestation bundles were made for diffused_lib-0.3.0.tar.gz:

Publisher: release.yml on konflux-ci/diffused

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file diffused_lib-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: diffused_lib-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for diffused_lib-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 930df735d31ac2464197e65a2fa42b479d0b2dbc6b235341869ca4b81116de08
MD5 7a737ae8acec7a9ad0ed6da3cf0af4b2
BLAKE2b-256 4830cd7eb9172e2e4254d4dce4a04086b710e2104a45dfdfb00757a696eab18a

See more details on using hashes here.

Provenance

The following attestation bundles were made for diffused_lib-0.3.0-py3-none-any.whl:

Publisher: release.yml on konflux-ci/diffused

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page