Pillow CVE-2026-112900: Cara Cari dan Baiki dengan GitLab

GitLab tidak terjejas oleh CVE-2026-112900 atau kelemahan lain yang dibaiki dalam Pillow 13.0.0. Produk GitLab tidak menyertakan pustaka Pillow, dan pasukan Keselamatan kami tidak menemui bukti kesan terhadap infrastruktur yang diuruskan GitLab. GitLab.com, GitLab Self-Managed, dan GitLab Dedicated tidak terjejas.

Pillow ialah salah satu pustaka imej yang paling banyak digunakan dalam ekosistem Python. Ia sering berada beberapa lapisan lebih rendah dalam pokok kebergantungan, dibawa masuk oleh kerangka kerja web, perkhidmatan thumbnail, atau toolkit ML, sedangkan tiada siapa pun memilihnya secara langsung. Pada 16 Oktober 2026, projek Pillow melancarkan versi 13.0.0, dan salah satu pembaikan keselamatannya ialah CVE-2026-112900: suntikan argumen dalam cara Pillow memanggil Ghostscript untuk memaparkan imej EPS. Rekod CVE yang diterbitkan pada 19 Oktober menilainya 9.2 (Kritikal) mengikut CVSS 4.0. Ia menjejaskan setiap keluaran Pillow dari 2.6.0 hingga sebelum 13.0.0. Tiada eksploitasi di alam nyata dilaporkan setakat ini, tetapi penilaian CISA menyatakannya sebagai boleh diautomasi dengan kesan teknikal sepenuhnya.

Naik taraf Pillow ke 13.0.0 pada setiap projek dan imej yang mengendalikan imej yang tidak dipercayai, dan keluarkan Ghostscript daripada imej yang tidak memerlukan sokongan EPS.

Panduan ini untuk pasukan keselamatan dan platform yang mempunyai projek Python di GitLab. Ia merangkumi versi yang telah dibaiki bagi setiap distribusi, cara kelemahan itu berfungsi, isu High dan Critical lain yang dibaiki dalam keluaran yang sama, cara mencari projek terjejas dengan dependency scanning, container scanning, GitLab Orbit, dan code search, serta cara memulihkan pada skala besar dengan GitLab Duo Agent Platform.

CVE-2026-112900 secara ringkas

CVE-2026-112900 ialah kelemahan suntikan arahan OS dan argumen dalam plugin EPS Pillow, yang dinilai Kritikal (skor 9.2 pada CVSS 4.0) oleh CVE Numbering Authority (CNA). Rekod CVE itu diterbitkan pada 19 Oktober 2026.

Naik taraf Pillow ke 13.0.0 atau versi selepasnya. Rekod CVE menyenaraikan 13.0.0 sebagai satu-satunya versi yang telah dibaiki, jadi setiap cabang lama perlu berpindah ke versi itu. Kemas kini kerangka kerja dan pengesahan input pada kandungan imej tidak membantu di sini, kerana kelemahan itu terletak pada cara nama fail sampai ke Ghostscript.

Jika Pillow anda datang daripada pakej edaran, semak penjejak edaran itu dahulu. Pakej edaran menyimpan nombor versinya sendiri, jadi bandingkan dengan penjejak, bukan dengan pip show. Status setakat 26 Oktober 2026:

Sumber: penjejak keselamatan Debian, SUSE dan Amazon Linux, setakat 26 Oktober 2026. Amazon Linux 2 disenaraikan tidak terjejas. Ubuntu menyenaraikan semua keluaran sebagai perlu dinilai, manakala Red Hat, Arch Linux dan Oracle Linux tiada rekod untuk CVE ini. Penjejak Alpine tidak dapat disemak.

Sehingga edaran anda mengeluarkan pembaikan, pasang Pillow 13.0.0 daripada PyPI dalam persekitaran maya atau kontena, atau gunakan penyelesaian sementara di bawah.

Bina semula imej kontena anda. Jika Dockerfile anda memasang Pillow tanpa memaut versi tampalan, bina semula dengan docker build –pull –no-cache dan hantar semula supaya langkah pemasangan menyelesaikan keluaran yang sudah ditampal. Imej yang memaut versi, seperti pillow==12.3.0, perlu diubah pemautannya dahulu. Imej yang dibina di atas imej asas lain hanya mendapat pembaikan apabila penyelenggara mengemas kini imej tersebut, jadi semak imej upstream sebelum anda bina semula.

