← Back to CVE Explorer

CVE-2026-42047

Full vulnerability record from the local CVENow database.

Description

Inngest is a platform for running event-driven and scheduled background functions with queueing, retries, and step orchestration. Versions 3.22.0 through 3.53.1 contain a vulnerability that allows unauthenticated remote attackers to exfiltrate environment variables from the host process via the serve() HTTP handler. The serve() handler implements GET, POST, and PUT methods. Requests using PATCH, OPTIONS, or DELETE fall through to a generic handler that returns diagnostic information. A change introduced in v3.22.0 caused this diagnostic response to include the contents of process.env, exposing any secrets, API keys, or credentials present in the environment. An application is vulnerable if its serve() endpoint is reachable via PATCH, OPTIONS, or DELETE requests, which is common in setups like Next.js Pages Router or Express's app.use(...). Not affected are Next.js App Router handlers that export only GET, POST, and PUT, and applications using the connect worker method. This issue has been fixed in version 3.54.0. To work around this issue if upgrading is not immediately possible, restrict the serve() endpoint at the framework or reverse-proxy layer to accept only GET, POST, and PUT. The Inngest serve() endpoint does not require any other HTTP methods.

Severity
HIGH
CVSS score
8.6 (v3.1)
Vulnerability status
Analyzed
Source identifier
Published
2026-05-07 21:16:29.980000
Last modified
2026-10-26 20:10:00.160000
View original CVE JSON
{
  "id": "CVE-2026-42047",
  "sourceIdentifier": "[email protected]",
  "published": "2026-05-07T21:16:29.980",
  "lastModified": "2026-10-26T20:10:00.160",
  "vulnStatus": "Analyzed",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Inngest is a platform for running event-driven and scheduled background functions with queueing, retries, and step orchestration. Versions 3.22.0 through 3.53.1 contain a vulnerability that allows unauthenticated remote attackers to exfiltrate environment variables from the host process via the serve() HTTP handler. The serve() handler implements GET, POST, and PUT methods. Requests using PATCH, OPTIONS, or DELETE fall through to a generic handler that returns diagnostic information. A change introduced in v3.22.0 caused this diagnostic response to include the contents of process.env, exposing any secrets, API keys, or credentials present in the environment. An application is vulnerable if its serve() endpoint is reachable via PATCH, OPTIONS, or DELETE requests, which is common in setups like Next.js Pages Router or Express's app.use(...). Not affected are Next.js App Router handlers that export only GET, POST, and PUT, and applications using the connect worker method. This issue has been fixed in version 3.54.0. To work around this issue if upgrading is not immediately possible, restrict the serve() endpoint at the framework or reverse-proxy layer to accept only GET, POST, and PUT. The Inngest serve() endpoint does not require any other HTTP methods."
    },
    {
      "lang": "es",
      "value": "Inngest es una plataforma para ejecutar funciones en segundo plano impulsadas por eventos y programadas con encolamiento, reintentos y orquestación de pasos. Las versiones 3.22.0 a 3.53.1 contienen una vulnerabilidad que permite a atacantes remotos no autenticados exfiltrar variables de entorno del proceso anfitrión a través del gestor HTTP ’serve()’. El gestor ’serve()’ implementa los métodos GET, POST y PUT. Las solicitudes que utilizan PATCH, OPTIONS o DELETE pasan a un gestor genérico que devuelve información de diagnóstico. Un cambio introducido en la v3.22.0 hizo que esta respuesta de diagnóstico incluyera el contenido de ’process.env’, exponiendo cualquier secreto, claves API o credenciales presentes en el entorno. Una aplicación es vulnerable si su punto final ’serve()’ es accesible a través de solicitudes PATCH, OPTIONS o DELETE, lo cual es común en configuraciones como Next.js Pages Router o ’app.use(...)’ de Express. No se ven afectados los gestores de Next.js App Router que exportan solo GET, POST y PUT, y las aplicaciones que utilizan el método de trabajador connect. Este problema ha sido solucionado en la versión 3.54.0. Para solucionar este problema si la actualización no es posible de inmediato, restrinja el punto final ’serve()’ en la capa del framework o del proxy inverso para que acepte solo GET, POST y PUT. El punto final ’serve()’ de Inngest no requiere ningún otro método HTTP."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "inngest",
          "product": "inngest-js",
          "versions": [
            {
              "version": ">= 3.22.0, < 3.54.0",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N",
          "baseScore": 8.6,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "CHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "NONE",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 3.9,
        "impactScore": 4.0
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-05-08T13:52:40.509395Z",
          "id": "CVE-2026-42047",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-200"
        },
        {
          "lang": "en",
          "value": "CWE-497"
        }
      ]
    }
  ],
  "configurations": [
    {
      "nodes": [
        {
          "operator": "OR",
          "negate": false,
          "cpeMatch": [
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:inngest:inngest:*:*:*:*:*:node.js:*:*",
              "versionStartIncluding": "3.22.0",
              "versionEndExcluding": "3.54.0",
              "matchCriteriaId": "B1AF5D1A-E672-4AFA-BC25-1EB6E2F08491"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/inngest/inngest-js/releases/tag/inngest%403.54.1",
      "source": "[email protected]",
      "tags": [
        "Patch",
        "Product"
      ]
    },
    {
      "url": "https://github.com/inngest/inngest-js/security/advisories/GHSA-2jf5-6wwv-vhxx",
      "source": "[email protected]",
      "tags": [
        "Mitigation",
        "Vendor Advisory"
      ]
    }
  ]
}