Back to Intelligence

openSUSE Trivy 0.76.0 Security Update: Two Vulnerabilities Patched — Detection and Remediation Guide

SA
Security Arsenal Team
November 5, 2026
9 min read

openSUSE has released a security update bringing Trivy to version 0.76.0, resolving two security vulnerabilities in the popular open-source scanner maintained by Aqua Security. The advisory (openSUSE-2026-12206-1) confirms the patched packages are available now for installation via the standard openSUSE repositories.

This matters more than a routine version bump. Trivy is not just another package on your systems — it is security tooling that runs with elevated trust. It scans container images, filesystems, Git repositories, Kubernetes clusters, and infrastructure-as-code, which means it routinely handles attacker-influenced artifacts: untrusted container layers, third-party registries, and externally sourced code. It also frequently runs in CI/CD pipelines with access to registry credentials, cloud tokens, and signing keys. A vulnerability in your scanner is a vulnerability in the trust anchor of your supply chain security program. Defenders running Trivy on openSUSE (or consuming it via any distribution channel) should treat this as a priority patch.

Technical Analysis

Affected products and platforms

  • Product: Trivy — the all-in-one vulnerability, misconfiguration, and secret scanner
  • Fixed version: 0.76.0
  • Distribution: openSUSE (packages available through the official update repositories)
  • Typical deployment contexts: developer workstations, CI/CD runners (GitHub Actions self-hosted, GitLab runners, Jenkins agents), container build hosts, and SOC/forensic workstations used for image analysis

Note that the two vulnerabilities fixed here are addressed upstream in Trivy 0.76.0 — the openSUSE advisory packages that upstream fix. If you deploy Trivy through other channels (direct binary releases, container images such as aquasec/trivy, Homebrew, or other distributions), you must verify the version against 0.76.0 independently.

Why scanner vulnerabilities are high-impact

From a defender's perspective, vulnerabilities in scanning tooling typically fall into a few dangerous classes, and the remediation logic holds regardless of which specific flaws this update closes:

  1. Malicious-artifact parsing flaws. Scanners ingest untrusted input by design — OCI image layers, SBOMs, lockfiles, archives. A parsing vulnerability (path traversal, archive extraction flaws like Zip Slip, or memory corruption in a parser) means an attacker who can get a crafted image or package into your pipeline can execute code in the scanner's context — which is often a CI runner holding registry push credentials and cloud deployment tokens.
  2. Server/API exposure. Trivy can run in server mode (trivy server), listening for scan requests from clients. A flaw in the server component or its authentication handling creates a network-reachable attack surface on infrastructure that defenders assume is internal-only.
  3. Dependency-chain exposure. Trivy ships with a large Go dependency tree (container runtimes, archive handlers, registry clients). Vulnerabilities in those libraries are exploitable through the scanner's normal operation.

Exploitation status

As of this writing, the advisory confirms the vulnerabilities are patched and the update is available; there is no public confirmation of active in-the-wild exploitation tied to this specific advisory, and the openSUSE notice does not enumerate the CVE identifiers in its summary. That should not reduce urgency: scanner exploitation typically happens quietly inside build pipelines, where detection coverage is weakest. The absence of a public PoC is a window of opportunity, not a reason to defer.

Detection & Response

The highest-fidelity defensive signals here are (a) identifying vulnerable Trivy versions in your fleet, and (b) watching for anomalous behavior of the Trivy process itself — a scanner spawning shells or making unexpected outbound connections is a strong indicator of compromise via a malicious artifact.

Sigma Rules

YAML
---
title: Trivy Scanner Spawning Shell or Script Interpreter
id: 3f8c2a91-7b4e-4d1a-9c62-8e5f0a1b3d47
status: experimental
description: Detects the Trivy scanner process spawning a shell or script interpreter, which may indicate exploitation via a crafted container image, archive, or repository artifact.
references:
  - https://linuxsecurity.com/advisories/opensuse/opensuse-2026-12206-1-trivy
  - https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.execution
  - attack.t1059
logsource:
  category: process_creation
  product: linux
detection:
  selection_parent:
    ParentImage|endswith:
      - '/trivy'
  selection_child:
    Image|endswith:
      - '/sh'
      - '/bash'
      - '/zsh'
      - '/dash'
      - '/python'
      - '/python3'
      - '/perl'
      - '/curl'
      - '/wget'
  condition: selection_parent and selection_child