Pillow 13.0.0 juga mengubah beberapa tingkah laku, seperti cara tag TIFF berganda dikendalikan dan cara imej I-mode disimpan sebagai PNG, jadi jalankan ujian pemprosesan imej anda sebelum melancarkan naik taraf ini.

Cara kerentanan ini berfungsi

Fail EPS ialah program PostScript, jadi Pillow memanggil Ghostscript (gs) untuk memaparkannya, dengan menghantar nama fail input terus selepas -f tanpa sanitizing.

Apabila objek imej mempunyai .name yang wujud pada cakera, Pillow menggunakan nama itu apa adanya. Pengurai argumen Ghostscript memberi makna khas kepada dua jenis rentetan:

  • Awalan – dibaca sebagai pilihan, bukan nama fail, yang membolehkan penyerang melakukan suntikan argumen (CWE-88).
  • Awalan @ memberitahu Ghostscript untuk membaca lebih banyak argumen baris arahan daripada fail teks yang dinamakan. Jika penyerang juga mengawal kandungan fail tersebut, mereka mengawal argumen Ghostscript tambahan, yang menjadi laluan ke arah pelaksanaan arahan (CWE-78).

Advisory itu menyatakan bahawa ini tetap berfungsi walaupun dengan -dSAFER, iaitu penanda sandbox yang dihantar Pillow secara lalai. Penanda itu mengehadkan apa yang program PostScript boleh lakukan, tetapi tidak menghalang penyerang daripada menyuntik argumen ke dalam baris arahan itu sendiri.

Cara semak sama ada anda terjejas

Anda hanya terdedah jika semua syarat ini dipenuhi:

  1. Versi Pillow anda di bawah 13.0.0.
  2. Ghostscript telah dipasang.
  3. Kod anda membuka fail EPS berdasarkan nama fail yang boleh dipengaruhi penyerang, contohnya muat naik yang disimpan dengan nama asal.
  4. Imej dimuatkan atau dipaparkan, bukan sekadar dibuka.

Pelaksanaan arahan penuh juga memerlukan penyerang mengawal fail teks yang dirujuk dengan awalan @. Perkhidmatan yang menjana nama fail sendiri atau menggunakan aliran dalam memori jauh lebih sukar dicapai.

Jika anda belum boleh naik taraf: simpan muat naik dengan nama yang dijana, hadkan format menggunakan Image.open(f, formats=[“PNG”, “JPEG”]), atau keluarkan Ghostscript daripada imej yang tidak memerlukannya.

Bukan satu pepijat sahaja: Semua isu High dan Critical dalam 13.0.0

Catatan keluaran 13.0.0 menyenaraikan 17 nasihat keselamatan High dan Critical (3 Critical, 14 High). Lima belas daripadanya dipadankan dengan CVE. Dua yang tidak dipadankan, GHSA-xcvg-w56q-r89m dan GHSA-78g4-xqwv-q3g8, perlu dipantau, kerana alat yang hanya memadankan berdasarkan ID CVE akan terlepas nasihat ini.

Kenal pasti Pillow dalam semua kumpulan GitLab anda

Cari semua projek yang memasang Pillow, kemudian dahulukan pembetulan pada projek yang juga mempunyai Ghostscript dan menerima muat naik.

  1. Dependency scanning melaporkan versi Pillow dalam lockfile anda, termasuk kebergantungan transitive. Aktifkan ia pada setiap projek, atau untuk satu kumpulan penuh menggunakan dasar pelaksanaan imbasan. Dasar kelulusan merge request boleh menyekat penggabungan yang menambah versi terdedah, dan imbasan kerentanan berterusan menyemak semula projek sedia ada apabila nasihat keselamatan dikeluarkan, untuk nasihat yang berusia sehingga 14 hari.

