Skip to content
Heist/ feed
Back to feed
High

Security advisory

Type: advisorySources: OSVCVE: CVE-2026-31223

The snorkel library thru v0.10.0 contains a critical insecure deserialization vulnerability (CWE-502) in the BaseLabeler.load() method of the BaseLabeler class. The method loads serialized labeler models using the unsafe pickle.load() function on user-supplied file paths without any validation or security controls. Python's pickle module is inherently dangerous for deserializing untrusted data, as it can execute arbitrary code during the deserialization process. A remote attacker can exploit this by providing a maliciously crafted pickle file, leading to arbitrary code execution on the victim's system when the file is loaded via the vulnerable method.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-31223
Confirmed fixed CVEs
Not specified
Updated in this feed
6 Nov 2026, 01:27 UTC · Revision 1

Source evidence

CVE-2026-31223

core-osv · Original source

Published 12 May 2026, 00:00 UTC

The snorkel library thru v0.10.0 contains a critical insecure deserialization vulnerability (CWE-502) in the BaseLabeler.load() method of the BaseLabeler class. The method loads serialized labeler models using the unsafe pickle.load() function on user-supplied file paths without any validation or security controls. Python's pickle module is inherently dangerous for deserializing untrusted data, as it can execute arbitrary code during the deserialization process. A remote attacker can exploit this by providing a maliciously crafted pickle file, leading to arbitrary code execution on the victim's system when the file is loaded via the vulnerable method.

osv:CVE-2026-31223
Complete source record
{
  "id": "76e6890dcb586626289d6217d22ea2d562a6b3f80957532773cba7e1837b5ee8",
  "url": "https://osv.dev/vulnerability/CVE-2026-31223",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "CVE-2026-31223",
    "summary": "The snorkel library thru v0.10.0 contains a critical insecure deserialization vulnerability (CWE-502) in the BaseLabeler.load() method of the BaseLabeler class. The method loads serialized labeler models using the unsafe pickle.load() function on user-supplied file paths without any validation or security controls. Python's pickle module is inherently dangerous for deserializing untrusted data, as it can execute arbitrary code during the deserialization process. A remote attacker can exploit this by providing a maliciously crafted pickle file, leading to arbitrary code execution on the victim's system when the file is loaded via the vulnerable method.",
    "evidence": "osv:CVE-2026-31223",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-31223",
      "aliases": [
        "CVE-2026-31223",
        "GHSA-fq92-qc8f-482v",
        "PYSEC-2026-3069"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/snorkel-team/snorkel",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "last_affected": "9b642a212abec640a868ccc558fa3dbeb4c6a390"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:snorkel:snorkel:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "last_affected": "0.10.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v0.10.0",
            "v0.9.9",
            "v0.9.8",
            "v0.9.7",
            "v0.9.6",
            "v0.9.5",
            "v0.9.4",
            "v0.9.3",
            "v0.9.2",
            "v0.9.1",
            "v0.9.0",
            "v0.7.0-beta",
            "v0.6.3",
            "v0.6.2",
            "v0.6.1",
            "v0.6",
            "v0.5",
            "v0.4"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31223.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:45.618197597Z",
      "provider": "osv",
      "references": [
        "https://www.notion.so/CVE-2026-31223-35d1e1393188811ab1d0e4a8a2e67992",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31223.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-31223",
        "https://github.com/snorkel-team/snorkel"
      ],
      "provider_metadata": {
        "cna_assigner": "mitre",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31223.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-31223",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 513848,
  "published_at": "2026-05-12T00:00:00+00:00"
}