GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

FKIE_CVE-2026-39966

Vulnerability from fkie_nvd - Published: 2026-05-22 19:17 - Updated: 2026-07-23 16:10
Summary
TypeBot is a chatbot builder tool. In versions 3.15.2, the getLinkedTypebots API endpoint returns full bot definitions to any authenticated user who references a target bot ID in a Typebot Link block, regardless of workspace ownership, leading to IDOR. The authorization check uses Array.filter() with an async callback — since filter() is synchronous, the callback always returns a truthy Promise, so the access control predicate is never actually evaluated. Any authenticated Typebot user can read the full definition of any other workspace's private bots, including: all conversation blocks and logic flow, variable values embedded in the bot (credentials, API keys, PII), webhook URLs and integration configurations. This issue has been fixed in version 3.16.0.
Impacted products
Vendor Product Version

{
  "affected": [
    {
      "affectedData": [
        {
          "product": "typebot.io",
          "vendor": "baptisteArno",
          "versions": [
            {
              "status": "affected",
              "version": "\u003c 3.16.0"
            }
          ]
        }
      ],
      "source": "security-advisories@github.com"
    }
  ],
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "TypeBot is a chatbot builder tool. In versions 3.15.2, the getLinkedTypebots API endpoint returns full bot definitions to any authenticated user who references a target bot ID in a Typebot Link block, regardless of workspace ownership, leading to IDOR. The authorization check uses Array.filter() with an async callback \u2014 since filter() is synchronous, the callback always returns a truthy Promise, so the access control predicate is never actually evaluated. Any authenticated Typebot user can read the full definition of any other workspace\u0027s private bots, including: all conversation blocks and logic flow, variable values embedded in the bot (credentials, API keys, PII), webhook URLs and integration configurations. This issue has been fixed in version 3.16.0."
    },
    {
      "lang": "es",
      "value": "TypeBot es una herramienta de creaci\u00f3n de chatbots. En las versiones 3.15.2, el endpoint de la API getLinkedTypebots devuelve definiciones completas de bots a cualquier usuario autenticado que referencia un ID de bot objetivo en un bloque Typebot Link, independientemente de la propiedad del espacio de trabajo, lo que lleva a IDOR. La comprobaci\u00f3n de autorizaci\u00f3n utiliza Array.filter() con una devoluci\u00f3n de llamada as\u00edncrona - dado que filter() es s\u00edncrono, la devoluci\u00f3n de llamada siempre devuelve una Promise verdadera, por lo que el predicado de control de acceso nunca se eval\u00faa realmente. Cualquier usuario autenticado de Typebot puede leer la definici\u00f3n completa de los bots privados de cualquier otro espacio de trabajo, incluyendo: todos los bloques de conversaci\u00f3n y el flujo l\u00f3gico, valores de variables incrustados en el bot (credenciales, claves de API, PII), URL de webhook y configuraciones de integraci\u00f3n. Este problema ha sido solucionado en la versi\u00f3n 3.16.0."
    }
  ],
  "id": "CVE-2026-39966",
  "lastModified": "2026-07-23T16:10:00.137",
  "metrics": {
    "cvssMetricV31": [
      {
        "cvssData": {
          "attackComplexity": "LOW",
          "attackVector": "NETWORK",
          "availabilityImpact": "NONE",
          "baseScore": 6.5,
          "baseSeverity": "MEDIUM",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "NONE",
          "privilegesRequired": "LOW",
          "scope": "UNCHANGED",
          "userInteraction": "NONE",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N",
          "version": "3.1"
        },
        "exploitabilityScore": 2.8,
        "impactScore": 3.6,
        "source": "security-advisories@github.com",
        "type": "Secondary"
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "id": "CVE-2026-39966",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "timestamp": "2026-05-22T19:03:43.970750Z",
          "version": "2.0.3"
        }
      }
    ]
  },
  "published": "2026-05-22T19:17:03.110",
  "references": [
    {
      "source": "security-advisories@github.com",
      "url": "https://github.com/baptisteArno/typebot.io/commit/b9530a089b43bfa6e79e3ff9cbfab921ce832f45"
    },
    {
      "source": "security-advisories@github.com",
      "url": "https://github.com/baptisteArno/typebot.io/releases/tag/v3.16.0"
    },
    {
      "source": "security-advisories@github.com",
      "url": "https://github.com/baptisteArno/typebot.io/security/advisories/GHSA-3fr5-999r-84qj"
    },
    {
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
      "url": "https://github.com/baptisteArno/typebot.io/security/advisories/GHSA-3fr5-999r-84qj"
    }
  ],
  "sourceIdentifier": "security-advisories@github.com",
  "vulnStatus": "Deferred",
  "weaknesses": [
    {
      "description": [
        {
          "lang": "en",
          "value": "CWE-863"
        }
      ],
      "source": "security-advisories@github.com",
      "type": "Secondary"
    }
  ]
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

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.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…