Rajah 1: Laporan Kerentanan GitLab simulasi yang menunjukkan dapatan Dependency Scanning bagi CVE Pillow tahap Critical dan High

  1. Container scanning mengesan Ghostscript yang dipasang sebagai pakej OS. Imej yang mempunyai Pillow tetapi tiada Ghostscript tidak dapat memaparkan fail EPS, jadi keutamaannya lebih rendah. Ia tidak mengesan Ghostscript yang dikompilasi daripada kod sumber. Aktifkan container scanning dengan cara yang sama.
  2. GitLab Orbit: Oleh kerana Pillow biasanya hadir sebagai dependency milik orang lain, soalan “siapa yang menggunakannya?” sukar dijawab daripada mana-mana satu projek sahaja. GitLab Orbit menukarkan projek, pipeline, temuan keselamatan dan kod anda menjadi graf yang boleh ditanya oleh agent. Aktifkan ia pada top-level group, kemudian minta projek Python yang mengendalikan imej, serta projek yang mempunyai temuan yang masih terbuka pada CVE-2026-112900 atau nasihat keselamatan Pillow yang lain. Ini akan memberi anda senarai pendek sebelum anda membuka satu repository pun. Orbit hanya meliputi branch default dan berada dalam beta untuk Premium dan Ultimate pada GitLab.com dan GitLab Self-Managed. Ia belum parse Dockerfile, jadi sahkan Ghostscript dengan code search pada langkah seterusnya.
  3. Code search menemui apa yang terlepas daripada scanner. Jalankan carian ini dalam exact code search pada top-level group dengan mod regular expression dihidupkan: file:requirements.*\.txt$ (?i)^\s*pillow lang:Dockerfile (?i)ghostscript (?i)EpsImagePlugin|\.eps\b

Akhir sekali, bandingkan hasil dengan apa yang benar-benar berjalan. Apa-apa yang berjalan tetapi tidak diisytiharkan oleh projek anda ialah jurang. Untuk Kubernetes, operational container scanning meliputi imej dalam cluster anda.

Atasi pada skala besar dengan GitLab Duo Agent Platform

Sebaik anda ada senarai projek terjejas, kerja yang tinggal bersifat berulang: naikkan versi, buka merge request, dan dapatkan semakan. Serahkan bahagian berulang kepada agent, dan biarkan manusia fokus pada keputusan.

Mula dalam Agentic Chat dan minta ia menyenaraikan temuan Dependency Scanning untuk CVE Pillow ini daripada Vulnerability Report (Ultimate), kemudian cipta epic dengan satu issue untuk setiap projek terjejas. Menetapkan issue kepada Developer Flow menghasilkan merge request yang menaikkan Pillow kepada 13.0.0 ke atas, atau mengedit versi yang di-pin dalam Dockerfile. Flow trigger pada event Assign memulakan flow sebaik sahaja issue ditetapkan. Code Review Flow kemudian boleh memberi setiap merge request semakan awal berdasarkan review instructions anda.

Rajah 2: Duo Agent Chat menunjukkan pengimbasan keselamatan dan penciptaan merge request untuk mengatasi kerentanan Pillow

Rajah 3: Merge request yang dicipta oleh GitLab Duo Agent Platform untuk mengatasi kerentanan Pillow

Ejen berhenti pada merge request. Anda masih perlukan seorang manusia untuk menyemak dan menggabungkan setiap satu, menjalankan ujian pemprosesan imej kerana 13.0.0 mengubah cara tag TIFF berganda dan simpanan PNG mod I berkelakuan, serta mengesahkan versi yang sudah ditampal telah dipasang sebelum menutup issue.

Garis masa

Sumber

  • Nota keluaran Pillow 13.0.0
  • Rekod CVE-2026-112900 dan GHSA-w889-685w-c8fh
  • Commit pembaikan a2c3631
  • Debian security tracker dan Ubuntu security tracker, setakat 23 Oktober 2026
  • GitLab: Imbasan kebergantungan menggunakan SBOM
  • GitLab: Imbasan kebergantungan berterusan
  • GitLab: Imbasan kontena dan carian kod tepat

Sumber Rujukan:

  • Artikel asal: GitLab Blog
  • Diterjemah daripada artikel asal ke Bahasa Melayu oleh AI Editorial – haqis.com
Comments

Similar Posts