← Back to CVE Explorer

CVE-2026-68746

Full vulnerability record from the local CVENow database.

Description

Not Failing Securely ('Failing Open') vulnerability in livebook-dev livebook allows an unauthenticated network client to obtain full access to a Livebook server that enforces identity through Livebook Teams. A Livebook Agent or App Server connected to Livebook Teams caches the identifier of the deployment group it belongs to, and resolves that identifier against a locally cached list of deployment groups on every request in order to decide whether Teams identity enforcement is active. Livebook.Hubs.TeamClient.handle_call/3 in lib/livebook/hubs/team_client.ex does not distinguish a deployment group that could not be resolved from one that was resolved with identity enforcement switched off: the clause matches only the case where a group was found with enforcement enabled, and falls through to a catch-all that reports enforcement as switched off for everything else. The two neighbouring functions that decide user and application access resolve the same identifier and treat the same unresolved result as a denial. When the identity status is reported as switched off, Livebook.ZTA.LivebookTeams.authenticate/3 in lib/livebook/zta/livebook_teams.ex returns empty identity metadata and allows the request to continue instead of halting it. LivebookWeb.UserPlug.build_current_user/3 merges that empty metadata into a newly built user, whose access type defaults to full access, and LivebookWeb.AuthPlug.authorized?/1 grants access to any user holding full access. The cached identifier becomes unresolvable when the deployment group it refers to is deleted while the agent is not connected to receive the change, most concretely when a deployment group is deleted during the window in which an agent is disconnected or reconnecting. The client removes the group from its cached list without clearing the identifier that refers to it. Any client able to reach the affected server over the network is then granted the same access as a fully privileged member of the organisation, including the ability to read notebooks and configured secrets, execute code on the server's runtime, and disrupt its operation. This issue affects livebook: from 0.19.7 before 0.19.9.

