CVE-2025-3841 is a low severity template injection flaw (CVSS 3.3) in wix-incubator jam, up to commit e87a6fd85cf8. It affects the Jinja2 template handler in jam.py and can only be launched on the local host. The project uses rolling releases, so no version numbers exist. Review how the template value is used.
What's affected
The record names wix-incubator jam up to commit e87a6fd85cf8fb5ff37b62b2d68f917219d07ae9. The affected file is jam.py, in the Jinja2 Template Handler component, and the argument is config['template'].
The record says the product follows rolling releases, so version details for affected and updated releases are not available. That means a version number cannot tell you whether you are exposed. The commit you have checked out can.
The record lists the weakness as CWE-1336 (improper neutralization of special elements used in a template engine), CWE-791 (incomplete filtering of special elements) and CWE-94 (improper control of generation of code). The CVSS 3.1 score is 3.3 (low), with the vector CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N. The vector shows the flaw can be reached only from the local machine, and a low privilege account is needed. Confidentiality impact is rated no, integrity low and availability no.
The record says the exploit has been disclosed to the public and may be used, and that the attack is launched on the local host. It is not on the CISA Known Exploited Vulnerabilities list, and nothing reviewed says it is exploited in the wild.
How to check if you're exposed
Because the project has no versioned releases, compare commits.
- If you cloned the repository, print the commit you are on:
git rev-parse HEAD
- Check whether that commit is the one named in the record, or an ancestor of it:
git merge-base --is-ancestor e87a6fd85cf8fb5ff37b62b2d68f917219d07ae9 HEAD && echo 'at or after the named commit'
- Read how jam.py uses config['template']. Look for places where a template string from configuration or input is rendered directly.
- Check who can edit the configuration that holds the template value. The attack is local, so write access to that file matters.
The free in-browser dependency scan covers packages in your projects, and the Gold directory lets you look up related CVEs. Tools that follow a repository by commit need a manual review.
What to do now
- Check the project's issue tracker and the record's references for a fix, and move to a commit that includes it.
- Restrict who can write to the configuration or inputs that set the template value.
- Render only templates you ship with the tool. Do not render template text supplied by a user or a file others can edit.
- Use a sandboxed Jinja2 environment if templates must come from outside, so that templates cannot reach unsafe objects.
- Run the tool under an unprivileged account, since the attack is local.
- Pin the commit you use in your own build so that changes in the project do not reach you without review.
Why it matters
Template engines turn text into output by running small expressions. If an attacker can control the template text, those expressions can be made to do more than the author intended. The record lists CWE-1336, improper neutralization of special elements used in a template engine, along with CWE-94, code injection, and CWE-791, incomplete filtering.
The score is low, 3.3, because the attacker must already be on the machine with an account. That limits the damage. It does not remove the need to treat template values as code. A local flaw can still matter on a shared build server, where several people or jobs run as different users.
Quick check
Is there a fixed version of jam?
The record says version details are not available because the project uses rolling releases. Check the repository and the record's references for a commit that fixes it.
Can this be attacked over the internet?
The record says the attack is launched on the local host, and the vector marks it as a local attack that needs a low privilege account.
Sources
- Gold entry for CVE-2025-3841
- NVD record for CVE-2025-3841, published 2025-04-21, as summarized above
- Reference listed in the record
- Reference listed in the record
- Reference listed in the record
- Reference listed in the record
Last reviewed: 18 October 2026.