malcontent
v1.26.1 open-sourceThe section your link pointed to isn't on malcontent's page any more, so we've brought you to the top.
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.
mal scan --ignore-rules my_noisy_rule,another_rule <target> mal diff --ignore-rules some_rule --image cgr.dev/chainguard/myapp:v1.0.0 cgr.dev/chainguard/myapp:v1.0.1 mal scan --third-party <path-to-package-dir> malcontent diff --all-paths malcontent refresh malcontent scan /path/to/dir --file-risk-change --file-risk-increase malcontent scan malware.xz malcontent scan app.pyc malcontent scan --format short binary.dll malcontent --include-data-files sample.bin malcontent scan --only-programs --omit-empty /path/to/target
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
Languages
Command line
No command matches.
| option | found in | since | description |
|---|
Values are placeholders taken from each option’s declared default. Nothing is executed here — the output shown is a recording of a run that already happened.
Score card
-
Shipping velocity releases a month, last 12 months
-
Documentation quality release-notes rubric, 0–100
-
Breaking-change discipline how rarely a release breaks users, and notice given
-
Maintenance risk quiet time against its own cadence, maintainers
-
Innovation & surface new capabilities, API and MCP surface
- Community health
-
Contributor trend distinct committers, this year against last
-
Maintainer concentration bus factor now against a year ago
-
Issue backlog trend issues closed per issue opened, 12 months
-
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 → Already subscribed? Sign in →Trajectory
Blank means never measured; nothing here is a filled-in zero.
Peer standings are included with Researcher and Business. See how this tool ranks against its competitors, using data we don't publish anywhere else.
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…
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.
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
-
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
-
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
-
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
-
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
-
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
-
Sep 292026
updated Third-party rules update (2026-09-28)
Update third-party rules as of 2026-09-28 by @octo-sts-2[bot] in https://github.com/chainguard-dev/malcontent/pull/1726
Nothing first seen in this window. That doesn't mean malcontent shipped nothing, only that we found no record of it.
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
35 entries
No entries match these filters.
- September 20261
- July 20261
- June 20263
- May 20261
- February 20262
- January 20262
- December 20252
- September 20251
- May 20252
- April 20251
- March 20251
- January 20252
- December 20241
- November 20241
- October 20242
- September 20241
- July 20242
- June 20242
- May 20242
- April 20242
- March 20243
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.
- Contributors 9 −4 vs prior 12 months
- Maintainers 1 +0 joined · −1 left, last 12 months
- Bus factor 1 committers behind half the commits
- Community-filed 89% of issues opened, last 12 months
- Median time to close 264 days first maintainer reply 2.2 days
- Open backlog 6 of 189 issues ever filed
- Issues opened / month 1 · 1 communitymaintainers
- Open backlog 6
- Contributors / month 2
- Commits / month 2
- Stars 676
- 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.