PAGES
← all tools
◆ Malware Analysis

malcontent

v1.26.1 open-source

Analyzes programs for malware capabilities using YARA rules, supporting binary/script analysis, differential comparison, and OCIOCIOpen Container Initiative standard, maintained by the Linux Foundation, defining the image format and runtime spec that container tools share so images built once run anywhere OCI-compliant. image scanning.

Summary

malcontent is an open-source, Apache 2.0-licensed command-line tool that discovers supply-chain compromises in software by analyzing what a program actually does, using YARA rules, context, and differential comparison rather than signature matching alone. It runs against binaries and source across most common formats and languages, works transparently on archives and container images, and is built to run as a step in a CI/CD pipeline, which points its use toward application security and platform engineers vetting dependencies rather than incident responders working after the fact. It draws on over 14,500 YARA rules, including third-party sets from vendors like Elastic, Mandiant, and ReversingLabs, and its diff mode lets teams flag only new risky behavior between two versions of a package or image. First committed in 2024, it has 40 contributors and a release cadence of roughly one every two weeks, with the most recent 17 days ago.

Analyzes programs for malware capabilities using YARA rules, supporting binary/script analysis, differential comparison, and OCI image scanning.

How malcontent helps

What does a new dependency actually do once it is unpacked?

runs unfiltered capability analysis against the binary, archive, or container image and lists every behavior its rules recognize, without filtering to only the risky ones

Did the new version of a package add any risky behavior that was not there before?

diffs the two versions and reports only the capabilities that are new, weighted by risk, instead of every capability that already existed

Is this container image or archive hiding something a plain file listing would not show?

unpacks archives and image layers transparently and runs the same rule set against what it finds inside, without requiring a separate extraction step

Which of my dependencies matches patterns already tied to known malware families?

matches file contents against rules contributed by vendors such as Elastic, Mandiant, and ReversingLabs and names the matching rule and its source

Should this pipeline stop a build over a dependency's behavior?

scores the capabilities it finds against a threshold and can fail the step when a program crosses it, rather than only producing a report to read later

Are two builds of the same image actually behaving the same way?

runs differential analysis between the two and surfaces only the behaviors that changed, so an unexpected addition stands out from routine noise

all 11 features, with the evidence for each →

Languages

Not documented

Features

11 capabilities · 2 backed by code, an API document or a real run

Built from malcontent's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

  • malcontent covers 1 of the 8 investigation and response capabilities we track.

What malcontent offers you

  • Command-line interface6
All capabilities 11 capabilities
Multi-format input support shipped Supports scanning diverse input sources including OCI images, various archive formats (tar, zip, .xz, .deb, .rpm), and Ruby Gem files. 12 releases · first seen Apr 2024

Also counts toward: Command-line interface

release 12 total

Bundled YARA rule library shipped Ships a curated set of third-party YARA rules from sources such as Avast, Elastic, FireEye, Mandiant, Nextron, and ReversingLabs for use during scans. 11 releases · first seen Jun 2024

release 11 total

  • Updates third-party rules as of 2026-07-14 v1.25.4 · Jul 2026 · source · release history
  • Updates third-party rules as of 2026-07-19 v1.25.4 · Jul 2026 · source · release history
  • Updates third-party rules as of 2026-07-17 v1.25.4 · Jul 2026 · source · release history
  • Updates third-party rules as of 2026-07-16 v1.25.4 · Jul 2026 · source · release history
  • Upgrades yara-x engine to v1.19.0, improving underlying rule evaluation performance. v1.25.0 · Jun 2026 · source · release history
  • Updates bundled third-party YARA rules (Avast, Elastic, FireEye, Mandiant, Nextron, ReversingLabs) to June 2026 snapshots. v1.25.0 · Jun 2026 · source · release history
Scan result filtering and risk adjustment shipped Provides knobs to filter output based on file content, severity, or risk changes, and control error handling behavior. 11 releases · first seen Mar 2024

Also counts toward: Command-line interface

release 11 total

  • Add --rule-categories flag to filter detections by category v1.23.0 · May 2026 · source · release history
  • Add statistics to JSON and YAML reports v1.8.0 · Jan 2025 · source · release history
  • --file-risk-increase flag added v1.2.0 · Oct 2024 · source · release history
  • --file-risk-change flag added v1.2.0 · Oct 2024 · source · release history
  • Add --disable-frequency-upgrade-heuristics flag to control heuristic behavior v0.14.0 · Jul 2024 · source · release history
  • Adds --err-first-hit and --err-first-miss CLI arguments to control which result (hit or miss) is returned first when a rule produces an error. v0.13.1 · Jun 2024 · source · release history
