CVE-2026-77950 (GCVE-0-2026-77950)

Vulnerability from cvelistv5 – Published: 2026-09-01 02:08 – Updated: 2026-09-01 14:53
VLAI
Title
RPC error handler fails open in AshTypescript, disclosing unredacted errors
Summary
Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to receive unredacted internal error data by provoking an error shape the configured error handler does not match. apply_error_handler/3 in lib/ash_typescript/rpc/errors.ex is the only hook an application has for redacting or suppressing errors before they reach the client, with a nil return dropping the error entirely. Its rescue clause logs a warning and then returns the original, pre-handler error map. Error handlers are conventionally written as pattern-matching functions over expected error shapes, so an unmatched shape raises FunctionClauseError and the raw transformed error, including any secrets carried in vars, is emitted instead. An intent to suppress an error becomes an intent to publish it. The rescue catches exceptions only, so a handler that throws or exits still propagates. This issue affects ash_typescript: from 0.8.0 before 0.18.0.
SSVC
Exploitation: poc Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-09-01 14:50 UTC
CWE
  • CWE-209 - Generation of Error Message Containing Sensitive Information
Assigner
EEF CNA under the mitre root
CNA scorecard A 97/100 over 313 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
ash-project ash_typescript Affected: 0.8.0 , < 0.18.0 (semver)
    cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*
