Skip to content
Heist/ feed
Back to feed
CriticalFix available

Langflow: Unauthenticated Flow Execution via Webhook Authentication Bypass

Type: advisorySources: OSV2 source records

### Summary A vulnerability in Langflow's webhook authentication logic allows unauthenticated users to trigger the execution of any flow. The system incorrectly bypasses API key validation when the `WEBHOOK_AUTH_ENABLE` configuration is set to `False`. This allows a remote attacker who knows a flow's UUID to execute it as if they were the owner, potentially leading to Remote Code Execution (RCE) or Denial of Service (DoS). ### Details The `WEBHOOK_AUTH_ENABLE` setting was introduced in v1.7.0 (#9139) with a default of `False`. The root cause is in the webhook authentication path, `AuthService.get_webhook_user` (`src/backend/base/langflow/services/auth/service.py`; the thin wrapper in `src/backend/base/langflow/services/auth/utils.py` just delegates to it): ```python async def get_webhook_user(self, flow_id: str, request: Request) -> UserRead: settings_service = self.settings ... # VULNERABILITY: If this setting is False (default in <= 1.9.0), it returns # the flow owner WITHOUT checking the API Key in the request. if not settings_service.auth_settings.WEBHOOK_AUTH_ENABLE: try: flow_owner = await get_user_by_flow_id_or_endpoint_name(flow_id) return flow_owner ``` By default (v1.7.0 through v1.9.0), Langflow treats `WEBHOOK_AUTH_ENABLE` as `False`, meaning all webhook endpoints are public. This relies exclusively on the secrecy of the `flow_id` (UUID), which is an insecure practice (Security by Obscurity). A related report, GHSA-6g4m-v5q2-475v, demonstrated a concrete RCE chain

Products
langflow
Affected versions
1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.8.0, 1.8.0rc0, 1.8.0rc1, 1.8.0rc2, 1.8.0rc3, 1.8.0rc4, 1.8.0rc5, 1.8.0rc6, 1.8.1, 1.8.2, 1.8.3, 1.8.3rc0, 1.8.4, 1.9.0
Fixed versions
1.9.1
CVEs
CVE-2026-8505
Confirmed fixed CVEs
Not specified
Updated in this feed
30 Oct 2026, 18:17 UTC · Revision 1

Source evidence

Langflow: Unauthenticated Flow Execution via Webhook Authentication Bypass

core-osv · Original source

Published 5 Oct 2026, 22:31 UTC

### Summary A vulnerability in Langflow's webhook authentication logic allows unauthenticated users to trigger the execution of any flow. The system incorrectly bypasses API key validation when the `WEBHOOK_AUTH_ENABLE` configuration is set to `False`. This allows a remote attacker who knows a flow's UUID to execute it as if they were the owner, potentially leading to Remote Code Execution (RCE) or Denial of Service (DoS). ### Details The `WEBHOOK_AUTH_ENABLE` setting was introduced in v1.7.0 (#9139) with a default of `False`. The root cause is in the webhook authentication path, `AuthService.get_webhook_user` (`src/backend/base/langflow/services/auth/service.py`; the thin wrapper in `src/backend/base/langflow/services/auth/utils.py` just delegates to it): ```python async def get_webhook_user(self, flow_id: str, request: Request) -> UserRead: settings_service = self.settings ... # VULNERABILITY: If this setting is False (default in <= 1.9.0), it returns # the flow owner WITHOUT checking the API Key in the request. if not settings_service.auth_settings.WEBHOOK_AUTH_ENABLE: try: flow_owner = await get_user_by_flow_id_or_endpoint_name(flow_id) return flow_owner ``` By default (v1.7.0 through v1.9.0), Langflow treats `WEBHOOK_AUTH_ENABLE` as `False`, meaning all webhook endpoints are public. This relies exclusively on the secrecy of the `flow_id` (UUID), which is an insecure practice (Security by Obscurity). A related report, GHSA-6g4m-v5q2-475v, demonstrated a concrete RCE chain

osv:GHSA-cf6m-vc3m-7cgm

langflow

Fixed versions: 1.9.1