falsepositives:
  - Wrapper scripts that invoke trivy from shell pipelines (in those cases trivy is the child, not the parent)
level: high
---
title: Outdated Trivy Version Executed on Linux Host
id: 91d4e7b2-3c5a-4f68-ab1d-2e7c9f304815
status: experimental
description: Detects execution of trivy with version flags to support inventory and patch verification efforts for the openSUSE Trivy 0.76.0 security update.
references:
  - https://linuxsecurity.com/advisories/opensuse/opensuse-2026-12206-1-trivy
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.discovery
logsource:
  category: process_creation
  product: linux
detection:
  selection:
    Image|endswith: '/trivy'
    CommandLine|contains:
      - '--version'
      - ' version'
  condition: selection
falsepositives:
  - Legitimate version checks by administrators and automation
level: informational
---
title: Trivy Server Mode Exposed on Non-Standard Bind
id: b27a91c4-5e08-4d3f-9a71-6c4d8e2f5093
status: experimental
description: Detects Trivy started in server mode, which exposes a network listener. Unexpected server-mode instances may indicate misconfiguration or attacker use of scanning infrastructure.
references:
  - https://linuxsecurity.com/advisories/opensuse/opensuse-2026-12206-1-trivy
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.command_and_control
logsource:
  category: process_creation
  product: linux
detection:
  selection:
    Image|endswith: '/trivy'
    CommandLine|contains: 'server'
  condition: selection
falsepositives:
  - Sanctioned Trivy client/server architectures in CI environments
level: medium

KQL (Microsoft Sentinel / Defender)

This query hunts across Syslog-ingested Linux hosts and Defender for Endpoint process telemetry for Trivy executions, surfacing both version inventory and anomalous child-process behavior:

KQL — Microsoft Sentinel / Defender
// Hunt 1: Inventory Trivy versions across Linux hosts via Syslog process events
Syslog
| where TimeGenerated > ago(7d)
| where ProcessName has "trivy" or SyslogMessage has "trivy"
| where SyslogMessage has "--version" or SyslogMessage has "server"
| project TimeGenerated, Computer, ProcessName, SyslogMessage
| summarize Executions = count(), LastSeen = max(TimeGenerated) by Computer, ProcessName
| order by LastSeen desc;

// Hunt 2: Trivy spawning shells or download tools (potential exploitation via malicious artifact)
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessFileName =~ "trivy"
| where FileName in~ ("sh", "bash", "dash", "zsh", "python", "python3", "perl", "curl", "wget", "nc", "ncat")
| project TimeGenerated, DeviceName, FileName, ProcessCommandLine, InitiatingProcessCommandLine, AccountName
| order by TimeGenerated desc;

// Hunt 3: Trivy server-mode listeners and unexpected egress (requires CEF/network logs)
CommonSecurityLog
| where TimeGenerated > ago(7d)
| where Message has "trivy"
| where DestinationPort !in (443, 80) or DestinationIP startswith "10." == false
| summarize Connections = count() by SourceHostName, DestinationIP, DestinationPort
| order by Connections desc;

Velociraptor VQL

Use this artifact to sweep endpoints for Trivy installations and their versions — critical for scoping patch compliance — plus running Trivy processes:

VQL — Velociraptor
-- Inventory Trivy binaries, versions, and live processes across the fleet
LET binaries = SELECT FullPath, Mtime, Size
FROM glob(globs=['/usr/bin/trivy', '/usr/local/bin/trivy', '/opt/**/trivy', '/home/**/trivy', '/root/**/trivy'])

LET running = SELECT Pid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE Name =~ '(?i)trivy' OR Exe =~ '(?i)trivy'

SELECT * FROM binaries
UNION ALL
SELECT Exe AS FullPath, CreateTime AS Mtime, Pid AS Size FROM running

Remediation Script (Bash)

The following script verifies the installed Trivy version, updates it via zypper on openSUSE, and flags any Trivy binaries outside the package manager's control (manually installed binaries will NOT be patched by zypper and are a common blind spot):

Bash / Shell
#!/bin/bash
# Security Arsenal - Trivy 0.76.0 patch verification and remediation for openSUSE
# Advisory: openSUSE-2026-12206-1