Create a notification for this product.
ash-project ash_typescript Affected: cb01cc8749e5a2a17fb45aedbe75df30a9f1126e , < 59d8e985a98cf2e01794dbe5b919b897a95311f4 (git)
    cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-77950",
                "options": [
                  {
                    "Exploitation": "poc"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-09-01T14:50:21.265873Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-09-01T14:53:26.458Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "references": [
          {
            "tags": [
              "exploit"
            ],
            "url": "https://github.com/ash-project/ash_typescript/security/advisories/GHSA-mjr7-r3rf-x963"
          }
        ],
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "collectionURL": "https://repo.hex.pm",
          "cpes": [
            "cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "\u0027Elixir.AshTypescript.Rpc.Errors\u0027"
          ],
          "packageName": "ash_typescript",
          "packageURL": "pkg:hex/ash_typescript",
          "product": "ash_typescript",
          "programFiles": [
            "lib/ash_typescript/rpc/errors.ex"
          ],
          "programRoutines": [
            {
              "name": "\u0027Elixir.AshTypescript.Rpc.Errors\u0027:apply_error_handler/3"
            },
            {
              "name": "\u0027Elixir.AshTypescript.Rpc.Errors\u0027:to_errors/5"
            }
          ],
          "repo": "https://github.com/ash-project/ash_typescript",
          "vendor": "ash-project",
          "versions": [
            {
              "lessThan": "0.18.0",
              "status": "affected",
              "version": "0.8.0",
              "versionType": "semver"
            }
          ]
        },
        {
          "collectionURL": "https://github.com",
          "cpes": [
            "cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "\u0027Elixir.AshTypescript.Rpc.Errors\u0027"
          ],
          "packageName": "ash-project/ash_typescript",
          "packageURL": "pkg:github/ash-project/ash_typescript",
          "product": "ash_typescript",
          "programFiles": [
            "lib/ash_typescript/rpc/errors.ex"
          ],
          "programRoutines": [
            {
              "name": "\u0027Elixir.AshTypescript.Rpc.Errors\u0027:apply_error_handler/3"
            },
            {
              "name": "\u0027Elixir.AshTypescript.Rpc.Errors\u0027:to_errors/5"
            }
          ],
          "repo": "https://github.com/ash-project/ash_typescript",
          "vendor": "ash-project",
          "versions": [
            {
              "lessThan": "59d8e985a98cf2e01794dbe5b919b897a95311f4",
              "status": "affected",
              "version": "cb01cc8749e5a2a17fb45aedbe75df30a9f1126e",
              "versionType": "git"
            }
          ]
        }
      ],
      "configurations": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eThe application exposes an AshTypescript RPC endpoint over HTTP and configures a custom \u003ccode\u003eerror_handler\u003c/code\u003e in its \u003ccode\u003etypescript_rpc\u003c/code\u003e domain section for redaction or suppression.\u003c/p\u003e"
            },
            {
              "base64": false,
              "type": "text/markdown",
              "value": "The application exposes an AshTypescript RPC endpoint over HTTP and configures a custom `error_handler` in its `typescript_rpc` domain section for redaction or suppression."
            }
          ],
          "value": "The application exposes an AshTypescript RPC endpoint over HTTP and configures a custom error_handler in its typescript_rpc domain section for redaction or suppression."
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "0.18.0",
                  "versionStartIncluding": "0.8.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ],
          "operator": "AND"
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Peter Ullrich"
        },
        {
          "lang": "en",
          "type": "reporter",
          "value": "Peter Ullrich"
        },
        {
          "lang": "en",
          "type": "remediation developer",
          "value": "Torkild Gundersen Kjevik / Ash Project"
        },
        {
          "lang": "en",
          "type": "coordinator",
          "value": "Jonatan M\u00e4nnchen / EEF"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eGeneration of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to receive unredacted internal error data by provoking an error shape the configured error handler does not match.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eapply_error_handler/3\u003c/code\u003e in \u003ccode\u003elib/ash_typescript/rpc/errors.ex\u003c/code\u003e is the only hook an application has for redacting or suppressing errors before they reach the client, with a \u003ccode\u003enil\u003c/code\u003e return dropping the error entirely. Its \u003ccode\u003erescue\u003c/code\u003e clause logs a warning and then returns the original, pre-handler error map. Error handlers are conventionally written as pattern-matching functions over expected error shapes, so an unmatched shape raises \u003ccode\u003eFunctionClauseError\u003c/code\u003e and the raw transformed error, including any secrets carried in \u003ccode\u003evars\u003c/code\u003e, is emitted instead. An intent to suppress an error becomes an intent to publish it. The \u003ccode\u003erescue\u003c/code\u003e catches exceptions only, so a handler that throws or exits still propagates.\u003c/p\u003e\n\u003cp\u003eThis issue affects ash_typescript: from 0.8.0 before 0.18.0.\u003c/p\u003e"
            },
            {
              "base64": false,
              "type": "text/markdown",
              "value": "Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to receive unredacted internal error data by provoking an error shape the configured error handler does not match.\n\n`apply_error_handler/3` in `lib/ash_typescript/rpc/errors.ex` is the only hook an application has for redacting or suppressing errors before they reach the client, with a `nil` return dropping the error entirely. Its `rescue` clause logs a warning and then returns the original, pre-handler error map. Error handlers are conventionally written as pattern-matching functions over expected error shapes, so an unmatched shape raises `FunctionClauseError` and the raw transformed error, including any secrets carried in `vars`, is emitted instead. An intent to suppress an error becomes an intent to publish it. The `rescue` catches exceptions only, so a handler that throws or exits still propagates.\n\nThis issue affects ash_typescript: from 0.8.0 before 0.18.0."
            }
          ],
          "value": "Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to receive unredacted internal error data by provoking an error shape the configured error handler does not match.\n\napply_error_handler/3 in lib/ash_typescript/rpc/errors.ex is the only hook an application has for redacting or suppressing errors before they reach the client, with a nil return dropping the error entirely. Its rescue clause logs a warning and then returns the original, pre-handler error map. Error handlers are conventionally written as pattern-matching functions over expected error shapes, so an unmatched shape raises FunctionClauseError and the raw transformed error, including any secrets carried in vars, is emitted instead. An intent to suppress an error becomes an intent to publish it. The rescue catches exceptions only, so a handler that throws or exits still propagates.\n\nThis issue affects ash_typescript: from 0.8.0 before 0.18.0."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-54",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-54 Query System for Information"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "Automatable": "NOT_DEFINED",
            "Recovery": "NOT_DEFINED",
            "Safety": "NOT_DEFINED",
            "attackComplexity": "LOW",
            "attackRequirements": "PRESENT",
            "attackVector": "NETWORK",
            "baseScore": 6.3,
            "baseSeverity": "MEDIUM",
            "privilegesRequired": "NONE",
            "providerUrgency": "NOT_DEFINED",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "NONE",
            "subIntegrityImpact": "NONE",
            "userInteraction": "NONE",
            "valueDensity": "NOT_DEFINED",
            "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N",
            "version": "4.0",
            "vulnAvailabilityImpact": "NONE",
            "vulnConfidentialityImpact": "LOW",
            "vulnIntegrityImpact": "NONE",
            "vulnerabilityResponseEffort": "NOT_DEFINED"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-209",
              "description": "CWE-209 Generation of Error Message Containing Sensitive Information",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-01T02:08:54.754Z",
        "orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "shortName": "EEF"
      },
      "references": [
        {
          "tags": [
            "related",
            "vendor-advisory"
          ],
          "url": "https://github.com/ash-project/ash_typescript/security/advisories/GHSA-mjr7-r3rf-x963"
        },
        {
          "tags": [
            "related"
          ],
          "url": "https://cna.erlef.org/cves/CVE-2026-77950.html"
        },
        {
          "tags": [
            "related"
          ],
          "url": "https://osv.dev/vulnerability/EEF-CVE-2026-77950"
        },
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/ash-project/ash_typescript/commit/59d8e985a98cf2e01794dbe5b919b897a95311f4"
        }
      ],
      "source": {
        "discovery": "EXTERNAL"
      },
      "title": "RPC error handler fails open in AshTypescript, disclosing unredacted errors"
    }
  },
  "cveMetadata": {
    "assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
    "assignerShortName": "EEF",
    "cveId": "CVE-2026-77950",
    "datePublished": "2026-09-01T02:08:54.754Z",
    "dateReserved": "2026-08-30T17:30:01.402Z",
    "dateUpdated": "2026-09-01T14:53:26.458Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-77950",
      "date": "2026-10-18",
      "epss": "0.00547",
      "percentile": "0.44634"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "collectionURL": "https://repo.hex.pm",
                "cpes": [
                  "cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*"
                ],
                "defaultStatus": "unaffected",
                "modules": [
                  "\u0027Elixir.AshTypescript.Rpc.Errors\u0027"
                ],
                "packageName": "ash_typescript",
                "packageURL": "pkg:hex/ash_typescript",
                "product": "ash_typescript",
                "programFiles": [
                  "lib/ash_typescript/rpc/errors.ex"
                ],
                "programRoutines": [
                  {
                    "name": "\u0027Elixir.AshTypescript.Rpc.Errors\u0027:apply_error_handler/3"
                  },
                  {
                    "name": "\u0027Elixir.AshTypescript.Rpc.Errors\u0027:to_errors/5"
                  }
                ],
                "repo": "https://github.com/ash-project/ash_typescript",
                "vendor": "ash-project",
                "versions": [
                  {
                    "lessThan": "0.18.0",
                    "status": "affected",
                    "version": "0.8.0",
                    "versionType": "semver"
                  }
                ]
              },
              {
                "collectionURL": "https://github.com",
                "cpes": [
                  "cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*"
                ],
                "defaultStatus": "unaffected",
                "modules": [
                  "\u0027Elixir.AshTypescript.Rpc.Errors\u0027"
                ],
                "packageName": "ash-project/ash_typescript",
                "packageURL": "pkg:github/ash-project/ash_typescript",
                "product": "ash_typescript",
                "programFiles": [
                  "lib/ash_typescript/rpc/errors.ex"
                ],
                "programRoutines": [
                  {
                    "name": "\u0027Elixir.AshTypescript.Rpc.Errors\u0027:apply_error_handler/3"
                  },
                  {
                    "name": "\u0027Elixir.AshTypescript.Rpc.Errors\u0027:to_errors/5"
                  }
                ],
                "repo": "https://github.com/ash-project/ash_typescript",
                "vendor": "ash-project",
                "versions": [
                  {
                    "lessThan": "59d8e985a98cf2e01794dbe5b919b897a95311f4",
                    "status": "affected",
                    "version": "cb01cc8749e5a2a17fb45aedbe75df30a9f1126e",
                    "versionType": "git"
                  }
                ]
              }
            ],
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to receive unredacted internal error data by provoking an error shape the configured error handler does not match.\n\napply_error_handler/3 in lib/ash_typescript/rpc/errors.ex is the only hook an application has for redacting or suppressing errors before they reach the client, with a nil return dropping the error entirely. Its rescue clause logs a warning and then returns the original, pre-handler error map. Error handlers are conventionally written as pattern-matching functions over expected error shapes, so an unmatched shape raises FunctionClauseError and the raw transformed error, including any secrets carried in vars, is emitted instead. An intent to suppress an error becomes an intent to publish it. The rescue catches exceptions only, so a handler that throws or exits still propagates.\n\nThis issue affects ash_typescript: from 0.8.0 before 0.18.0."
          }
        ],
        "id": "CVE-2026-77950",
        "lastModified": "2026-09-01T21:15:00.147",
        "metrics": {
          "cvssMetricV40": [
            {
              "cvssData": {
                "Automatable": "NOT_DEFINED",
                "Recovery": "NOT_DEFINED",
                "Safety": "NOT_DEFINED",
                "attackComplexity": "LOW",
                "attackRequirements": "PRESENT",
                "attackVector": "NETWORK",
                "availabilityRequirement": "NOT_DEFINED",
                "baseScore": 6.3,
                "baseSeverity": "MEDIUM",
                "confidentialityRequirement": "NOT_DEFINED",
                "exploitMaturity": "NOT_DEFINED",
                "integrityRequirement": "NOT_DEFINED",
                "modifiedAttackComplexity": "NOT_DEFINED",
                "modifiedAttackRequirements": "NOT_DEFINED",
                "modifiedAttackVector": "NOT_DEFINED",
                "modifiedPrivilegesRequired": "NOT_DEFINED",
                "modifiedSubAvailabilityImpact": "NOT_DEFINED",
                "modifiedSubConfidentialityImpact": "NOT_DEFINED",
                "modifiedSubIntegrityImpact": "NOT_DEFINED",
                "modifiedUserInteraction": "NOT_DEFINED",
                "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
                "modifiedVulnConfidentialityImpact": "NOT_DEFINED",
                "modifiedVulnIntegrityImpact": "NOT_DEFINED",
                "privilegesRequired": "NONE",
                "providerUrgency": "NOT_DEFINED",
                "subAvailabilityImpact": "NONE",
                "subConfidentialityImpact": "NONE",
                "subIntegrityImpact": "NONE",
                "userInteraction": "NONE",
                "valueDensity": "NOT_DEFINED",
                "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
                "version": "4.0",
                "vulnAvailabilityImpact": "NONE",
                "vulnConfidentialityImpact": "LOW",
                "vulnIntegrityImpact": "NONE",
                "vulnerabilityResponseEffort": "NOT_DEFINED"
              },
              "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
              "type": "Secondary"
            }
          ],
          "ssvcV203": [
            {
              "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "ssvcData": {
                "id": "CVE-2026-77950",
                "options": [
                  {
                    "exploitation": "poc"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-09-01T14:50:21.265873Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2026-09-01T03:16:51.660",
        "references": [
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://cna.erlef.org/cves/CVE-2026-77950.html"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://github.com/ash-project/ash_typescript/commit/59d8e985a98cf2e01794dbe5b919b897a95311f4"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://github.com/ash-project/ash_typescript/security/advisories/GHSA-mjr7-r3rf-x963"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://osv.dev/vulnerability/EEF-CVE-2026-77950"
          },
          {
            "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
            "url": "https://github.com/ash-project/ash_typescript/security/advisories/GHSA-mjr7-r3rf-x963"
          }
        ],
        "sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "vulnStatus": "Deferred",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-209"
              }
            ],
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "type": "Secondary"
          }
        ]
      }
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2026-77950",
                    "options": [
                      {
                        "Exploitation": "poc"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2026-09-01T14:50:21.265873Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2026-09-01T14:50:36.257Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "references": [
              {
                "tags": [
                  "exploit"
                ],
                "url": "https://github.com/ash-project/ash_typescript/security/advisories/GHSA-mjr7-r3rf-x963"
              }
            ],
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "collectionURL": "https://repo.hex.pm",
              "cpes": [
                "cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*"
              ],
              "defaultStatus": "unaffected",
              "modules": [
                "\u0027Elixir.AshTypescript.Rpc.Errors\u0027"
              ],
              "packageName": "ash_typescript",
              "packageURL": "pkg:hex/ash_typescript",
              "product": "ash_typescript",
              "programFiles": [
                "lib/ash_typescript/rpc/errors.ex"
              ],
              "programRoutines": [
                {
                  "name": "\u0027Elixir.AshTypescript.Rpc.Errors\u0027:apply_error_handler/3"
                },
                {
                  "name": "\u0027Elixir.AshTypescript.Rpc.Errors\u0027:to_errors/5"
                }
              ],
              "repo": "https://github.com/ash-project/ash_typescript",
              "vendor": "ash-project",
              "versions": [
                {
                  "lessThan": "0.18.0",
                  "status": "affected",
                  "version": "0.8.0",
                  "versionType": "semver"
                }
              ]
            },
            {
              "collectionURL": "https://github.com",
              "cpes": [
                "cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*"
              ],
              "defaultStatus": "unaffected",
              "modules": [
                "\u0027Elixir.AshTypescript.Rpc.Errors\u0027"
              ],
              "packageName": "ash-project/ash_typescript",
              "packageURL": "pkg:github/ash-project/ash_typescript",
              "product": "ash_typescript",
              "programFiles": [
                "lib/ash_typescript/rpc/errors.ex"
              ],
              "programRoutines": [
                {
                  "name": "\u0027Elixir.AshTypescript.Rpc.Errors\u0027:apply_error_handler/3"
                },
                {
                  "name": "\u0027Elixir.AshTypescript.Rpc.Errors\u0027:to_errors/5"
                }
              ],
              "repo": "https://github.com/ash-project/ash_typescript",
              "vendor": "ash-project",
              "versions": [
                {
                  "lessThan": "59d8e985a98cf2e01794dbe5b919b897a95311f4",
                  "status": "affected",
                  "version": "cb01cc8749e5a2a17fb45aedbe75df30a9f1126e",
                  "versionType": "git"
                }
              ]
            }
          ],
          "configurations": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eThe application exposes an AshTypescript RPC endpoint over HTTP and configures a custom \u003ccode\u003eerror_handler\u003c/code\u003e in its \u003ccode\u003etypescript_rpc\u003c/code\u003e domain section for redaction or suppression.\u003c/p\u003e"
                },
                {
                  "base64": false,
                  "type": "text/markdown",
                  "value": "The application exposes an AshTypescript RPC endpoint over HTTP and configures a custom `error_handler` in its `typescript_rpc` domain section for redaction or suppression."
                }
              ],
              "value": "The application exposes an AshTypescript RPC endpoint over HTTP and configures a custom error_handler in its typescript_rpc domain section for redaction or suppression."
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:a:ash-project:ash_typescript:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "0.18.0",
                      "versionStartIncluding": "0.8.0",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "OR"
                }
              ],
              "operator": "AND"
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "finder",
              "value": "Peter Ullrich"
            },
            {
              "lang": "en",
              "type": "reporter",
              "value": "Peter Ullrich"
            },
            {
              "lang": "en",
              "type": "remediation developer",
              "value": "Torkild Gundersen Kjevik / Ash Project"
            },
            {
              "lang": "en",
              "type": "coordinator",
              "value": "Jonatan M\u00e4nnchen / EEF"
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eGeneration of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to receive unredacted internal error data by provoking an error shape the configured error handler does not match.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eapply_error_handler/3\u003c/code\u003e in \u003ccode\u003elib/ash_typescript/rpc/errors.ex\u003c/code\u003e is the only hook an application has for redacting or suppressing errors before they reach the client, with a \u003ccode\u003enil\u003c/code\u003e return dropping the error entirely. Its \u003ccode\u003erescue\u003c/code\u003e clause logs a warning and then returns the original, pre-handler error map. Error handlers are conventionally written as pattern-matching functions over expected error shapes, so an unmatched shape raises \u003ccode\u003eFunctionClauseError\u003c/code\u003e and the raw transformed error, including any secrets carried in \u003ccode\u003evars\u003c/code\u003e, is emitted instead. An intent to suppress an error becomes an intent to publish it. The \u003ccode\u003erescue\u003c/code\u003e catches exceptions only, so a handler that throws or exits still propagates.\u003c/p\u003e\n\u003cp\u003eThis issue affects ash_typescript: from 0.8.0 before 0.18.0.\u003c/p\u003e"
                },
                {
                  "base64": false,
                  "type": "text/markdown",
                  "value": "Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to receive unredacted internal error data by provoking an error shape the configured error handler does not match.\n\n`apply_error_handler/3` in `lib/ash_typescript/rpc/errors.ex` is the only hook an application has for redacting or suppressing errors before they reach the client, with a `nil` return dropping the error entirely. Its `rescue` clause logs a warning and then returns the original, pre-handler error map. Error handlers are conventionally written as pattern-matching functions over expected error shapes, so an unmatched shape raises `FunctionClauseError` and the raw transformed error, including any secrets carried in `vars`, is emitted instead. An intent to suppress an error becomes an intent to publish it. The `rescue` catches exceptions only, so a handler that throws or exits still propagates.\n\nThis issue affects ash_typescript: from 0.8.0 before 0.18.0."
                }
              ],
              "value": "Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to receive unredacted internal error data by provoking an error shape the configured error handler does not match.\n\napply_error_handler/3 in lib/ash_typescript/rpc/errors.ex is the only hook an application has for redacting or suppressing errors before they reach the client, with a nil return dropping the error entirely. Its rescue clause logs a warning and then returns the original, pre-handler error map. Error handlers are conventionally written as pattern-matching functions over expected error shapes, so an unmatched shape raises FunctionClauseError and the raw transformed error, including any secrets carried in vars, is emitted instead. An intent to suppress an error becomes an intent to publish it. The rescue catches exceptions only, so a handler that throws or exits still propagates.\n\nThis issue affects ash_typescript: from 0.8.0 before 0.18.0."
            }
          ],
          "impacts": [
            {
              "capecId": "CAPEC-54",
              "descriptions": [
                {
                  "lang": "en",
                  "value": "CAPEC-54 Query System for Information"
                }
              ]
            }
          ],
          "metrics": [
            {
              "cvssV4_0": {
                "Automatable": "NOT_DEFINED",
                "Recovery": "NOT_DEFINED",
                "Safety": "NOT_DEFINED",
                "attackComplexity": "LOW",
                "attackRequirements": "PRESENT",
                "attackVector": "NETWORK",
                "baseScore": 6.3,
                "baseSeverity": "MEDIUM",
                "privilegesRequired": "NONE",
                "providerUrgency": "NOT_DEFINED",
                "subAvailabilityImpact": "NONE",
                "subConfidentialityImpact": "NONE",
                "subIntegrityImpact": "NONE",
                "userInteraction": "NONE",
                "valueDensity": "NOT_DEFINED",
                "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N",
                "version": "4.0",
                "vulnAvailabilityImpact": "NONE",
                "vulnConfidentialityImpact": "LOW",
                "vulnIntegrityImpact": "NONE",
                "vulnerabilityResponseEffort": "NOT_DEFINED"
              },
              "format": "CVSS",
              "scenarios": [
                {
                  "lang": "en",
                  "value": "GENERAL"
                }
              ]
            }
          ],
          "problemTypes": [
            {
              "descriptions": [
                {
                  "cweId": "CWE-209",
                  "description": "CWE-209 Generation of Error Message Containing Sensitive Information",
                  "lang": "en",
                  "type": "CWE"
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-09-01T02:08:54.754Z",
            "orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "shortName": "EEF"
          },
          "references": [
            {
              "tags": [
                "related",
                "vendor-advisory"
              ],
              "url": "https://github.com/ash-project/ash_typescript/security/advisories/GHSA-mjr7-r3rf-x963"
            },
            {
              "tags": [
                "related"
              ],
              "url": "https://cna.erlef.org/cves/CVE-2026-77950.html"
            },
            {
              "tags": [
                "related"
              ],
              "url": "https://osv.dev/vulnerability/EEF-CVE-2026-77950"
            },
            {
              "tags": [
                "patch"
              ],
              "url": "https://github.com/ash-project/ash_typescript/commit/59d8e985a98cf2e01794dbe5b919b897a95311f4"
            }
          ],
          "source": {
            "discovery": "EXTERNAL"
          },
          "title": "RPC error handler fails open in AshTypescript, disclosing unredacted errors"
        }
      },
      "cveMetadata": {
        "assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "assignerShortName": "EEF",
        "cveId": "CVE-2026-77950",
        "datePublished": "2026-09-01T02:08:54.754Z",
        "dateReserved": "2026-08-30T17:30:01.402Z",
        "dateUpdated": "2026-09-01T14:53:26.458Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    Loading…

    Loading…

    Related by attack behaviour

    Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.