{"answers":{"affected":"1 open source package ship an affected version, including ash.","exploited":"It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-101028 exists.","fix":"Upgrade ash to 3.34.6 or later.","what":"CVE-2026-101028 is a medium-severity missing authorization vulnerability in ash-project ash, published on 9 Oct 2026. Any signed-in user can exploit it over the network, with no action from the victim."},"fix_prompt":"Check this codebase for CVE-2026-101028 and fix it if it is affected.\n\nWhat it is: CVE-2026-101028 is a medium-severity missing authorization vulnerability in ash-project ash, published on 9 Oct 2026. Any signed-in user can exploit it over the network, with no action from the victim.\nExploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-101028 exists.\n\nAffected packages and fixed versions:\n- ash (Hex): affected from 2.6.0; fixed in 3.34.6\n\nTask:\n1. 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.\n2. 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.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-101028/ (Markdown: https://insights.sbomify.com/CVE-2026-101028/index.md)","id":"CVE-2026-101028","markdown":"https://insights.sbomify.com/CVE-2026-101028/index.md","name":"CVE-2026-101028","record":{"aliases":["EEF-CVE-2026-101028","GHSA-xj24-8f5c-pp5p"],"analysis":{"component_type":"library","fix_type":"upgrade","impacts":["data_read"],"network_reachable":"yes","non_default_config":false,"product_category":"Elixir Ash framework","requires_auth":"low_privilege","summary":"Attackers can bypass read policies on related resources using aggregate functions to infer hidden data existence and values.","user_interaction":"not_required","vuln_class":"missing_authorization"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"EEF","cpe":[],"cvss":{"score":6,"severity":"medium","source":"cna","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N","version":"4.0"},"cwes":[{"id":"CWE-863","name":"Incorrect Authorization"}],"description":"Incorrect Authorization vulnerability in ash-project ash allows an actor to infer data in related records they cannot read via Ash.count/2, Ash.exists/2 and Ash.aggregate/3.\n\nAsh.Actions.Aggregate.run/4 (lib/ash/actions/aggregate.ex) applied only the root resource's read policy before running the aggregate query. The read path also applies each related resource's read policy to filter and sort references that cross a relationship, directly (for example comments.body) or through an aggregate over one, but the aggregate path skipped that step. A caller whose filter or sort reaches these functions, for example through Ash.Query.filter_input/2, an ash_lua script, or an AshAi tool offering count or exists results, can test conditions against related rows hidden from them and recover their existence and attribute values one query at a time. Ash.read/2 and its page counts are not affected.\n\nThis issue affects ash: from 2.6.0 before 3.34.6.","ecosystems":["Hex"],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"weaponised"},"has_fix":true,"headline":"Ash.count, Ash.exists and Ash.aggregate skip related resources' read policies in filters and sorts","id":"CVE-2026-101028","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"Hex","product":null,"products":[],"type":"missing_authorization","year":"2026"},"n_packages":1,"n_references":5,"next":{"headline":"Gitea migration and pull mirror SSRF through multi-answer DNS","id":"CVE-2026-101029"},"packages":[{"ecosystem":"Hex","fixed":["3.34.6"],"introduced":["2.6.0"],"last_affected":[],"package":"ash","purl":"pkg:hex/ash","source":"EEF-CVE-2026-101028"}],"prev":{"headline":"Gitea migration SSRF through ALLOWED_DOMAINS address check bypass","id":"CVE-2026-101027"},"products":["ash"],"published":"2026-10-09","related":[],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"Erlang Ecosystem Foundation","prefix":"EEF"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"no","exploitation":"poc","technical_impact":"partial"},"state":"PUBLISHED","updated":"2026-10-09","vendors":["ash-project"]},"summary":"Attackers can bypass read policies on related resources using aggregate functions to infer hidden data existence and values.","url":"https://insights.sbomify.com/CVE-2026-101028/"}