FIXED_VERSION="0.76.0"
echo "=== Trivy Security Update Verification ==="

# 1. Check if trivy is installed via rpm and report version
if rpm -q trivy >/dev/null 2>&1; then
    INSTALLED=$(rpm -q --queryformat '%{VERSION}' trivy)
    echo "[+] RPM-managed trivy version: ${INSTALLED}"
    if [ "$(printf '%s\n%s' "$INSTALLED" "$FIXED_VERSION" | sort -V | head -1)" != "$FIXED_VERSION" ]; then
        echo "[!] VULNERABLE: version < ${FIXED_VERSION}. Applying update..."
        sudo zypper refresh
        sudo zypper update -y trivy
        echo "[+] Post-update version: $(rpm -q --queryformat '%{VERSION}' trivy)"
    else
        echo "[OK] trivy is at or above ${FIXED_VERSION}"
    fi
else
    echo "[-] trivy not installed via RPM"
fi

# 2. Hunt for unmanaged trivy binaries (zypper will NOT patch these)
echo ""
echo "=== Scanning for unmanaged trivy binaries ==="
UNMANAGED=$(find /usr/local /opt /home /root -name 'trivy' -type f -executable 2>/dev/null)
if [ -n "$UNMANAGED" ]; then
    echo "[!] Found unmanaged binaries - verify/update these manually:"
    for bin in $UNMANAGED; do
        echo "    $bin -> version: $($bin --version 2>/dev/null | head -1)"
    done
else
    echo "[OK] No unmanaged trivy binaries found"
fi

# 3. Check for trivy running in server mode (network exposure)
echo ""
echo "=== Checking for trivy server-mode listeners ==="
ss -tlnp 2>/dev/null | grep -i trivy && echo "[!] trivy listener exposed - restrict bind address and require auth tokens" || echo "[OK] No trivy listeners"

# 4. Check container-based deployments
echo ""
echo "=== Checking container image deployments ==="
if command -v docker >/dev/null 2>&1; then
    docker images --format '{{.Repository}}:{{.Tag}}' 2>/dev/null | grep -i trivy | while read img; do
        echo "[!] Container image found: $img - rebuild/pin to aquasec/trivy:${FIXED_VERSION} or later"
    done
fi
echo "=== Done ==="

Remediation

  1. Patch immediately on openSUSE systems. Run sudo zypper refresh && sudo zypper update trivy and confirm the installed version is 0.76.0 or later. Reference: openSUSE-2026-12206-1 advisory.

  2. Close the unmanaged-binary gap. Trivy is very commonly installed outside the package manager — downloaded as a static binary, via install scripts, or baked into CI runner images. Zypper will not touch these. Use the script above (or your EDR/CMDB) to enumerate every Trivy binary and container image (aquasec/trivy) in the fleet and update each to 0.76.0+. CI base images and golden AMIs must be rebuilt — patching a live runner does nothing for the next ephemeral instance spun up from an old image.

  3. Audit server-mode deployments. If you run trivy server, confirm it is bound to localhost or an internal interface, fronted by authentication (--token), and not reachable from build networks that process untrusted third-party artifacts. A scanner endpoint reachable by the same pipeline that ingests attacker-controlled code is a lateral-movement gift.

  4. Reduce the blast radius of scanner compromise. Run Trivy under a dedicated, minimally privileged service account. Do not execute scans as root unless filesystem scanning strictly requires it, and never co-locate scanner credentials with registry-push or deployment credentials on the same runner. Treat scan infrastructure as untrusted-by-design: it parses hostile input for a living.

  5. Review pipeline exposure retrospectively. If Trivy below 0.76.0 scanned images or repositories sourced from external parties (vendor images, public registries, pull-request-triggered scans) in the weeks prior to patching, review runner logs for anomalous child processes, unexpected egress, or credential access — exploitation of scanner parsing flaws is quiet and rarely triggers default alerting.

  6. Institutionalize security-tool patching. Add scanners, agents, and security tooling to your vulnerability management program with the same SLA tier as internet-facing services. Security tooling is an attacker target class, not an afterthought — it holds credentials, trust, and network position that make it worth more to an adversary than most application servers.

Related Resources

Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.