CVE-2026-57113
Summary
PraisonAI's template loader accepts GitHub template URIs with refs, for example
github:owner/repo/template@v1.0.0. The resolver stores the user-controlled
template path and ref verbatim, and the cache layer later joins those values into
~/.praison/cache/templates/github/<owner>/<repo>/<template>/<ref> without
normalizing each segment or checking that the final path remains inside the
template cache root.
A crafted ref such as ../../../../../../outside-delete-target therefore
escapes the cache directory. The first load can write .cache_meta.json outside
the cache. If the normal cache hierarchy for the same owner/repo/template has
already been created, the same path reaches shutil.rmtree(cache_path) and
removes an attacker-selected outside directory before replacing it with cache
metadata.
This is distinct from the old template Zip Slip advisory. No malicious archive
member is needed, and the PoV disables network access entirely. The bug is in
cache-key construction for GitHub template URIs.
Affected versions
Confirmed vulnerable:
- v2.6.0
- v3.9.24
- v3.9.26
- v4.5.126
- v4.5.128
- v4.6.9
- v4.6.10
- v4.6.56
- v4.6.57
- current head 2f9677abb2ea68eab864ee8b6a828fd0141612e1
Recommended affected range: >= 2.6.0, <= 4.6.57.
No fixed version is known at the time of this report.
Impact
An attacker who can cause a user or service to load an attacker-supplied
PraisonAI GitHub template URI can:
- create .cache_meta.json outside the template cache directory;
- delete a directory reachable by the PraisonAI process after a normal cache
entry exists for the same owner/repo/template prefix;
- corrupt user configuration, project state, or application data reachable by
the process permissions.
Root cause
Current-head code path:
- praisonai/templates/resolver.py: GITHUB_PATTERN captures path and ref
with broad regex groups and returns them without segment validation.
- praisonai/templates/security.py: is_source_allowed() allows GitHub sources
by default when al
⚡ Watch CVE-2026-57113
Get an email if CVE-2026-57113 is added to CISA KEV, gains public exploit code, or a new advisory cites it — max one per day, one-click unsubscribe.
Advisory coverage (1)
External references
Embed the live status
— this badge updates automatically when the KEV or exploit status changes. How to embed it →
[](https://www.csirts.com/cve/CVE-2026-57113)