Skip to main content

Joker CVE-2026-59172

HIGH
Inclusion of Functionality from Untrusted Control Sphere (CWE-829)
2026-09-09 https://github.com/candid82/joker GHSA-m835-3cm9-rggg
7.8
CVSS 3.1 · GitHub Advisory
Share

Severity by source

GitHub Advisory PRIMARY
7.8 HIGH
AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
vuln.today AI
7.8 HIGH

Local vector because execution occurs on victim's machine; PR:N since attacker needs only repo contribution access; UI:R for required linting trigger; full C/I/A impact from arbitrary Clojure code execution.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
POC Analysis Generated
Sep 10, 2026 - 11:24 vuln.today
Metadata Corrected
Sep 10, 2026 - 00:40 vuln.today
tag: Information Disclosure removed
Source Code Evidence Fetched
Sep 10, 2026 - 00:16 vuln.today
Analysis Generated
Sep 10, 2026 - 00:16 vuln.today
CVE Published
Sep 09, 2026 - 23:48 github-advisory
HIGH 7.8

DescriptionGitHub Advisory

Impact

In Joker versions before 1.8.2, joker --lint <file> located a .jokerd/ directory by walking up from the linted file and executed matching linter.* files from that directory before linting. Because these files are executable Joker/Clojure code, linting a file inside an untrusted repository could execute code supplied by that repository.

This could be triggered by editor integrations or CI jobs that automatically run joker --lint on checked-out source code.

Patches

Fixed in Joker v1.8.2. Executable linter customization files are now loaded only from the user's home .jokerd directory (~/.jokerd/linter.cljc, ~/.jokerd/linter.clj, ~/.jokerd/linter.cljs, or ~/.jokerd/linter.joke). Project-local .jokerd/linter.* files are no longer executed.

Workarounds

Users who cannot upgrade should avoid running joker --lint on untrusted repositories, especially through editor integrations or unattended CI. Removing or disabling project-local .jokerd/linter.* files before linting also avoids the code-execution path.

Credits

Reported by Younghun Ko of AhnLab (@koyokr).

AnalysisAI

Arbitrary code execution in Joker (the Clojure/ClojureScript linter) before v1.8.2 allows an attacker who controls files within a repository to execute arbitrary Clojure code on any developer or CI runner that lints that repository. The linter's directory-walking behavior automatically located and executed project-local .jokerd/linter.* files before processing any source file, treating attacker-controlled repository content as trusted configuration. …

Unlock full vulnerability intelligence

  • Risk assessment & exploitation conditions
  • Attack chain visualization
  • Remediation with exact patch versions
  • Threat intelligence from 22 sources
  • Personal watchlist & email alerts

Free forever · No credit card required

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata

Recon
technique details hidden
Delivery
technique details hidden
Exploit
technique details hidden
Install
technique details hidden
C2
technique details hidden
Execute
technique details hidden
Impact
technique details hidden

Vulnerability AssessmentAI

Exploitation Exploitation requires three concurrent conditions: (1) the victim runs `joker --lint <file>` on a version of Joker before 1.8.2 - directly, via an editor integration, or via a CI pipeline; (2) the file being linted resides inside a directory tree that contains a `.jokerd/` subdirectory with at least one `linter.*` file (`.cljc`, `.clj`, `.cljs`, or `.joke`) at any ancestor level; and (3) the attacker controls the content of that `linter.*` file, achievable by contributing to the repository via pull request, push, or fork. … Additional conditions and limiting factors are described in the full assessment.
Risk Assessment The CVSS 3.1 score of 7.8 (AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H) is well-calibrated for this vulnerability. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in.
Exploit Scenario Full exploit scenario with step-by-step reproduction available after sign-in.
Remediation Upgrade to Joker v1.8.2, which resolves the issue by restricting linter customization file loading to `~/.jokerd/linter.cljc`, `~/.jokerd/linter.clj`, `~/.jokerd/linter.cljs`, or `~/.jokerd/linter.joke` in the user's home directory; project-local `.jokerd/linter.*` files are no longer executed. … Detailed patch versions, workarounds, and compensating controls in full report.

Recommended ActionAI

Within 24 hours, identify all systems running Joker by querying development machines, CI/CD job configurations, and build infrastructure for installed versions; document current version numbers and deployment locations, and disable or restrict automatic linting of external or untrusted repositories in all CI/CD pipelines until upgrades complete. …

Sign in for detailed remediation steps and compensating controls.

Threat intelligence, references, and detailed analysis are available after sign-in.

Share

CVE-2026-59172 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy