Joker CVE-2026-59172
HIGHSeverity by source
AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
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.
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
5DescriptionGitHub 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
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
External POC / Exploit Code
Leaving vuln.today
GHSA-m835-3cm9-rggg