Skip to content
Heist/ feed
Back to feed
Medium

Loading a through relationship with a limit of 1 in Ash ignores the through path and returns unrelated destination records

Type: advisorySources: Official CVE List

Incorrect Authorization vulnerability in ash-project ash allows a client to read destination records unrelated to the source record through a through relationship. When a has_many relationship declared with through: was loaded for a single record with a limit of 1, or an unsorted has_one through relationship was loaded with a limit of 1, lateral_join?/4 in lib/ash/actions/read/relationships.ex chose the path that reads the destination without any filter linking it to the source. The load returned the first destination record by sort, or any other record with an offset. The read still runs the destination's policies but carries the relationship as accessing_from, so a client paging such a field (for example teachers(limit: 1, offset: n) through AshGraphql) can enumerate destination records that policies allow only when reached through that relationship. This issue affects ash: from 3.24.0 before 3.37.1.

Products
ash
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-114214
Confirmed fixed CVEs
Not specified
Updated in this feed
30 Oct 2026, 10:25 UTC · Revision 1

Source evidence

Loading a through relationship with a limit of 1 in Ash ignores the through path and returns unrelated destination records

core-cve · Original source

Published 25 Oct 2026, 19:47 UTC

Incorrect Authorization vulnerability in ash-project ash allows a client to read destination records unrelated to the source record through a through relationship. When a has_many relationship declared with through: was loaded for a single record with a limit of 1, or an unsorted has_one through relationship was loaded with a limit of 1, lateral_join?/4 in lib/ash/actions/read/relationships.ex chose the path that reads the destination without any filter linking it to the source. The load returned the first destination record by sort, or any other record with an offset. The read still runs the destination's policies but carries the relationship as accessing_from, so a client paging such a field (for example teachers(limit: 1, offset: n) through AshGraphql) can enumerate destination records that policies allow only when reached through that relationship. This issue affects ash: from 3.24.0 before 3.37.1.

cve:CVE-2026-114214

ash

Fixed versions: Not specified

ash

Fixed versions: Not specified

