← Back to CVE Explorer

CVE-2026-31224

Full vulnerability record from the local CVENow database.

Description

The snorkel library thru v0.10.0 contains an insecure deserialization vulnerability (CWE-502) in the MultitaskClassifier.load() method of the MultitaskClassifier class. The method loads model weight files using torch.load() without enabling the security-restrictive weights_only=True parameter. This default behavior allows the deserialization of arbitrary Python objects via the Pickle module. A remote attacker can exploit this by providing a maliciously crafted model file, leading to arbitrary code execution on the victim's system when the file is loaded via the vulnerable method.

Severity
HIGH
CVSS score
8.8 (v3.1)
Vulnerability status
Analyzed
Source identifier
Published
2026-05-12 16:16:14.327000
Last modified
2026-10-19 22:10:00.130000
View original CVE JSON
{
  "id": "CVE-2026-31224",
  "sourceIdentifier": "[email protected]",
  "published": "2026-05-12T16:16:14.327",
  "lastModified": "2026-10-19T22:10:00.130",
  "vulnStatus": "Analyzed",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "The snorkel library thru v0.10.0 contains an insecure deserialization vulnerability (CWE-502) in the MultitaskClassifier.load() method of the MultitaskClassifier class. The method loads model weight files using torch.load() without enabling the security-restrictive weights_only=True parameter. This default behavior allows the deserialization of arbitrary Python objects via the Pickle module. A remote attacker can exploit this by providing a maliciously crafted model file, leading to arbitrary code execution on the victim's system when the file is loaded via the vulnerable method."
    },
    {
      "lang": "es",
      "value": "La biblioteca snorkel hasta la v0.10.0 contiene una vulnerabilidad de deserialización insegura (CWE-502) en el método MultitaskClassifier.load() de la clase MultitaskClassifier. El método carga archivos de pesos de modelo usando torch.load() sin habilitar el parámetro de seguridad restrictivo weights_only=True. Este comportamiento predeterminado permite la deserialización de objetos Python arbitrarios a través del módulo Pickle. Un atacante remoto puede explotar esto al proporcionar un archivo de modelo creado maliciosamente, lo que lleva a la ejecución de código arbitrario en el sistema de la víctima cuando el archivo se carga a través del método vulnerable."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "n/a",
          "product": "n/a",
          "versions": [
            {
              "version": "n/a",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
          "baseScore": 8.8,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "NONE",
          "userInteraction": "REQUIRED",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 2.8,
        "impactScore": 5.9
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-05-13T14:04:44.783117Z",
          "id": "CVE-2026-31224",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-502"
        }
      ]
    }
  ],
  "configurations": [
    {
      "nodes": [
        {
          "operator": "OR",
          "negate": false,
          "cpeMatch": [
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:snorkel:snorkel:*:*:*:*:*:*:*:*",
              "versionEndIncluding": "0.10.0",
              "matchCriteriaId": "F2E7FC3A-64C0-4F69-84DD-FC9BA0883D08"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/snorkel-team/snorkel",
      "source": "[email protected]",
      "tags": [
        "Product"
      ]
    },
    {
      "url": "https://www.notion.so/CVE-2026-31224-35d1e1393188814185f3f6db86c9a4e9",
      "source": "[email protected]",
      "tags": [
        "Third Party Advisory"
      ]
    }
  ]
}