GHSA-2mhw-8qcg-gr96: Skia python Skia-python Vendors Vulnerable Libfreetype Because Vulnerability

HIGH
CVSS 8.1
CWE-1395 CWE-787
Published
Advisory Summary

GHSA-2mhw-8qcg-gr96 is a HIGH (CVSS 8.1) skia-python vendors vulnerable libfreetype because vulnerability (CWE-1395: Dependency on Vulnerable Third-Party Component) affecting Skia python libraries in the PyPI ecosystem. The issue involves skia-python vendors vulnerable libfreetype because of pinned cibuildwheel version. Remediation is available by upgrading affected packages to version 144.0.post1.

GHSA-2mhw-8qcg-gr96 at a Glance

CVE Identifier N/A
GHSA Identifier GHSA-2mhw-8qcg-gr96
Severity HIGH
CVSS v3.1 Base Score 8.1
CWE Classification CWE-1395: Dependency on Vulnerable Third-Party Component
Affected Product Skia python
Package Ecosystem PyPI
Published Date
Last Updated

Security Impact

CVSS: 8.1

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H).

Attack Vector Network (AV:N)
Attack Complexity High (AC:H)
Privileges Required None (PR:N)
User Interaction None (UI:N)
Scope Unchanged (S:U)
Confidentiality High (C:H)
Integrity High (I:H)
Availability High (A:H)

How to Fix GHSA-2mhw-8qcg-gr96

To remediate this vulnerability, upgrade all affected Skia python dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

skia-python fixed: Latest secure release
pip install skia-python>=Latest secure release
skia-python fixed: 144.0.post1
pip install skia-python>=144.0.post1
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

pip show skia-python

How to Check if You Are Affected

To determine whether your Python environment is affected by GHSA-2mhw-8qcg-gr96, inspect your installed packages using pip:

pip show skia-python

Analyze the terminal output to locate any version of Skia python in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 144.0.post1), your application is affected.

Note: The pip show skia-python command checks currently installed packages in your active Python environment.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-1395: Dependency on Vulnerable Third-Party Component, where the product has a dependency on a third-party component that contains one or more known vulnerabilities. In Skia python, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Impact The Linux wheels for skia-python vendor a vulnerable version of libfreetype that is affected by CVE-2025-27363 [1]. The root cause is a chain of unfortunate events: 1. skia-python builds wheels using pinned pypa/cibuildwheel@2.21.3 [2] 2. cibuildwheel 2.21.3 in turn pins manylinux container images [3] 3. In these images, version 2.9.1-9.el8 of RedHat package freetype is *preinstalled*. This package version is vulnerable and has since been patched in 2.9.1-10. 4. During the skia-python Linux build, libfreetype is vendored from the system, resulting in skia-python.libs/libfreetype-29a7443c.so.6.16.1 [ To find the provenance of your vendored libfreetype, we extracted the 8-character hash of the original binary file that is added during the build process (29a7443c), and matched it against our database of hashes all historic Red Hat, Debian and Ubuntu releases of freetype. ] 5. Because freetype is only a *transitive* dependency of the packages explicitly installed by the build script [4], it is not upgraded to the patched version [4]. 5. As a result, the published wheels embed a vulnerable libfreetype, even though patched packages are available upstream. This appears to be a broader manylinux ecosystem issue. The base images do not enforce that `yum update` runs on container start, so preinstalled libraries may remain vulnerable indefinitely. ### Patches > In the case of skia-python, the solution is to explicitly install freetype in the build process and rebuild the wheels. The original report was suggesting the above, but in the current `build_Linux.sh` script, the patched `freetype-devel` version 2.9.1-10 gets installed as a dependency. It's just that we need to rebuild the wheel for a new release. ### Workarounds Users must upgrade the wheel package after release. ### References 1. https://nvd.nist.gov/vuln/detail/CVE-2025-27363 2. https://github.com/kyamagu/skia-python/blob/9ffb045811f9b5508e152302d5b81aadca6edd8d/.github/workflows/ci.yml#L38 3. https://github.com/pypa/cibuildwheel/blob/v2.21.3/cibuildwheel/resources/pinned_docker_images.cfg 4. https://github.com/kyamagu/skia-python/blob/9ffb045811f9b5508e152302d5b81aadca6edd8d/scripts/build_Linux.sh#L6

GHSA-2mhw-8qcg-gr96 Affected Skia python Versions

2 component(s)
Fixed Versions:
144.0.post1
Product / Package Ecosystem Affected Versions Fixed Version
skia-python
PyPI
144.0
All 1 versions
144.0
None specified
skia-python
PyPI
< 144.0.post1
144.0.post1