Malicious package scanning shipped suggested Scans package directories for malicious supply-chain behaviours using guarddog detection rules. 6 releases · 4 other sources · first seen May 2024

Suggested capability: Static malware analysis. This is our guess, not confirmed.

release

  • Adds guarddog v3 detection rules, expanding coverage of malicious package behaviors. v1.25.0 · Jun 2026 · source · release history
  • Adds --all-paths flag to malcontent to score all paths when diffing instead of only changed ones v1.18.0 · Dec 2025 · source · release history
  • Add initial support for image diffing v1.10.0 · Apr 2025 · source · release history
  • Update diff output to delineate between changed and unchanged files v1.8.0 · Jan 2025 · source · release history
  • Allow for rule severity overrides; add default ignore tags v1.1.0 · Oct 2024 · source · release history
  • Imports YARA rule URLs into markdown and JSON output for auditability v0.11.0 · May 2024 · source · release history

docs

  • Analyzes programs for malware capabilities using YARA rules, supporting binary/script analysis, differential comparison, and OCI image scanning.

example

  • Scan a suspicious PyPI package directory using the newly included guarddog v3 rules to catch malicious supply-chain behaviors. mal scan --third-party <path-to-package-dir> v1.25.0 · Jun 2026 · source
  • Score the entire repository state during a diff to catch issues outside modified files. malcontent diff --all-paths v1.18.0 · Dec 2025 · source
  • Analyze a program's capabilities mal analyze
OCI registry pull configuration verified Controls how the tool connects to OCI registries, including concurrency limits, retry behaviour, timeouts, and optional proxy support. 5 other sources · first seen Jun 2026

Also counts toward: Command-line interface

command line

  • --oci-pull-timeout-seconds — OCI registry response-header timeout in seconds (<=0 uses the built-in default) v1.24.0 · Jun 2026 · command-line history
  • --oci-proxy-opt-in — Honor HTTP(S)_PROXY environment variables for OCI registry traffic v1.24.0 · Jun 2026 · command-line history
  • --oci-retry-max-attempts — Maximum OCI registry pull retry attempts (<=0 uses the built-in default) v1.24.0 · Jun 2026 · command-line history
  • --oci-per-host-slots — Maximum concurrent OCI pulls per registry host (<=0 uses the built-in default) v1.24.0 · Jun 2026 · command-line history
  • --oci-retry-max-window-seconds — Maximum OCI registry pull retry backoff window in seconds (<=0 uses the built-in default) v1.24.0 · Jun 2026 · command-line history
YARA rule exclusion verified Allows specific YARA rules to be excluded from scan and diff report output by name or glob pattern, removing them before overall risk is computed. 1 release · 3 other sources · first seen Jul 2026

Also counts toward: Command-line interface

release

  • Adds --ignore-rules flag to exclude specific YARA rules from scan and diff report output. v1.25.4 · Jul 2026 · source · release history

command line

  • --ignore-rules — YARA rule names to ignore (comma-separated; supports filepath.Match globs, e.g. 'py_lib_alias_val,py_lib_*'). Ignored rules are removed from the report before overall risk is computed. v1.25.4 · Jul 2026 · command-line history

example

  • Suppress noisy or known-false-positive rules by name during a scan so they don't clutter results. mal scan --ignore-rules my_noisy_rule,another_rule <target> v1.25.4 · Jul 2026 · source
  • Exclude a specific rule when diffing two container images to focus on net-new risky behaviors. mal diff --ignore-rules some_rule --image cgr.dev/chainguard/myapp:v1.0.0 cgr.dev/chainguard/myapp:v1.0.1 v1.25.4 · Jul 2026 · source
File type detection expansion shipped Extends program and file kind detection capabilities to include additional binary types such as .bat, .cpp, .dll, .pyc, Java classes, and Python bytecode. 3 releases · 1 other source · first seen Sep 2024

Shared capability: Static malware analysis

release

  • feat expands java coverage for malware rule scanning v1.24.1 · Jun 2026 · source · release history
  • Initial Java support (particularly credential stealers) — extends detection engine to identify Java-based malware patterns. v1.6.0 · Dec 2024 · source · release history
  • Extends programkind detection to include .bat, .cpp, .dll, and .pyc file types v1.0.0 · Sep 2024 · source · release history

example

  • Analyze a Python compiled bytecode file now supported by programkind detection malcontent scan app.pyc v1.0.0 · Sep 2024 · source