Complete source record
{
  "id": "5fbb6f6357c296939f757f2c0853991d9e20650dea485cdb50b36c8b3fd7704c",
  "url": "https://osv.dev/vulnerability/GHSA-cf6m-vc3m-7cgm",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Langflow: Unauthenticated Flow Execution via Webhook Authentication Bypass",
    "summary": "### Summary A vulnerability in Langflow's webhook authentication logic allows unauthenticated users to trigger the execution of any flow. The system incorrectly bypasses API key validation when the `WEBHOOK_AUTH_ENABLE` configuration is set to `False`. This allows a remote attacker who knows a flow's UUID to execute it as if they were the owner, potentially leading to Remote Code Execution (RCE) or Denial of Service (DoS). ### Details The `WEBHOOK_AUTH_ENABLE` setting was introduced in v1.7.0 (#9139) with a default of `False`. The root cause is in the webhook authentication path, `AuthService.get_webhook_user` (`src/backend/base/langflow/services/auth/service.py`; the thin wrapper in `src/backend/base/langflow/services/auth/utils.py` just delegates to it): ```python async def get_webhook_user(self, flow_id: str, request: Request) -> UserRead: settings_service = self.settings ... # VULNERABILITY: If this setting is False (default in <= 1.9.0), it returns # the flow owner WITHOUT checking the API Key in the request. if not settings_service.auth_settings.WEBHOOK_AUTH_ENABLE: try: flow_owner = await get_user_by_flow_id_or_endpoint_name(flow_id) return flow_owner ``` By default (v1.7.0 through v1.9.0), Langflow treats `WEBHOOK_AUTH_ENABLE` as `False`, meaning all webhook endpoints are public. This relies exclusively on the secrecy of the `flow_id` (UUID), which is an insecure practice (Security by Obscurity). A related report, GHSA-6g4m-v5q2-475v, demonstrated a concrete RCE chain",
    "evidence": "osv:GHSA-cf6m-vc3m-7cgm",
    "products": [
      {
        "name": {
          "value": "langflow",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "1.9.1",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": [
          {
            "value": "1.7.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.7.1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.7.2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.7.3",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc3",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc4",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc5",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc6",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.3",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.3rc0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.4",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.9.0",
            "evidence": "/affected/0/versions"
          }
        ]
      }
    ],
    "severity": "critical",
    "structured": {
      "id": "GHSA-cf6m-vc3m-7cgm",
      "aliases": [
        "CVE-2026-8505",
        "GHSA-cf6m-vc3m-7cgm",
        "PYSEC-2026-4233"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "1.7.0"
                },
                {
                  "fixed": "1.9.1"
                }
              ]
            }
          ],
          "package": {
            "name": "langflow",
            "purl": "pkg:pypi/langflow",
            "ecosystem": "PyPI"
          },
          "versions": [
            "1.7.0",
            "1.7.1",
            "1.7.2",
            "1.7.3",
            "1.8.0",
            "1.8.0rc0",
            "1.8.0rc1",
            "1.8.0rc2",
            "1.8.0rc3",
            "1.8.0rc4",
            "1.8.0rc5",
            "1.8.0rc6",
            "1.8.1",
            "1.8.2",
            "1.8.3",
            "1.8.3rc0",
            "1.8.4",
            "1.9.0"
          ],
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-cf6m-vc3m-7cgm/GHSA-cf6m-vc3m-7cgm.json",
            "last_known_affected_version_range": "<= 1.9.0"
          }
        }
      ],
      "modified": "2026-10-15T14:56:16.866108219Z",
      "provider": "osv",
      "references": [
        "https://github.com/langflow-ai/langflow/security/advisories/GHSA-cf6m-vc3m-7cgm",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-8505",
        "https://github.com/langflow-ai/langflow/pull/12845",
        "https://github.com/langflow-ai/langflow/commit/cb6f7508dda83ead9c3e4417e96e4b5bd9a260c3",
        "https://github.com/langflow-ai/langflow",
        "https://github.com/langflow-ai/langflow/releases/tag/v1.9.1",
        "https://www.ibm.com/support/pages/node/7278921"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-306"
        ],
        "severity": "CRITICAL",
        "github_reviewed": true,
        "nvd_published_at": null,
        "github_reviewed_at": "2026-10-05T22:31:22Z"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-8505",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 332694,
  "published_at": "2026-10-05T22:31:22+00:00"
}

Langflow: Unauthenticated Flow Execution via Webhook Authentication Bypass

core-osv · Original source

Published 15 Oct 2026, 10:22 UTC

### Summary A vulnerability in Langflow's webhook authentication logic allows unauthenticated users to trigger the execution of any flow. The system incorrectly bypasses API key validation when the `WEBHOOK_AUTH_ENABLE` configuration is set to `False`. This allows a remote attacker who knows a flow's UUID to execute it as if they were the owner, potentially leading to Remote Code Execution (RCE) or Denial of Service (DoS). ### Details The `WEBHOOK_AUTH_ENABLE` setting was introduced in v1.7.0 (#9139) with a default of `False`. The root cause is in the webhook authentication path, `AuthService.get_webhook_user` (`src/backend/base/langflow/services/auth/service.py`; the thin wrapper in `src/backend/base/langflow/services/auth/utils.py` just delegates to it): ```python async def get_webhook_user(self, flow_id: str, request: Request) -> UserRead: settings_service = self.settings ... # VULNERABILITY: If this setting is False (default in <= 1.9.0), it returns # the flow owner WITHOUT checking the API Key in the request. if not settings_service.auth_settings.WEBHOOK_AUTH_ENABLE: try: flow_owner = await get_user_by_flow_id_or_endpoint_name(flow_id) return flow_owner ``` By default (v1.7.0 through v1.9.0), Langflow treats `WEBHOOK_AUTH_ENABLE` as `False`, meaning all webhook endpoints are public. This relies exclusively on the secrecy of the `flow_id` (UUID), which is an insecure practice (Security by Obscurity). A related report, GHSA-6g4m-v5q2-475v, demonstrated a concrete RCE chain