References

Frequently Asked Questions

What is GHSA-2mhw-8qcg-gr96?
GHSA-2mhw-8qcg-gr96 is a security vulnerability in Skia python involving skia-python vendors vulnerable libfreetype because of pinned cibuildwheel version under CWE-1395: Dependency on Vulnerable Third-Party Component.
Which Skia python versions are affected?
Affected versions include releases prior to 144.0.post1 across affected packages: skia-python.
What version fixes GHSA-2mhw-8qcg-gr96?
Upgrading to 144.0.post1 (or the latest patched release for your respective branch) resolves the vulnerability.
Is skia-python affected?
Yes, skia-python is affected in releases prior to Latest secure release, 144.0.post1. Upgrade your dependency to Latest secure release, 144.0.post1 or later.
What is the CVSS score of GHSA-2mhw-8qcg-gr96?
GHSA-2mhw-8qcg-gr96 has a CVSS v3.1 base score of 8.1 (HIGH) with vector string CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H.
What CWE is associated with GHSA-2mhw-8qcg-gr96?
GHSA-2mhw-8qcg-gr96 is classified under CWE-1395: Dependency on Vulnerable Third-Party Component (The product has a dependency on a third-party component that contains one or more known vulnerabilities.).
How can I check PyPI dependencies for GHSA-2mhw-8qcg-gr96?
Run the dependency tree command: 'pip show skia-python'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-2mhw-8qcg-gr96",
  "modified" : "2026-03-19T18:10:25Z",
  "published" : "2026-03-19T18:10:25Z",
  "aliases" : [ ],
  "summary" : "skia-python vendors vulnerable libfreetype because of pinned cibuildwheel version",
  "details" : "### Impact\n\nThe Linux wheels for skia-python vendor a vulnerable version of\nlibfreetype that is affected by CVE-2025-27363 [1].\n\nThe root cause is a chain of unfortunate events:\n\n1. skia-python builds wheels using pinned pypa/cibuildwheel@2.21.3 [2]\n\n2. cibuildwheel 2.21.3 in turn pins manylinux container images [3]\n\n3. In these images, version 2.9.1-9.el8 of RedHat package freetype is\n*preinstalled*. This package version is vulnerable and has since been\npatched in 2.9.1-10.\n\n4. During the skia-python Linux build, libfreetype is vendored from the\nsystem, resulting in skia-python.libs/libfreetype-29a7443c.so.6.16.1\n\n[ To find the provenance of your vendored libfreetype, we extracted the\n8-character hash of the original binary file that is added during the\nbuild process (29a7443c), and matched it against our database of hashes\nall historic Red Hat, Debian and Ubuntu releases of freetype. ]\n\n5. Because freetype is only a *transitive* dependency of the packages\nexplicitly installed by the build script [4], it is not upgraded to the\npatched version [4].\n\n5. As a result, the published wheels embed a vulnerable libfreetype,\neven though patched packages are available upstream.\n\nThis appears to be a broader manylinux ecosystem issue. The base images\ndo not enforce that `yum update` runs on container start, so\npreinstalled libraries may remain vulnerable indefinitely.\n\n\n### Patches\n\n> In the case of skia-python, the solution is to explicitly install freetype in the build process and rebuild the wheels.\n\nThe original report was suggesting the above, but in the current `build_Linux.sh` script, the patched `freetype-devel` version 2.9.1-10 gets installed as a dependency. It's just that we need to rebuild the wheel for a new release.\n\n### Workarounds\n\nUsers must upgrade the wheel package after release.\n\n### References\n\n1. https://nvd.nist.gov/vuln/detail/CVE-2025-27363\n2. https://github.com/kyamagu/skia-python/blob/9ffb045811f9b5508e152302d5b81aadca6edd8d/.github/workflows/ci.yml#L38\n3. https://github.com/pypa/cibuildwheel/blob/v2.21.3/cibuildwheel/resources/pinned_docker_images.cfg\n4. https://github.com/kyamagu/skia-python/blob/9ffb045811f9b5508e152302d5b81aadca6edd8d/scripts/build_Linux.sh#L6",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "PyPI",
      "name" : "skia-python"
    },
    "versions" : [ "144.0" ]
  }, {
    "package" : {
      "ecosystem" : "PyPI",
      "name" : "skia-python"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "144.0.post1"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 138.0"
    }
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/kyamagu/skia-python/security/advisories/GHSA-2mhw-8qcg-gr96"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2025-27363"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/kyamagu/skia-python"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-1395", "CWE-787" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-03-19T18:10:25Z",
    "nvd_published_at" : null
  }
}