CVE-2026-59172
nicheArbitrary Code Execution in Joker Linter via Project-Local .jokerd Files
Joker, a Clojure/ClojureScript linter written in Go, allowed arbitrary code execution because versions before 1.8.2 searched for a `.jokerd/` directory by walking up from the file being linted and executed any `linter.*` files found there. An attacker who controls a repository can therefore plant malicious `linter.clj`/`linter.cljc`/`linter.cljs`/`linter.joke` files that run with the privileges of the user or CI runner as soon as `joker --lint` is run on any file in that checkout. The flaw is most likely to be triggered by editor integrations or automated CI jobs that lint checked-out source code without review. Anyone running Joker versions before 1.8.2 against untrusted repositories is affected, while linting only one's own trusted projects carries little risk. No public proof-of-concept is known, the issue is not in the CISA KEV catalog, and there are no reports of exploitation in the wild.
What to do: Upgrade to Joker v1.8.2, which executes linter customization files only from the user's home `~/.jokerd` directory and no longer runs project-local `.jokerd/linter.*` files. Until upgraded, avoid running `joker --lint` on untrusted repositories, especially via editor integrations or unattended CI jobs, and remove or disable any project-local `.jokerd/linter.*` files before linting. Review recently cloned or CI-processed repositories for unexpected `.jokerd/linter.*` files.
| Joker (open-source project) Joker Clojure linter | All versions before 1.8.2 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Joker linter executed project-local .jokerd/linter.* files during linting ## 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).
- Ecosystems
- go
- Weakness
- CWE-829
- Vector
- CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
- GHSA
- GHSA-m835-3cm9-rggg (high)
In the news0 stories
No ingested article mentions this CVE yet.