osv:PYSEC-2026-4233

langflow

Fixed versions: 1.9.1

Complete source record
{
  "id": "1f89ea68e413137731c6a631c394bb87bc080784bd986207d3262e56f3f35170",
  "url": "https://osv.dev/vulnerability/PYSEC-2026-4233",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Langflow: Unauthenticated Flow Execution via Webhook Authentication Bypass",
    "summary": "### Summary A vulnerability in Langflow's webhook authentication logic allows unauthenticated users to trigger the execution of any flow. The system incorrectly bypasses API key validation when the `WEBHOOK_AUTH_ENABLE` configuration is set to `False`. This allows a remote attacker who knows a flow's UUID to execute it as if they were the owner, potentially leading to Remote Code Execution (RCE) or Denial of Service (DoS). ### Details The `WEBHOOK_AUTH_ENABLE` setting was introduced in v1.7.0 (#9139) with a default of `False`. The root cause is in the webhook authentication path, `AuthService.get_webhook_user` (`src/backend/base/langflow/services/auth/service.py`; the thin wrapper in `src/backend/base/langflow/services/auth/utils.py` just delegates to it): ```python async def get_webhook_user(self, flow_id: str, request: Request) -> UserRead: settings_service = self.settings ... # VULNERABILITY: If this setting is False (default in <= 1.9.0), it returns # the flow owner WITHOUT checking the API Key in the request. if not settings_service.auth_settings.WEBHOOK_AUTH_ENABLE: try: flow_owner = await get_user_by_flow_id_or_endpoint_name(flow_id) return flow_owner ``` By default (v1.7.0 through v1.9.0), Langflow treats `WEBHOOK_AUTH_ENABLE` as `False`, meaning all webhook endpoints are public. This relies exclusively on the secrecy of the `flow_id` (UUID), which is an insecure practice (Security by Obscurity). A related report, GHSA-6g4m-v5q2-475v, demonstrated a concrete RCE chain",
    "evidence": "osv:PYSEC-2026-4233",
    "products": [
      {
        "name": {
          "value": "langflow",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "1.9.1",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": [
          {
            "value": "1.7.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.7.1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.7.2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.7.3",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc3",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc4",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc5",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.0rc6",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.3",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.3rc0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.8.4",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.9.0",
            "evidence": "/affected/0/versions"
          }
        ]
      }
    ],
    "severity": "critical",
    "structured": {
      "id": "PYSEC-2026-4233",
      "aliases": [
        "CVE-2026-8505",
        "GHSA-cf6m-vc3m-7cgm",
        "PYSEC-2026-4233"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "1.7.0"
                },
                {
                  "fixed": "1.9.1"
                }
              ]
            }
          ],
          "package": {
            "name": "langflow",
            "purl": "pkg:pypi/langflow",
            "ecosystem": "PyPI"
          },
          "versions": [
            "1.7.0",
            "1.7.1",
            "1.7.2",
            "1.7.3",
            "1.8.0",
            "1.8.0rc0",
            "1.8.0rc1",
            "1.8.0rc2",
            "1.8.0rc3",
            "1.8.0rc4",
            "1.8.0rc5",
            "1.8.0rc6",
            "1.8.1",
            "1.8.2",
            "1.8.3",
            "1.8.3rc0",
            "1.8.4",
            "1.9.0"
          ],
          "database_specific": {
            "source": "https://github.com/pypa/advisory-database/blob/main/vulns/langflow/PYSEC-2026-4233.yaml"
          }
        }
      ],
      "modified": "2026-10-15T14:45:12.948594146Z",
      "provider": "osv",
      "references": [
        "https://github.com/langflow-ai/langflow/security/advisories/GHSA-cf6m-vc3m-7cgm",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-8505",
        "https://github.com/langflow-ai/langflow/pull/12845",
        "https://github.com/langflow-ai/langflow/commit/cb6f7508dda83ead9c3e4417e96e4b5bd9a260c3",
        "https://github.com/langflow-ai/langflow",
        "https://github.com/langflow-ai/langflow/releases/tag/v1.9.1",
        "https://www.ibm.com/support/pages/node/7278921",
        "https://pypi.org/project/langflow",
        "https://github.com/advisories/GHSA-cf6m-vc3m-7cgm"
      ]
    },
    "related_cves": [
      {
        "value": "CVE-2026-8505",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 332655,
  "published_at": "2026-10-15T10:22:44.220122+00:00"
}