---
id: "CVE-2026-59172"
kind: "vulnerability"
aliases: ["CVE-2026-59172"]
title: "Joker linter runs repository-supplied code when linting untrusted files"
severity: "high"
cvss: 7.8
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["ci", "clojure", "editor-integration", "go", "joker", "package"]
not_affected_if: ["joker-not-installed", "lints-trusted-code-only"]
published_at: "2026-10-28T14:17:04+00:00"
first_seen_at: "2026-10-28T14:33:23+00:00"
updated_at: "2026-10-28T14:34:26+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-59172", "first_seen_at": "2026-10-28T14:33:23+00:00"}]
---

# Joker linter runs repository-supplied code when linting untrusted files

Joker's `--lint` mode searches parent directories for a `.jokerd/` folder and runs any `linter.*` files it finds before linting. A malicious repository can ship such files, so linting a checked-out file runs the attacker's code with the linter user's privileges.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Run `joker --version` and confirm it reports a version below `1.8.2`.
- Check whether editor integrations or CI jobs run `joker --lint` on checked-out source from untrusted repositories.

## Fix

- Upgrade Joker to `1.8.2` or later, which loads executable customization only from the user's home directory.
- Until upgraded, avoid running `joker --lint` on files from untrusted repositories.

## Timeline

- 2026-10-28T14:33:23+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-59172

## From the sources

Joker is a small Clojure interpreter, linter and formatter written in Go. Prior to 1.8.2, `joker --lint <file>` walks upward from the linted file to locate a `.jokerd/` directory and executes matching `linter.*` files before linting. Those files contain executable Joker/Clojure code, so linting a file inside an untrusted repository can execute repository-supplied code with the linter user's privileges. Editor integrations and CI jobs that automatically lint checked-out source can trigger this behavior. The patch stops executing project-local linter customizations and loads executable customization only from the user's home directory. This issue is fixed in version 1.8.2.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
