← Back to CVE Explorer

CVE-2026-66297

Full vulnerability record from the local CVENow database.

Description

Improper Neutralization of Special Elements used in an OS Command (OS Command Injection) vulnerability in livebook-dev livebook allows command injection into generated deployment setup commands. LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent.docker_instructions/2 and LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent.fly_instructions/4 in lib/livebook_web/live/hub/teams/deployment_group_agent_component.ex interpolate deployment group environment variable values into the generated Docker and Fly.io setup commands without shell escaping. The values originate from the deployment group configuration and reach the sinks through Livebook.Hubs.Dockerfile.online_docker_info/3. Both sinks place the value inside a double-quoted shell word, so a value containing a command substitution such as $(...) or backticks is evaluated by the shell without any need to break out of the quoting, and a literal double quote terminates the quoted word and allows arbitrary further tokens. The generated command is displayed in the Livebook web interface with a copy button, so a user who copies it and runs it without reviewing it first executes the injected commands on their own machine, under their own account. An attacker requires privileges sufficient to set deployment group environment variables, while the resulting code execution occurs on the machine of whoever runs the generated command. The Kubernetes instructions are not affected, because they render the same values into a YAML manifest with escaping rather than into a shell command. This issue affects livebook: from 0.13.0 before 0.18.7 and from 0.19.0 before 0.19.9.

