# CVE-2026-82681: Query-parameter injection in AshAdmin row-action links via unencoded string primary keys

> Attackers can manipulate admin row-action links via unencoded primary keys, redirecting admins to unintended actions like deletion or editing other resources.

- **Severity:** Low 2.0 (`CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Any signed-in user
- **Attackable:** Over the internet
- **Victim action needed:** A user has to click or open something
- **Fix available:** Yes
- **Published:** 31 Aug 2026
- **Updated:** 31 Aug 2026
- **Also known as:** EEF-CVE-2026-82681, GHSA-j89q-xjrh-c26p

## What is CVE-2026-82681?

CVE-2026-82681 is a low-severity vulnerability in ash-project ash_admin, published on 31 Aug 2026. Any signed-in user can exploit it over the network, and only if a user opens a file or follows a link.

### Official description

Improper Encoding or Escaping of Output vulnerability in ash-project ash_admin lets an attacker who controls a record's string primary key rewrite the target of AshAdmin's row-action links.

The Table, DataTable, and Show components built row-action URLs by raw string interpolation, splicing the primary key (and table, domain, and resource names) into the query string without URL-encoding. Ash resources routinely use user-settable string primary keys (slugs, emails). Because Plug.Conn.Query resolves duplicate parameters last-wins and primary_key is interpolated last, a stored key such as foo&action_type=destroy injects parameters that override the link, so an admin clicking edit is sent to a destroy form or an arbitrary resource; a # truncates the query into a fragment. The fix builds every link with URI.encode_query/1, encoding all interpolated values.

This issue affects ash_admin: from 0.3.0-rc.0 before 1.3.1.

Weakness: CWE-116 (Improper Encoding or Escaping of Output)

## Which versions are affected by CVE-2026-82681?

1 open source package ship an affected version, including ash_admin.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `ash_admin` | Hex | From 0.3.0-rc.0 | 1.3.1 |

## How do I fix CVE-2026-82681?

Upgrade ash_admin to 1.3.1 or later.

## Is CVE-2026-82681 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-82681 exists.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-82681 and fix it if it is affected.

What it is: CVE-2026-82681 is a low-severity vulnerability in ash-project ash_admin, published on 31 Aug 2026. Any signed-in user can exploit it over the network, and only if a user opens a file or follows a link.
Exploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-82681 exists.

Affected packages and fixed versions:
- ash_admin (Hex): affected from 0.3.0-rc.0; fixed in 1.3.1

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-82681/ (Markdown: https://insights.sbomify.com/CVE-2026-82681/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-82681
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-82681
- OSV: https://osv.dev/vulnerability/CVE-2026-82681

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-82681/
Summaries are generated and may contain mistakes; the official description above is the record.
