Read the docs

Arbitrary file read in djust find_handlers_for_template MCP tool

Priority MEDIUM 49CWE-22Published · Updated

Key facts

Attack vector
Local
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
Information disclosure
Confidentiality · integrity · availability
Low · None · None
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-22 and the CVSS impact.

Summary

djust is affected from 0.9.0 before 1.0.10, from 1.1.0 before 1.1.7, from 1.2.0.dev0 before 1.2.4, and from 1.3.0.dev0 before 1.3.0rc8. The find_handlers_for_template MCP tool does not restrict an absolute template_path to the project or template directories (CWE-22). A local MCP client with low privileges can use it to probe file existence and read matching substrings of djust event attributes from files the djust process can read.

Written with Claude Haiku 5.5 from the sources below · 2026-10-28

Description from the CNA

djust provides Phoenix LiveView-style reactive server-side rendering for Django with Rust-powered performance. From 0.9.0 until 1.0.10, 1.1.7, 1.2.4, and 1.3.0rc8, the find_handlers_for_template MCP tool in python/djust/mcp/server.py accepts an existing absolute template_path and reads it without restricting the resolved path to the project or configured template directories. A local MCP client can use the tool as a file existence and readability oracle and can obtain substrings that match the tool's dj-click, dj-submit, dj-change, dj-input, dj-keydown, or dj-keyup attribute pattern from files readable by the djust process. The maintainer assessment states that the MCP server communicates over local stdio as the same operating-system user and has no network listener, and the tool does not return arbitrary raw file contents. This issue is fixed in versions 1.0.10, 1.1.7, 1.2.4, and 1.3.0rc8.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00187 8th percentileScored 2026-11-07
Fix Fixed djust (djust-org): 1.0.10, 1.1.7, 1.2.4 +1djust (PyPI): 1.0.10, 1.1.7, 1.2.4 +1

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
djust-orgdjust0.9.0 to before 1.0.10; 1.1.0 to before 1.1.7; 1.2.0.dev0 to before 1.2.4; 1.3.0.dev0 to before 1.3.0rc81.0.10, 1.1.7, 1.2.4, 1.3.0rc8Patch availableCNA
—djust (PyPI)0.9.0 to before 1.0.101.0.10Patch availableGHSA-r57g-mc79-8hj2
—djust (PyPI)1.1.0 to before 1.1.71.1.7Patch availableGHSA-r57g-mc79-8hj2
—djust (PyPI)1.2.0.dev0 to before 1.2.41.2.4Patch availableGHSA-r57g-mc79-8hj2
—djust (PyPI)1.3.0.dev0 to before 1.3.0rc81.3.0rc8Patch availableGHSA-r57g-mc79-8hj2
  • djust Vendordjust-org Affected 0.9.0 to before 1.0.10; 1.1.0 to before 1.1.7; 1.2.0.dev0 to before 1.2.4; 1.3.0.dev0 to before 1.3.0rc8 Fixed in 1.0.10, 1.1.7, 1.2.4, 1.3.0rc8 Patch available CNA
  • djust (PyPI) Vendor— Affected 0.9.0 to before 1.0.10 Fixed in 1.0.10 Patch available GHSA-r57g-mc79-8hj2
  • djust (PyPI) Vendor— Affected 1.1.0 to before 1.1.7 Fixed in 1.1.7 Patch available GHSA-r57g-mc79-8hj2
  • djust (PyPI) Vendor— Affected 1.2.0.dev0 to before 1.2.4 Fixed in 1.2.4 Patch available GHSA-r57g-mc79-8hj2
  • djust (PyPI) Vendor— Affected 1.3.0.dev0 to before 1.3.0rc8 Fixed in 1.3.0rc8 Patch available GHSA-r57g-mc79-8hj2

Remediation

Upgrade djust to 1.0.10, 1.1.7, 1.2.4 or 1.3.0rc8, the fixed version for each affected release line.

Written with Claude Haiku 5.5 from the sources below · 2026-10-28

  • Fix · CNA djust (djust-org) Fixed in 1.0.10, 1.1.7, 1.2.4, 1.3.0rc8
  • Fix · GHSA-r57g-mc79-8hj2 djust (PyPI) Fixed in 1.0.10 Advisory →
  • Fix · GHSA-r57g-mc79-8hj2 djust (PyPI) Fixed in 1.1.7 Advisory →
  • Fix · GHSA-r57g-mc79-8hj2 djust (PyPI) Fixed in 1.2.4 Advisory →
  • Fix · GHSA-r57g-mc79-8hj2 djust (PyPI) Fixed in 1.3.0rc8 Advisory →

Timeline

  1. 2026-10-21 Threatist record created from CVE-2026-113731
  2. 2026-10-21 Alias added: GHSA-r57g-mc79-8hj2
  3. 2026-10-21 Fix available: PyPI/[email protected], PyPI/[email protected], PyPI/[email protected] +1 · GHSA-r57g-mc79-8hj2
  4. 2026-10-21 CVSS score added · GHSA-r57g-mc79-8hj2
  5. 2026-10-21 Weakness changed · GHSA-r57g-mc79-8hj2
  6. 2026-10-21 11 new references · GHSA-r57g-mc79-8hj2
  7. 2026-10-28 CISA SSVC decision points changed
  8. 2026-10-28 Priority changed: LOW → MEDIUM

References

  • TI-2026-40112 Improper authorization in djust-org djust CVSS 3.1HIGH 8.2
  • TI-2026-44127 djust has an unauthenticated arbitrary module import via the WebSocket/SSE view-mount path CVSS 4.0HIGH 8.8
  • TI-2026-44122 djust has an authorization bypass on the WebSocket/SSE mount path CVSS 3.1CRITICAL 9.1
  • TI-2026-44121 Cross-site request forgery in djust-org djust CVSS 3.1HIGH 8.1
  • TI-2026-44119 djust: Unsigned client state snapshot is restored as trusted view state (privilege escalation / state injection) CVSS 3.1HIGH 8.1
  • TI-2026-44120 Session fixation in djust-org djust CVSS 3.1HIGH 7.4
See all 13 →

Sources