Severity
MEDIUM
CVSS score
5.0 (v4.0)
Vulnerability status
Analyzed
Source identifier
6b3ad84c-e1a6-4bf7-a703-f496b71e49db
Published
2026-08-05 20:17:11.743000
Last modified
2026-10-24 16:10:00.153000
View original CVE JSON
{
  "id": "CVE-2026-66297",
  "sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
  "published": "2026-08-05T20:17:11.743",
  "lastModified": "2026-10-24T16:10:00.153",
  "vulnStatus": "Analyzed",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Improper Neutralization of Special Elements used in an OS Command (OS Command Injection) vulnerability in livebook-dev livebook allows command injection into generated deployment setup commands.\n\nLivebookWeb.Hub.Teams.DeploymentGroupAgentComponent.docker_instructions/2 and LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent.fly_instructions/4 in lib/livebook_web/live/hub/teams/deployment_group_agent_component.ex interpolate deployment group environment variable values into the generated Docker and Fly.io setup commands without shell escaping. The values originate from the deployment group configuration and reach the sinks through Livebook.Hubs.Dockerfile.online_docker_info/3.\n\nBoth sinks place the value inside a double-quoted shell word, so a value containing a command substitution such as $(...) or backticks is evaluated by the shell without any need to break out of the quoting, and a literal double quote terminates the quoted word and allows arbitrary further tokens. The generated command is displayed in the Livebook web interface with a copy button, so a user who copies it and runs it without reviewing it first executes the injected commands on their own machine, under their own account.\n\nAn attacker requires privileges sufficient to set deployment group environment variables, while the resulting code execution occurs on the machine of whoever runs the generated command. The Kubernetes instructions are not affected, because they render the same values into a YAML manifest with escaping rather than into a shell command.\n\nThis issue affects livebook: from 0.13.0 before 0.18.7 and from 0.19.0 before 0.19.9."
    },
    {
      "lang": "es",
      "value": "Neutralización Inadecuada de Elementos Especiales utilizados en un Comando de SO (Inyección de Comandos de SO) vulnerabilidad en livebook-dev livebook permite la inyección de comandos de configuración de despliegue generados.\n\nLivebookWeb.Hub.Teams.DeploymentGroupAgentComponent.docker_instructions/2 y LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent.fly_instructions/4 en lib/livebook_web/live/hub/teams/deployment_group_agent_component.ex interpolan valores de variables de entorno del grupo de despliegue en los comandos de configuración de Docker y Fly.io generados sin escape de shell. Los valores se originan en la configuración del grupo de despliegue y llegan a los ’sinks’ a través de Livebook.Hubs.Dockerfile.online_docker_info/3.\n\nAmbos ’sinks’ colocan el valor dentro de una palabra de shell entre comillas dobles, por lo que un valor que contenga una sustitución de comando como $(...) o backticks es evaluado por el shell sin necesidad de salir de las comillas, y una comilla doble literal termina la palabra entre comillas y permite tokens arbitrarios adicionales. El comando generado se muestra en la interfaz web de Livebook con un botón de copiar, por lo que un usuario que lo copia y lo ejecuta sin revisarlo primero ejecuta los comandos inyectados en su propia máquina, bajo su propia cuenta.\n\nUn atacante requiere privilegios suficientes para establecer variables de entorno del grupo de despliegue, mientras que la ejecución de código resultante ocurre en la máquina de quien ejecuta el comando generado. Las instrucciones de Kubernetes no se ven afectadas, porque renderizan los mismos valores en un manifiesto YAML con escape en lugar de en un comando de shell.\n\nEste problema afecta a livebook: desde 0.13.0 antes de 0.18.7 y desde 0.19.0 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.LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent"
          ],
          "programFiles": [
            "lib/livebook_web/live/hub/teams/deployment_group_agent_component.ex"
          ],
          "programRoutines": [
            {
              "name": "'Elixir.LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent':docker_instructions/2"
            },
            {
              "name": "'Elixir.LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent':fly_instructions/4"
            }
          ],
          "repo": "https://github.com/livebook-dev/livebook",
          "packageURL": "pkg:hex/livebook",
          "versions": [
            {
              "version": "0.13.0",
              "lessThan": "0.18.7",
              "versionType": "semver",
              "status": "affected"
            },
            {
              "version": "0.19.0",
              "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.LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent"
          ],
          "programFiles": [
            "lib/livebook_web/live/hub/teams/deployment_group_agent_component.ex"
          ],
          "programRoutines": [
            {
              "name": "'Elixir.LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent':docker_instructions/2"
            },
            {
              "name": "'Elixir.LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent':fly_instructions/4"
            }
          ],
          "packageURL": "pkg:oci/livebook?repository_url=ghcr.io%2Flivebook-dev",
          "versions": [
            {
              "version": "0.13.0",
              "lessThan": "0.18.7",
              "versionType": "other",
              "status": "affected"
            },
            {
              "version": "0.19.0",
              "lessThan": "0.19.9",
              "versionType": "other",
              "status": "affected"
            },
            {
              "version": "0.13.0-cuda12",
              "lessThan": "0.18.7-cuda12",
              "versionType": "other",
              "status": "affected"
            },
            {
              "version": "0.19.0-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.LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent"
          ],
          "programFiles": [
            "lib/livebook_web/live/hub/teams/deployment_group_agent_component.ex"
          ],
          "programRoutines": [
            {
              "name": "'Elixir.LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent':docker_instructions/2"
            },
            {
              "name": "'Elixir.LivebookWeb.Hub.Teams.DeploymentGroupAgentComponent':fly_instructions/4"
            }
          ],
          "repo": "https://github.com/livebook-dev/livebook",
          "packageURL": "pkg:github/livebook-dev/livebook",
          "versions": [
            {
              "version": "7cf4af5c10ec645f55a10f30e5661c54f6a6b319",
              "lessThan": "*",
              "versionType": "git",
              "status": "affected",
              "changes": [
                {
                  "at": "b2a8416d149043132fe5a14ed611e0fefc9dc9cd",
                  "status": "unaffected"
                },
                {
                  "at": "0c2487326bbb37cb1eb43bb2f76eb93ad9f8fd6b",
                  "status": "unaffected"
                },
                {
                  "at": "f8fe9c62cb8bfc1dd0ccda4ea4a57c5e91563c85",
                  "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:H/UI:A/VC:N/VI:N/VA:N/SC:H/SI:H/SA:H/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": 5.0,
          "baseSeverity": "MEDIUM",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "attackRequirements": "PRESENT",
          "privilegesRequired": "HIGH",
          "userInteraction": "ACTIVE",
          "vulnConfidentialityImpact": "NONE",
          "vulnIntegrityImpact": "NONE",
          "vulnAvailabilityImpact": "NONE",
          "subConfidentialityImpact": "HIGH",
          "subIntegrityImpact": "HIGH",
          "subAvailabilityImpact": "HIGH",
          "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:R/S:U/C:H/I:H/A:H",
          "baseScore": 8.0,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "LOW",
          "userInteraction": "REQUIRED",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 2.1,
        "impactScore": 5.9
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-08-06T13:04:06.826223Z",
          "id": "CVE-2026-66297",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-78"
        }
      ]
    }
  ],
  "configurations": [
    {
      "nodes": [
        {
          "operator": "OR",
          "negate": false,
          "cpeMatch": [
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:livebook:livebook:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "0.13.0",
              "versionEndExcluding": "0.18.7",
              "matchCriteriaId": "6337F524-91D9-419C-BF55-B8BEBB8C96A2"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:livebook:livebook:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "0.19.0",
              "versionEndExcluding": "0.19.9",
              "matchCriteriaId": "7B4998A3-46BF-4E69-8642-1156BB3E7480"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://cna.erlef.org/cves/CVE-2026-66297.html",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "tags": [
        "Vendor Advisory"
      ]
    },
    {
      "url": "https://github.com/livebook-dev/livebook/commit/0c2487326bbb37cb1eb43bb2f76eb93ad9f8fd6b",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "tags": [
        "Patch"
      ]
    },
    {
      "url": "https://github.com/livebook-dev/livebook/commit/b2a8416d149043132fe5a14ed611e0fefc9dc9cd",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "tags": [
        "Patch"
      ]
    },
    {
      "url": "https://github.com/livebook-dev/livebook/commit/f8fe9c62cb8bfc1dd0ccda4ea4a57c5e91563c85",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "tags": [
        "Patch"
      ]
    },
    {
      "url": "https://github.com/livebook-dev/livebook/security/advisories/GHSA-qpjc-w5mm-73mj",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "tags": [
        "Exploit",
        "Patch",
        "Vendor Advisory"
      ]
    },
    {
      "url": "https://osv.dev/vulnerability/EEF-CVE-2026-66297",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "tags": [
        "Third Party Advisory"
      ]
    },
    {
      "url": "https://github.com/livebook-dev/livebook/security/advisories/GHSA-qpjc-w5mm-73mj",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
      "tags": [
        "Exploit",
        "Patch",
        "Vendor Advisory"
      ]
    }
  ]
}