Severity
HIGH
CVSS score
7.7 (v4.0)
Vulnerability status
Analyzed
Source identifier
6b3ad84c-e1a6-4bf7-a703-f496b71e49db
Published
2026-08-05 20:17:14.393000
Last modified
2026-10-24 16:10:00.153000
View original CVE JSON
{
  "id": "CVE-2026-68746",
  "sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
  "published": "2026-08-05T20:17:14.393",
  "lastModified": "2026-10-24T16:10:00.153",
  "vulnStatus": "Analyzed",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Not Failing Securely ('Failing Open') vulnerability in livebook-dev livebook allows an unauthenticated network client to obtain full access to a Livebook server that enforces identity through Livebook Teams.\n\nA Livebook Agent or App Server connected to Livebook Teams caches the identifier of the deployment group it belongs to, and resolves that identifier against a locally cached list of deployment groups on every request in order to decide whether Teams identity enforcement is active. Livebook.Hubs.TeamClient.handle_call/3 in lib/livebook/hubs/team_client.ex does not distinguish a deployment group that could not be resolved from one that was resolved with identity enforcement switched off: the clause matches only the case where a group was found with enforcement enabled, and falls through to a catch-all that reports enforcement as switched off for everything else. The two neighbouring functions that decide user and application access resolve the same identifier and treat the same unresolved result as a denial.\n\nWhen the identity status is reported as switched off, Livebook.ZTA.LivebookTeams.authenticate/3 in lib/livebook/zta/livebook_teams.ex returns empty identity metadata and allows the request to continue instead of halting it. LivebookWeb.UserPlug.build_current_user/3 merges that empty metadata into a newly built user, whose access type defaults to full access, and LivebookWeb.AuthPlug.authorized?/1 grants access to any user holding full access.\n\nThe cached identifier becomes unresolvable when the deployment group it refers to is deleted while the agent is not connected to receive the change, most concretely when a deployment group is deleted during the window in which an agent is disconnected or reconnecting. The client removes the group from its cached list without clearing the identifier that refers to it. Any client able to reach the affected server over the network is then granted the same access as a fully privileged member of the organisation, including the ability to read notebooks and configured secrets, execute code on the server's runtime, and disrupt its operation.\n\nThis issue affects livebook: from 0.19.7 before 0.19.9."
    },
    {
      "lang": "es",
      "value": "Vulnerabilidad de “fallo abierto” (no fallar de forma segura) en livebook-dev livebook permite a un cliente de red no autenticado obtener acceso completo a un servidor Livebook que aplica la identidad a través de Livebook Teams.\n\nUn Agente Livebook o Servidor de Aplicaciones conectado a Livebook Teams almacena en caché el identificador del grupo de despliegue al que pertenece, y resuelve ese identificador contra una lista de grupos de despliegue almacenada localmente en caché en cada solicitud para decidir si la aplicación de identidad de Teams está activa. Livebook.Hubs.TeamClient.handle_call/3 en lib/livebook/hubs/team_client.ex no distingue un grupo de despliegue que no pudo ser resuelto de uno que fue resuelto con la aplicación de identidad desactivada: la cláusula coincide solo con el caso en que se encontró un grupo con la aplicación habilitada, y pasa a una cláusula de captura general que informa la aplicación como desactivada para todo lo demás. Las dos funciones adyacentes que deciden el acceso de usuario y aplicación resuelven el mismo identificador y tratan el mismo resultado no resuelto como una denegación.\n\nCuando el estado de identidad se informa como desactivado, Livebook.ZTA.LivebookTeams.authenticate/3 en lib/livebook/zta/livebook_teams.ex devuelve metadatos de identidad vacíos y permite que la solicitud continúe en lugar de detenerla. LivebookWeb.UserPlug.build_current_user/3 fusiona esos metadatos vacíos en un usuario recién construido, cuyo tipo de acceso por defecto es acceso completo, y LivebookWeb.AuthPlug.authorized?/1 otorga acceso a cualquier usuario que posea acceso completo.\n\nEl identificador almacenado en caché se vuelve irresoluble cuando el grupo de despliegue al que se refiere es eliminado mientras el agente no está conectado para recibir el cambio, más concretamente cuando un grupo de despliegue es eliminado durante la ventana en la que un agente está desconectado o reconectándose. El cliente elimina el grupo de su lista almacenada en caché sin borrar el identificador que se refiere a él. Cualquier cliente capaz de alcanzar el servidor afectado a través de la red se le concede entonces el mismo acceso que a un miembro con plenos privilegios de la organización, incluyendo la capacidad de leer cuadernos y secretos configurados, ejecutar código en el entorno de ejecución del servidor, y perturbar su funcionamiento.\n\nEste problema afecta a livebook: desde 0.19.7 antes de 0.19.9."
    }
  ],
  "affected": [
    {
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "affectedData": [
        {
          "vendor": "livebook-dev",
          "product": "livebook",
          "defaultStatus": "unaffected",
          "collectionURL": "https://repo.hex.pm",
          "packageName": "livebook",
          "cpes": [
            "cpe:2.3:a:livebook-dev:livebook:*:*:*:*:*:*:*:*"
          ],
          "modules": [
            "Elixir.Livebook.Hubs.TeamClient",
            "Elixir.Livebook.ZTA.LivebookTeams",
            "Elixir.LivebookWeb.AuthPlug"
          ],
          "programFiles": [
            "lib/livebook/hubs/team_client.ex",
            "lib/livebook/zta/livebook_teams.ex",
            "lib/livebook_web/plugs/auth_plug.ex"
          ],
          "programRoutines": [
            {
              "name": "'Elixir.Livebook.Hubs.TeamClient':handle_call/3"
            },
            {
              "name": "'Elixir.Livebook.Hubs.TeamClient':remove_deployment_group/2"
            },
            {
              "name": "'Elixir.Livebook.Hubs.TeamClient':fetch_entry/3"
            },
            {
              "name": "'Elixir.Livebook.ZTA.LivebookTeams':authenticate/3"
            },
            {
              "name": "'Elixir.LivebookWeb.AuthPlug':authorized?/1"
            }
          ],
          "repo": "https://github.com/livebook-dev/livebook",
          "packageURL": "pkg:hex/livebook",
          "versions": [
            {
              "version": "0.19.7",
              "lessThan": "0.19.9",
              "versionType": "semver",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "livebook-dev",
          "product": "livebook",
          "defaultStatus": "unaffected",
          "collectionURL": "https://ghcr.io",
          "packageName": "livebook-dev/livebook",
          "cpes": [
            "cpe:2.3:a:livebook-dev:livebook:*:*:*:*:*:*:*:*"
          ],
          "modules": [
            "Elixir.Livebook.Hubs.TeamClient",
            "Elixir.Livebook.ZTA.LivebookTeams",
            "Elixir.LivebookWeb.AuthPlug"
          ],
          "programFiles": [
            "lib/livebook/hubs/team_client.ex",
            "lib/livebook/zta/livebook_teams.ex",
            "lib/livebook_web/plugs/auth_plug.ex"
          ],
          "programRoutines": [
            {
              "name": "'Elixir.Livebook.Hubs.TeamClient':handle_call/3"
            },
            {
              "name": "'Elixir.Livebook.Hubs.TeamClient':remove_deployment_group/2"
            },
            {
              "name": "'Elixir.Livebook.Hubs.TeamClient':fetch_entry/3"
            },
            {
              "name": "'Elixir.Livebook.ZTA.LivebookTeams':authenticate/3"
            },
            {
              "name": "'Elixir.LivebookWeb.AuthPlug':authorized?/1"
            }
          ],
          "packageURL": "pkg:oci/livebook?repository_url=ghcr.io%2Flivebook-dev",
          "versions": [
            {
              "version": "0.19.7",
              "lessThan": "0.19.9",
              "versionType": "other",
              "status": "affected"
            },
            {
              "version": "0.19.7-cuda12",
              "lessThan": "0.19.9-cuda12",
              "versionType": "other",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "livebook-dev",
          "product": "livebook",
          "defaultStatus": "unaffected",
          "collectionURL": "https://github.com",
          "packageName": "livebook-dev/livebook",
          "cpes": [
            "cpe:2.3:a:livebook-dev:livebook:*:*:*:*:*:*:*:*"
          ],
          "modules": [
            "Elixir.Livebook.Hubs.TeamClient",
            "Elixir.Livebook.ZTA.LivebookTeams",
            "Elixir.LivebookWeb.AuthPlug"
          ],
          "programFiles": [
            "lib/livebook/hubs/team_client.ex",
            "lib/livebook/zta/livebook_teams.ex",
            "lib/livebook_web/plugs/auth_plug.ex"
          ],
          "programRoutines": [
            {
              "name": "'Elixir.Livebook.Hubs.TeamClient':handle_call/3"
            },
            {
              "name": "'Elixir.Livebook.Hubs.TeamClient':remove_deployment_group/2"
            },
            {
              "name": "'Elixir.Livebook.Hubs.TeamClient':fetch_entry/3"
            },
            {
              "name": "'Elixir.Livebook.ZTA.LivebookTeams':authenticate/3"
            },
            {
              "name": "'Elixir.LivebookWeb.AuthPlug':authorized?/1"
            }
          ],
          "repo": "https://github.com/livebook-dev/livebook",
          "packageURL": "pkg:github/livebook-dev/livebook",
          "versions": [
            {
              "version": "fc2c87c6b0276705281842acbe17142d1ac4d555",
              "lessThan": "*",
              "versionType": "git",
              "status": "affected",
              "changes": [
                {
                  "at": "d374e90647edbb00286bfee9182c0161d29a8e07",
                  "status": "unaffected"
                },
                {
                  "at": "d6d0dfa746b172540442852f74de4a9deacc433b",
                  "status": "unaffected"
                },
                {
                  "at": "2d3a2c710c880abd24a2bc888d3cf5239d98cf72",
                  "status": "unaffected"
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV40": [
      {
        "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "type": "Secondary",
        "cvssData": {
          "version": "4.0",
          "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/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",
          "baseScore": 7.7,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "attackRequirements": "PRESENT",
          "privilegesRequired": "LOW",
          "userInteraction": "NONE",
          "vulnConfidentialityImpact": "HIGH",
          "vulnIntegrityImpact": "HIGH",
          "vulnAvailabilityImpact": "HIGH",
          "subConfidentialityImpact": "NONE",
          "subIntegrityImpact": "NONE",
          "subAvailabilityImpact": "NONE",
          "exploitMaturity": "NOT_DEFINED",
          "confidentialityRequirement": "NOT_DEFINED",
          "integrityRequirement": "NOT_DEFINED",
          "availabilityRequirement": "NOT_DEFINED",
          "modifiedAttackVector": "NOT_DEFINED",
          "modifiedAttackComplexity": "NOT_DEFINED",
          "modifiedAttackRequirements": "NOT_DEFINED",
          "modifiedPrivilegesRequired": "NOT_DEFINED",
          "modifiedUserInteraction": "NOT_DEFINED",
          "modifiedVulnConfidentialityImpact": "NOT_DEFINED",
          "modifiedVulnIntegrityImpact": "NOT_DEFINED",
          "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
          "modifiedSubConfidentialityImpact": "NOT_DEFINED",
          "modifiedSubIntegrityImpact": "NOT_DEFINED",
          "modifiedSubAvailabilityImpact": "NOT_DEFINED",
          "Safety": "NOT_DEFINED",
          "Automatable": "NOT_DEFINED",
          "Recovery": "NOT_DEFINED",
          "valueDensity": "NOT_DEFINED",
          "vulnerabilityResponseEffort": "NOT_DEFINED",
          "providerUrgency": "NOT_DEFINED"
        }
      }
    ],
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Primary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
          "baseScore": 8.8,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "LOW",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 2.8,
        "impactScore": 5.9
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-08-06T14:45:09.939122Z",
          "id": "CVE-2026-68746",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-636"
        }
      ]
    }
  ],
  "configurations": [
    {
      "nodes": [
        {
          "operator": "OR",
          "negate": false,
          "cpeMatch": [
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:livebook:livebook:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "0.19.7",
              "versionEndExcluding": "0.19.9",
              "matchCriteriaId": "128456DE-5AA5-441B-8D70-3C9C2A42CB5D"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://cna.erlef.org/cves/CVE-2026-68746.html",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "tags": [
        "Vendor Advisory"
      ]
    },
    {
      "url": "https://github.com/livebook-dev/livebook/commit/2d3a2c710c880abd24a2bc888d3cf5239d98cf72",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "tags": [
        "Patch"
      ]
    },
    {
      "url": "https://github.com/livebook-dev/livebook/commit/d374e90647edbb00286bfee9182c0161d29a8e07",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "tags": [
        "Patch"
      ]
    },
    {
      "url": "https://github.com/livebook-dev/livebook/commit/d6d0dfa746b172540442852f74de4a9deacc433b",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "tags": [
        "Patch"
      ]
    },
    {
      "url": "https://github.com/livebook-dev/livebook/security/advisories/GHSA-74j5-6grg-g6wj",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "tags": [
        "Vendor Advisory"
      ]
    },
    {
      "url": "https://osv.dev/vulnerability/EEF-CVE-2026-68746",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "tags": [
        "Third Party Advisory"
      ]
    }
  ]
}