Interactive and concise output modes shipped Offers a Terminal User Interface (TUI) for interactive progress monitoring and a compact output format for faster CI/CD feedback loops. 3 releases · 1 other source · first seen Mar 2024

release

  • Add new BubbleTea TUI renderer — provides an interactive terminal UI for scan progress and results. v1.6.0 · Dec 2024 · source · release history
  • Introduces a shorter output format option for scan mode to reduce verbose logging v1.0.0 · Sep 2024 · source · release history
  • Adds markdown rendering support via refactored renderer handling v0.5.0 · Mar 2024 · source · release history

example

  • Use the new shorter output format for quicker CI feedback loops malcontent scan --format short binary.dll v1.0.0 · Sep 2024 · source
Scan result diffing shipped Enables comparing existing scan results to identify changes in malicious behavior or file states over time. 3 releases · first seen Mar 2024

Also counts toward: Command-line interface

release

YARA rule centralization shipped Allows defining common private rules in a single location using include directives for easier management. 2 releases · first seen May 2025

release

  • Support absolute include paths when calling malcontent externally v1.11.1 · May 2025 · source · release history
  • Use the include directive to centralize common private rules v1.11.0 · May 2025 · source · release history
Process scanning capability shipped Allows the analysis of active system processes for malicious behavior. 1 release · first seen Oct 2024

Also counts toward: Command-line interface

release

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for malcontent, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail malcontent puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Coverage

Missing something? Tell us

What malcontent connects to, runs on and detects, read from its release notes and docs. So far: 7 updated detections.

Show

7 changes, tracked since Sep 29, 2026.

  • Sep 292026

    updated Third-party rules update (2026-09-08)

    Update third-party rules as of 2026-09-08 by @octo-sts[bot] in https://github.com/chainguard-dev/malcontent/pull/1704

    v1.26.1 Source ↗

  • Sep 292026

    updated Third-party rules update (2026-09-10)

    Update third-party rules as of 2026-09-10 by @octo-sts-2[bot] in https://github.com/chainguard-dev/malcontent/pull/1706

    v1.26.1 Source ↗

  • Sep 292026

    updated Third-party rules update (2026-09-14)

    Update third-party rules as of 2026-09-14 by @octo-sts-8[bot] in https://github.com/chainguard-dev/malcontent/pull/1709

    v1.26.1 Source ↗

  • Sep 292026

    updated Third-party rules update (2026-09-17)

    Update third-party rules as of 2026-09-17 by @octo-sts-2[bot] in https://github.com/chainguard-dev/malcontent/pull/1713

    v1.26.1 Source ↗

  • Sep 292026

    updated Third-party rules update (2026-09-20)

    Update third-party rules as of 2026-09-20 by @octo-sts-3[bot] in https://github.com/chainguard-dev/malcontent/pull/1717

    v1.26.1 Source ↗

  • Sep 292026

    updated Third-party rules update (2026-09-21)

    Update third-party rules as of 2026-09-21 by @octo-sts-2[bot] in https://github.com/chainguard-dev/malcontent/pull/1718

    v1.26.1 Source ↗

How we count

Read from 1 of 35 release notes and docs updates we hold for malcontent. "First seen" is the earliest note that names something; "last" is the latest. Our history may start partway through malcontent's life, so an old integration can show a recent first-seen date.

Each change counts once: "added 40 checks" is one line, so the numbers measure how often coverage moves, not how big the catalogue is or how well it detects.

Releases

Show
Coverage in all entries

35 entries

  1. September 20261
  2. July 20261
  3. June 20263
  4. May 20261
  5. February 20262
  6. January 20262
  7. December 20252
  8. September 20251
  9. May 20252
  10. April 20251
  11. March 20251
  12. January 20252
  13. December 20241
  14. November 20241
  15. October 20242
  16. September 20241
  17. July 20242
  18. June 20242
  19. May 20242
  20. April 20242
  21. March 20243
    Show
    Coverage in all entries

    35 entries

    Project health

    Issue, contributor and maintainer activity in chainguard-dev/malcontent, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 9 −4 vs prior 12 months
    2. Maintainers 1 +0 joined · −1 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 89% of issues opened, last 12 months
    5. Median time to close 264 days first maintainer reply 2.2 days
    6. Open backlog 6 of 189 issues ever filed
    1. Issues opened / month 1 · 1 communitymaintainers
    2. Open backlog 6
    3. Contributors / month 2
    4. Commits / month 2
    5. Stars 676
    Issue themes, last 12 months
    • features 33%
    • other 67%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →