PyPI package intelligence

pillow — deep security report

ShadowCanopy's full breakdown of pillow on PyPI: verdict, AI analysis, dependency chain, network behavior, prebuilds, and obfuscated code.

Caution — flagged for review
Our scan found suspicious behavior worth reviewing before you install this package.
Scanned 8/14/2026
Flaggedpillow@12.3.0View on registry ↗latest: 12.3.0

46 heuristic finding(s) in pillow@12.3.0 — review recommended (AI second opinion unavailable).

Protect your projects free

AI breakdown

Plain-English summary of what this package does and how it behaves.

Python Imaging Library (fork)

Capabilities

  • Contains obfuscated/encoded code

Data access

  • None observed in static analysis

Network

  • Makes outbound network requests

Static analysis raised 46 finding(s). Review the details below before installing.

Obfuscated / hidden code

Encoded payloads decoded statically (without executing them) so you can see what they resolve to.

Obfuscated source fileTests/test_file_eps.py

Multiple obfuscation patterns in Tests/test_file_eps.py

Obfuscated source filepillow-12.3.0/Tests/test_file_eps.py

Multiple obfuscation patterns in pillow-12.3.0/Tests/test_file_eps.py

Obfuscated source fileTests/test_file_tiff.py

Multiple obfuscation patterns in Tests/test_file_tiff.py

Obfuscated source filepillow-12.3.0/Tests/test_file_tiff.py

Multiple obfuscation patterns in pillow-12.3.0/Tests/test_file_tiff.py

Obfuscated source filesrc/PIL/TiffImagePlugin.py

Multiple obfuscation patterns in src/PIL/TiffImagePlugin.py

Obfuscated source filepillow-12.3.0/src/PIL/TiffImagePlugin.py

Multiple obfuscation patterns in pillow-12.3.0/src/PIL/TiffImagePlugin.py

Security findings (46)

Static analysis rule matches, with the exact code that triggered them.

highMalicious URL in packageATK-021Tests/test_file_eps.py

URLhaus: 2026-08-14 08:29:56: https://web.archive.org/web/20220120164601/https://www.adobe.com/content/dam/acom/en/devnet/actionscript/articles/5002.EPSF_Spec.pdf (urlhaus)

highMalicious URL in packageATK-021docs/example/DdsImagePlugin.py

URLhaus: 2026-08-14 08:29:56: https://web.archive.org/web/20170802060935/http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt (urlhaus)

highMalicious URL in packageATK-021src/PIL/EpsImagePlugin.py

URLhaus: 2026-08-14 08:29:56: https://web.archive.org/web/20160528181353/http://partners.adobe.com/public/developer/en/ps/5002.EPSF_Spec.pdf (urlhaus)

highMalicious URL in packageATK-021src/PIL/JpegPresets.py

URLhaus: 2026-08-14 08:29:56: https://web.archive.org/web/20120328125543/http://www.jpegcameras.com/libjpeg/libjpeg-3.html (urlhaus)

mediumObfuscated source fileATK-023Tests/test_file_dds.py

Multiple obfuscation patterns in Tests/test_file_dds.py

mediumObfuscated source fileATK-023pillow-12.3.0/Tests/test_file_dds.py

Multiple obfuscation patterns in pillow-12.3.0/Tests/test_file_dds.py

mediumObfuscated source fileATK-023Tests/test_file_eps.py

Multiple obfuscation patterns in Tests/test_file_eps.py

mediumObfuscated source fileATK-023pillow-12.3.0/Tests/test_file_eps.py

Multiple obfuscation patterns in pillow-12.3.0/Tests/test_file_eps.py

mediumObfuscated source fileATK-023Tests/test_file_jpeg2k.py

Multiple obfuscation patterns in Tests/test_file_jpeg2k.py

mediumObfuscated source fileATK-023pillow-12.3.0/Tests/test_file_jpeg2k.py

Multiple obfuscation patterns in pillow-12.3.0/Tests/test_file_jpeg2k.py

mediumObfuscated source fileATK-023Tests/test_file_libtiff.py

Multiple obfuscation patterns in Tests/test_file_libtiff.py

mediumObfuscated source fileATK-023pillow-12.3.0/Tests/test_file_libtiff.py

Multiple obfuscation patterns in pillow-12.3.0/Tests/test_file_libtiff.py

mediumObfuscated source fileATK-023Tests/test_file_psd.py

Multiple obfuscation patterns in Tests/test_file_psd.py

mediumObfuscated source fileATK-023pillow-12.3.0/Tests/test_file_psd.py

Multiple obfuscation patterns in pillow-12.3.0/Tests/test_file_psd.py

mediumObfuscated source fileATK-023Tests/test_file_tiff.py

Multiple obfuscation patterns in Tests/test_file_tiff.py

mediumObfuscated source fileATK-023pillow-12.3.0/Tests/test_file_tiff.py

Multiple obfuscation patterns in pillow-12.3.0/Tests/test_file_tiff.py

mediumObfuscated source fileATK-023Tests/test_image_transform.py

Multiple obfuscation patterns in Tests/test_image_transform.py

mediumObfuscated source fileATK-023pillow-12.3.0/Tests/test_image_transform.py

Multiple obfuscation patterns in pillow-12.3.0/Tests/test_image_transform.py

mediumObfuscated source fileATK-023Tests/test_imagefont.py

Multiple obfuscation patterns in Tests/test_imagefont.py

mediumObfuscated source fileATK-023pillow-12.3.0/Tests/test_imagefont.py

Multiple obfuscation patterns in pillow-12.3.0/Tests/test_imagefont.py

mediumObfuscated source fileATK-023Tests/test_pdfparser.py

Multiple obfuscation patterns in Tests/test_pdfparser.py

mediumObfuscated source fileATK-023pillow-12.3.0/Tests/test_pdfparser.py

Multiple obfuscation patterns in pillow-12.3.0/Tests/test_pdfparser.py

mediumObfuscated source fileATK-023src/PIL/Image.py

Multiple obfuscation patterns in src/PIL/Image.py

mediumObfuscated source fileATK-023pillow-12.3.0/src/PIL/Image.py

Multiple obfuscation patterns in pillow-12.3.0/src/PIL/Image.py

mediumObfuscated source fileATK-023src/PIL/ImageFont.py

Multiple obfuscation patterns in src/PIL/ImageFont.py

mediumObfuscated source fileATK-023pillow-12.3.0/src/PIL/ImageFont.py

Multiple obfuscation patterns in pillow-12.3.0/src/PIL/ImageFont.py

mediumObfuscated source fileATK-023src/PIL/PdfParser.py

Multiple obfuscation patterns in src/PIL/PdfParser.py

mediumObfuscated source fileATK-023pillow-12.3.0/src/PIL/PdfParser.py

Multiple obfuscation patterns in pillow-12.3.0/src/PIL/PdfParser.py

mediumObfuscated source fileATK-023src/PIL/TiffImagePlugin.py

Multiple obfuscation patterns in src/PIL/TiffImagePlugin.py

mediumObfuscated source fileATK-023pillow-12.3.0/src/PIL/TiffImagePlugin.py

Multiple obfuscation patterns in pillow-12.3.0/src/PIL/TiffImagePlugin.py

highHardcoded public IP in network codeATK-028Tests/test_file_jpeg.py

File Tests/test_file_jpeg.py contains a hardcoded public IP (1999:99:99) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028pillow-12.3.0/Tests/test_file_jpeg.py

File pillow-12.3.0/Tests/test_file_jpeg.py contains a hardcoded public IP (1999:99:99) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028Tests/test_file_webp_metadata.py

File Tests/test_file_webp_metadata.py contains a hardcoded public IP (14:56:27) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028pillow-12.3.0/Tests/test_file_webp_metadata.py

File pillow-12.3.0/Tests/test_file_webp_metadata.py contains a hardcoded public IP (14:56:27) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028Tests/test_image.py

File Tests/test_image.py contains a hardcoded public IP (2003:12:14) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028pillow-12.3.0/Tests/test_image.py