Complete source record
{
  "id": "9fc3915d29b3e1e161310fc7ca59bae7d5c105a25f4fa13d99b4c6e64d82ad24",
  "url": "https://www.cve.org/CVERecord?id=CVE-2026-114214",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Loading a through relationship with a limit of 1 in Ash ignores the through path and returns unrelated destination records",
    "summary": "Incorrect Authorization vulnerability in ash-project ash allows a client to read destination records unrelated to the source record through a through relationship. When a has_many relationship declared with through: was loaded for a single record with a limit of 1, or an unsorted has_one through relationship was loaded with a limit of 1, lateral_join?/4 in lib/ash/actions/read/relationships.ex chose the path that reads the destination without any filter linking it to the source. The load returned the first destination record by sort, or any other record with an offset. The read still runs the destination's policies but carries the relationship as accessing_from, so a client paging such a field (for example teachers(limit: 1, offset: n) through AshGraphql) can enumerate destination records that policies allow only when reached through that relationship. This issue affects ash: from 3.24.0 before 3.37.1.",
    "evidence": "cve:CVE-2026-114214",
    "products": [
      {
        "name": {
          "value": "ash",
          "evidence": "/containers/cna/affected/0/product"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": []
      },
      {
        "name": {
          "value": "ash",
          "evidence": "/containers/cna/affected/1/product"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": []
      }
    ],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-114214",
      "aliases": [
        "CVE-2026-114214"
      ],
      "metrics": [
        {
          "format": "CVSS",
          "cvssV4_0": {
            "Safety": "NOT_DEFINED",
            "version": "4.0",
            "Recovery": "NOT_DEFINED",
            "baseScore": 6,
            "Automatable": "NOT_DEFINED",
            "attackVector": "NETWORK",
            "baseSeverity": "MEDIUM",
            "valueDensity": "NOT_DEFINED",
            "vectorString": "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",
            "providerUrgency": "NOT_DEFINED",
            "userInteraction": "NONE",
            "attackComplexity": "LOW",
            "attackRequirements": "PRESENT",
            "privilegesRequired": "LOW",
            "subIntegrityImpact": "NONE",
            "vulnIntegrityImpact": "NONE",
            "subAvailabilityImpact": "NONE",
            "vulnAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "NONE",
            "vulnConfidentialityImpact": "HIGH",
            "vulnerabilityResponseEffort": "NOT_DEFINED"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "affected": [
        {
          "cpes": [
            "cpe:2.3:a:ash-project:ash:*:*:*:*:*:*:*:*"
          ],
          "repo": "https://github.com/ash-project/ash",
          "vendor": "ash-project",
          "modules": [
            "'Elixir.Ash.Actions.Read.Relationships'"
          ],
          "product": "ash",
          "versions": [
            {
              "status": "affected",
              "version": "3.24.0",
              "lessThan": "3.37.1",
              "versionType": "semver"
            }
          ],
          "packageURL": "pkg:hex/ash",
          "packageName": "ash",
          "programFiles": [
            "lib/ash/actions/read/relationships.ex"
          ],
          "collectionURL": "https://repo.hex.pm",
          "defaultStatus": "unaffected",
          "programRoutines": [
            {
              "name": "'Elixir.Ash.Actions.Read.Relationships':lateral_join?/4"
            },
            {
              "name": "'Elixir.Ash.Actions.Read.Relationships':load/4"
            }
          ]
        },
        {
          "cpes": [
            "cpe:2.3:a:ash-project:ash:*:*:*:*:*:*:*:*"
          ],
          "repo": "https://github.com/ash-project/ash",
          "vendor": "ash-project",
          "modules": [
            "'Elixir.Ash.Actions.Read.Relationships'"
          ],
          "product": "ash",
          "versions": [
            {
              "status": "affected",
              "version": "24f41e23dcbd9d07cde270a8141490e8f79251f5",
              "lessThan": "e37463307304b26bc8fd606322e5c4d8f7f060e5",
              "versionType": "git"
            }
          ],
          "packageURL": "pkg:github/ash-project/ash",
          "packageName": "ash-project/ash",
          "programFiles": [
            "lib/ash/actions/read/relationships.ex"
          ],
          "collectionURL": "https://github.com",
          "defaultStatus": "unaffected",
          "programRoutines": [
            {
              "name": "'Elixir.Ash.Actions.Read.Relationships':lateral_join?/4"
            },
            {
              "name": "'Elixir.Ash.Actions.Read.Relationships':load/4"
            }
          ]
        }
      ],
      "modified": "2026-10-26T14:35:21.414Z",
      "provider": "cve",
      "references": [
        "https://github.com/ash-project/ash/security/advisories/GHSA-g2h4-xp57-q863",
        "https://cna.erlef.org/cves/CVE-2026-114214.html",
        "https://osv.dev/vulnerability/EEF-CVE-2026-114214",
        "https://github.com/ash-project/ash/commit/24f41e23dcbd9d07cde270a8141490e8f79251f5",
        "https://github.com/ash-project/ash/commit/e37463307304b26bc8fd606322e5c4d8f7f060e5"
      ],
      "provider_metadata": {
        "adp": [
          {
            "title": "CISA ADP Vulnrichment",
            "metrics": [
              {
                "other": {
                  "type": "ssvc",
                  "content": {
                    "id": "CVE-2026-114214",
                    "role": "CISA Coordinator",
                    "options": [
                      {
                        "Exploitation": "none"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "version": "2.0.3",
                    "timestamp": "2026-10-26T14:28:34.411522Z"
                  }
                }
              }
            ],
            "providerMetadata": {
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP",
              "dateUpdated": "2026-10-26T14:35:21.414Z"
            }
          }
        ],
        "cna": {
          "orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
          "shortName": "EEF",
          "dateUpdated": "2026-10-25T19:47:30.612Z"
        }
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-114214",
        "evidence": "/cveMetadata/cveId"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/containers/cna/metrics"
  },
  "source_id": "core-cve",
  "document_id": 311569,
  "published_at": "2026-10-25T19:47:30.612+00:00"
}