File pillow-12.3.0/Tests/test_image.py contains a hardcoded public IP (2003:12:14) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028docs/conf.py

File docs/conf.py contains a hardcoded public IP (07:54:11) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028pillow-12.3.0/docs/conf.py

File pillow-12.3.0/docs/conf.py contains a hardcoded public IP (07:54:11) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028src/PIL/AvifImagePlugin.py

File src/PIL/AvifImagePlugin.py contains a hardcoded public IP (4:0:0) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028pillow-12.3.0/src/PIL/AvifImagePlugin.py

File pillow-12.3.0/src/PIL/AvifImagePlugin.py contains a hardcoded public IP (4:0:0) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028src/PIL/Image.py

File src/PIL/Image.py contains a hardcoded public IP (1999:99:99) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028pillow-12.3.0/src/PIL/Image.py

File pillow-12.3.0/src/PIL/Image.py contains a hardcoded public IP (1999:99:99) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028src/PIL/PdfParser.py

File src/PIL/PdfParser.py contains a hardcoded public IP (7.9.2.2) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028pillow-12.3.0/src/PIL/PdfParser.py

File pillow-12.3.0/src/PIL/PdfParser.py contains a hardcoded public IP (7.9.2.2) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028src/_avif.c

File src/_avif.c contains a hardcoded public IP (7.3.6.7) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028pillow-12.3.0/src/_avif.c

File pillow-12.3.0/src/_avif.c contains a hardcoded public IP (7.3.6.7) used in network code — review for hidden exfiltration or C2 endpoints.

Package metadata

LicenseUnknown

Python Imaging Library (fork)

Files in package (500)

.pre-commit-config.yamlpillow-12.3.0/.pre-commit-config.yamlCHANGES.rstpillow-12.3.0/CHANGES.rstLICENSEpillow-12.3.0/LICENSEMANIFEST.inpillow-12.3.0/MANIFEST.inMakefilepillow-12.3.0/MakefilePKG-INFOpillow-12.3.0/PKG-INFOREADME.mdpillow-12.3.0/README.mdRELEASING.mdpillow-12.3.0/RELEASING.mdTests/README.rstpillow-12.3.0/Tests/README.rstTests/benchmarks.pypillow-12.3.0/Tests/benchmarks.pyTests/conftest.pypillow-12.3.0/Tests/conftest.pyTests/createfontdatachunk.pypillow-12.3.0/Tests/createfontdatachunk.pyTests/fonts/10x20-ISO8859-1-fewer-characters.pcfpillow-12.3.0/Tests/fonts/10x20-ISO8859-1-fewer-characters.pcfTests/fonts/10x20-ISO8859-1.pcfpillow-12.3.0/Tests/fonts/10x20-ISO8859-1.pcfTests/fonts/10x20.pbmpillow-12.3.0/Tests/fonts/10x20.pbmTests/fonts/10x20.pilpillow-12.3.0/Tests/fonts/10x20.pilTests/fonts/AdobeVFPrototype.ttfpillow-12.3.0/Tests/fonts/AdobeVFPrototype.ttfTests/fonts/AdobeVFPrototypeDuplicates.ttfpillow-12.3.0/Tests/fonts/AdobeVFPrototypeDuplicates.ttfTests/fonts/ArefRuqaa-Regular.ttfpillow-12.3.0/Tests/fonts/ArefRuqaa-Regular.ttfTests/fonts/BungeeColor-Regular_colr_Windows.ttfpillow-12.3.0/Tests/fonts/BungeeColor-Regular_colr_Windows.ttf

How ShadowCanopy checks PyPI packages

ShadowCanopy blocks every dependency by default and only lets through what it can verify — against live malicious-package advisories, an AI behavior scan, and a byte-for-byte hash check. It protects installs across npm, PyPI, crates.io, pkg.go.dev, RubyGems, Maven Central, NuGet, Packagist, Hex, pub.dev, Swift Package Manager.

Protect your projects freeSee what's being blocked

This report reflects ShadowCanopy's threat intelligence at page load and is informational, not a warranty. Canonical URL: https://shadowcanopy.dev/packages/pypi/pillow