EST. 2026 — บันทึกงานเซิร์ฟเวอร์จริง SYSADMIN · SECURITY · AI · DIRECTADMIN เล่มที่ 01
THE SYSADMIN ALMANAC
หน้าหลัก / Security Update / 'Ubuntu: CVE-2025-46337 แก้ ADOdb ด่วน พร้อมแพตช์ Pillow'
Security Update

'Ubuntu: CVE-2025-46337 แก้ ADOdb ด่วน พร้อมแพตช์ Pillow'

โดย Ton-Or ·4 พ.ย. 2026·อ่าน 7 นาที
'Ubuntu: CVE-2025-46337 แก้ ADOdb ด่วน พร้อมแพตช์ Pillow'

ใครใช้ ADOdb กับ PostgreSQL หรือมี backend ใช้ Pillow รับไฟล์จากผู้ใช้ ให้ตรวจเส้นทางใช้งานและรุ่นแพ็กเกจ แล้วจัดรอบแพตช์เร่งด่วนสำหรับงานที่เปิดรับข้อมูลภายนอก

สรุปใน 1 นาที

อาการ/ปัญหา
ADOdb อาจรับข้อมูลไปเป็นคำสั่ง SQL ส่วน Pillow มีทั้งข้อมูลรั่ว หน่วยความจำเสียหาย และงานประมวลผลค้างหรือกินหน่วยความจำเกินควรตาม API ที่เรียก
ใครควรอ่าน
แอป PHP ที่ส่งข้อมูลผู้ใช้เข้า pg_insert_id() ของ ADOdb PostgreSQL driver และบริการ Python ที่ใช้เส้นทางประมวลผล Pillow ตามประกาศ
ทางแก้แบบสั้น
อัปเดต libphp-adodb และ python3-pil ตามรุ่น Ubuntu ตรวจสิทธิ์ ESM Apps สำหรับ ADOdb และตรวจสำเนาใน Composer หรือ Python environment แยกด้วย
ข้ามไปขั้นตอน

พอดีเห็น Ubuntu ออก USN-7530-2 กับ USN-8999-1 เมื่อ 4 พ.ย. 2026 ผมเลยรวมไว้สำหรับคนดูแลเว็บ PHP และงานประมวลผลไฟล์บนเซิร์ฟเวอร์ เรื่องแรกเป็นแพตช์ ADOdb ของ CVE เดิม ส่วนอีกเรื่องเป็น Pillow ที่ต้องดูว่าแอปเปิดใช้ตัวอ่านไฟล์หรือ API ตัวไหนบ้าง ไม่ควรตัดสินจากชื่อแพ็กเกจอย่างเดียว

10.0CVSS 3.1 ของ ADOdb
5.22.9ADOdb upstream ที่แก้แล้ว
11 CVEในประกาศ USN-8999-1
ESM Appsช่องทางแพตช์ ADOdb LTS
กลุ่มประกาศ งานที่ต้องตรวจ จุดตัดสินใจ
ADOdb: USN-7530-2 PHP ต่อ PostgreSQL และเรียก pg_insert_id() ด้วยข้อมูลผู้ใช้ ตรวจโค้ดที่เรียกและรุ่น backport
Pillow: USN-8999-1 backend อ่านไฟล์ ฟอนต์ หรือรับค่าประมวลผลจากผู้ใช้ ตรวจ API ที่เปิดให้ใช้และ Python environment จริง

ADOdb: SQL injection มีเงื่อนไข ไม่ใช่ CVE ใหม่

CVE-2025-46337 อยู่ใน PostgreSQL driver ของ ADOdb การ escape พารามิเตอร์ไม่ถูกต้องอาจทำให้ข้อมูลที่ส่งเข้า pg_insert_id() กลายเป็นส่วนของคำสั่ง SQL ได้ เงื่อนไขคือแอปใช้ PostgreSQL และส่งข้อมูลที่ผู้ใช้ควบคุมเข้าเมธอดนี้ แค่ติดตั้ง ADOdb ไว้ยังไม่ยืนยันว่ามีทางเข้าถึงช่องโหว่ ต้องไล่จุดเรียกใช้งานด้วย ตาม ประกาศของ ADOdb

Upstream ระบุว่ากระทบรุ่นถึง 5.22.8 และแก้ใน 5.22.9 ส่วน USN-7530-2 เป็นการส่งแพตช์ตาม USN-7530-1 เพิ่มให้ Ubuntu LTS ตามตารางด้านล่าง ไม่ใช่การเปิดเผยช่องโหว่ใหม่ ผมใช้คำว่า SQL injection ตามรายละเอียดและ upstream แม้ข้อความ Overview ของ USN จะกล่าวกว้างถึงการรันโปรแกรม เพราะหลักฐานส่วนที่อธิบายกลไกยืนยันการสั่ง SQL ไม่ได้ยืนยัน RCE โดยตรง

ความรุนแรงต้องอ่านคู่กับเส้นทางที่แอปเปิดไว้

ADOdb ให้ CVSS 3.1 = 10.0 Critical พร้อมเวกเตอร์ CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:L และบอกว่าเป็นสถานการณ์ใช้งานกรณีเลวร้ายที่สุด หมายถึงหากแอปเปิดทางเข้าตามเงื่อนไข ผลกระทบต่อข้อมูลสูงและไม่ต้องอาศัยผู้ใช้กดยืนยัน แต่ไม่ได้หมายความว่าเว็บ PHP ทุกเว็บโดนเหมือนกัน ขณะที่ Ubuntu จัด priority เป็น Medium ซึ่งเป็นคนละเกณฑ์กับคะแนน CVSS; หน้าเดียวกันยังแสดงชื่อเวอร์ชัน CVSS เป็น v3.0 แต่เวกเตอร์เป็น 3.1 ผมอ้างเวอร์ชันตาม upstream และเวกเตอร์ที่เผยแพร่

Pillow ไม่มีคะแนนรวมทั้งชุด ตัวอย่างที่ต้องดูเป็นพิเศษคือ CVE-2026-59197 ได้ 8.2 High เวกเตอร์ CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H และ CVE-2026-59205 ได้ 7.5 High เวกเตอร์ CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H ทั้งคู่เกี่ยวกับการเขียนหน่วยความจำนอกขอบเขต โดยตัวแรกต้องดูการควบคุมขนาด rank filter ส่วนตัวหลังต้องดูพารามิเตอร์ ImageCms และ output image ที่แอปส่งเข้าไป

อย่ารวมเงื่อนไขเข้าด้วยกัน

USN ระบุว่า Pillow บางช่องโหว่อาจนำไปถึงการรันโค้ด แต่ไม่ได้บอกว่าการอัปโหลดภาพทุกชนิดทำให้เกิดผลนั้นได้ทันที และคะแนน ADOdb 10.0 ก็ไม่ใช่หลักฐานการโจมตีจริง ผมตรวจ CISA KEV ฉบับ 2026.11.03 แล้วไม่พบ CVE ทั้ง 12 หมายเลขในโพสต์นี้ แต่การไม่อยู่ใน KEV ไม่ได้ยืนยันว่าไม่มีการโจมตีจริง เลยไม่ระบุว่าถูกโจมตีแล้ว

Pillow: แยกตามตัวอ่านไฟล์และ API ที่ใช้งาน

USN-8999-1 ครอบคลุมรายการด้านล่าง สำหรับคนทำ thumbnail งานเอกสาร หรือ worker รับไฟล์จากผู้ใช้ ให้เทียบกับขั้นตอนประมวลผลจริง ไม่ใช่ดูเฉพาะนามสกุลไฟล์ที่หน้าเว็บอนุญาต

CVE จุดที่ผิดพลาดและผลที่ Ubuntu ระบุ
CVE-2026-54058 ค่า map stride ของ McIdas AREA อาจทำให้ข้อมูลรั่วหรือบริการล่ม
CVE-2026-54059, CVE-2026-54060, CVE-2026-55379 ตรวจ decompression bomb ในไฟล์ฟอนต์ไม่ครบ อาจใช้หน่วยความจำมากเกินไป
CVE-2026-55380 ปัญหา decompression bomb ของไฟล์ GD อาจทำให้บริการล่ม
CVE-2026-59197 ตรวจขนาด rank filter ไม่ถูกต้อง อาจล่มหรือรันโค้ด
CVE-2026-59199 คำนวณพิกัดภาพผิดพลาด อาจทำให้ Pillow ล่ม
CVE-2026-59200 ไม่จำกัดข้อมูล PDF stream หลังคลายการบีบอัด อาจทำให้หน่วยความจำหมด
CVE-2026-59203 EPS ที่มีค่า BeginBinary ติดลบอาจทำให้ค้าง; USN ระบุว่ากระทบเฉพาะ Ubuntu 26.04 LTS
CVE-2026-59204 สะสมความกว้าง component ของ JPEG2000 tile ผิด อาจใช้หน่วยความจำมากเกินไป
CVE-2026-59205 ตรวจ image mode ของ color transform ไม่ครบ อาจล่มหรือรันโค้ด

รายละเอียด Pillow 12.3.0 ยืนยันการแก้รายการเหล่านี้ และมีข้อแยกที่ควรรู้: GD ต้องเรียกตัวอ่านโดยตรง ไม่ได้เข้าผ่าน Image.open() ตามปกติ ส่วน PDF stream เกี่ยวข้องกับ PdfParser ไม่ควรตีความว่าเป็นช่องโหว่ของโปรแกรมอ่าน PDF ทุกตัว สำหรับ rank filter และ ImageCms ต้องอ่านจุดที่แอปรับค่าจากผู้ใช้ประกอบตามเงื่อนไขใน advisory

รุ่นแก้และวิธีอัปเดตให้ตรงสำเนาที่ใช้อยู่

ตารางนี้เป็นรุ่นแพ็กเกจ Ubuntu ตาม USN-7530-2 และ USN-8999-1 ต้องเทียบภายใน Ubuntu release เดียวกัน เลข upstream ที่ดูเก่ากว่าไม่ได้แปลว่ายังไม่แก้ เพราะ Ubuntu ใช้วิธี backport แพตช์

แพ็กเกจ Ubuntu LTS รุ่นแก้ที่ประกาศ
libphp-adodb 24.04 5.21.4-1ubuntu0.1~esm1
libphp-adodb 22.04 5.20.19-1ubuntu0.1+esm1
libphp-adodb 20.04 5.20.16-1ubuntu0.1~esm2
libphp-adodb 18.04 5.20.9-1ubuntu0.1~esm2
libphp-adodb 16.04 5.20.3-1ubuntu1+esm2
python3-pil 26.04 12.1.1-2ubuntu1.4
python3-pil 24.04 10.2.0-1ubuntu1.4
python3-pil 22.04 9.0.1-1ubuntu0.6

ADOdb ทุกแถวในตารางถูกระบุว่าให้แพตช์ผ่าน Ubuntu Pro / ESM Apps ตรวจ entitlement และสถานะบริการก่อน ถ้า APT ไม่เสนอรุ่นดังกล่าว อย่าเพิ่งสรุปว่าเครื่องปลอดภัย ส่วน Pillow มีข้อมูลทางการไม่ตรงกัน: หน้า CVE-2026-59205 ของ Ubuntu ที่อัปเดต 21 ก.ย. 2026 ยังแสดง Needs evaluation แต่ USN วันที่ 4 พ.ย. ระบุรุ่นแก้แล้ว ตารางนี้อ้างประกาศ USN ที่ใหม่กว่า

ตรวจสถานะก่อนอัปเดต

เริ่มจากดูว่าเครื่องเป็น Ubuntu รุ่นไหน ติดตั้งรุ่นอะไรอยู่ และแพ็กเกจมาจากแหล่งไหน คำสั่งชุดแรกข้างล่างอ่านอย่างเดียว ยังไม่ได้อัปเดตอะไร

cat /etc/os-release
dpkg-query -W -f='${Package}\t${Version}\n' libphp-adodb python3-pil
apt-cache policy libphp-adodb python3-pil
pro status
  1. เตรียมก่อนอัปเดต สำรองข้อมูลและทดสอบใน staging ก่อน
  2. เลือกแพ็กเกจ เลือกเฉพาะแพ็กเกจที่ติดตั้งอยู่จริง ตัวอย่างต่อไปนี้สำหรับเครื่องที่มีทั้งคู่
  3. ตรวจผลจำลอง ดูผลของ apt-get -s ว่ารุ่น candidate ตรงกับตาราง แล้วค่อยรันบรรทัดติดตั้งจริง
sudo apt update
apt-get -s install --only-upgrade libphp-adodb python3-pil
# ตรวจรายการเปลี่ยนแปลงก่อนรันบรรทัดถัดไป
sudo apt-get install --only-upgrade libphp-adodb python3-pil

ถ้าแอปพก ADOdb มากับ Composer หรือคัดลอกเข้าโครงการเอง APT ไม่ได้แก้สำเนานั้น ต้องอัปเดต dependency ของแอปด้วย ฝั่ง Pillow ให้ตรวจด้วย interpreter และบัญชีที่ worker ใช้จริง โดยเฉพาะ virtual environment และ container:

python3 -c 'import sys, PIL; print(sys.executable); print(PIL.__version__); print(PIL.__file__)'
python3 -m pip show Pillow

รุ่น upstream ของ Pillow ที่แก้รายการนี้คือ 12.3.0 เลือกรุ่นที่โครงการรองรับและมีแพตช์นี้ผ่าน lockfile กับกระบวนการ deploy ปกติ อย่าใช้เลขจาก pip ไปตัดสินแพ็กเกจ Ubuntu ที่ backport แล้ว หลังเปลี่ยนให้ restart worker ที่โหลดไลบรารีค้างไว้ และทดสอบไฟล์ปกติที่แอปรองรับ

หาสำเนาที่แอปโหลดAPT / Composer / venvเทียบรุ่นแก้backport / upstreamอัปเดตแล้วตรวจซ้ำrestart worker + ทดสอบแพตช์ระบบกับแพตช์ dependency ของแอป ต้องตรวจแยกกันดูแหล่งติดตั้งและสิทธิ์ ESM Apps ก่อนสรุปผล
ลำดับนี้ช่วยไม่ให้รายงานว่าอัปเดตแล้ว ทั้งที่แอปยังโหลดสำเนาเดิมจากอีก environment

ระหว่างรอแพตช์ ADOdb ผู้พัฒนาให้ workaround ว่าส่งเฉพาะข้อมูลที่ควบคุมได้เข้า $fieldname ของ pg_insert_id() หรือ escape ด้วย pg_escape_identifier() ก่อนใช้ ส่วน Pillow การจำกัดชนิดไฟล์ ค่าประมวลผล หน่วยความจำ และเวลาของ worker เป็นคำแนะนำลดความเสี่ยงของผม ไม่ใช่ workaround ที่รับรองว่าแก้ครบทุก CVE

เช็กอาการย้อนหลังและจัดลำดับงาน

ประกาศที่อ้างไม่ได้ให้ชุด IOC สำหรับตัดสินว่าเครื่องถูกเจาะแล้ว ผมแนะนำให้เทียบ application log กับ database log มองหาคำสั่งหรือการแก้ข้อมูลที่ไม่ตรงกับงานปกติ ฝั่ง Pillow ดู worker ค้าง ล่ม หน่วยความจำพุ่ง และงานเดิมถูกหยิบกลับมาทำซ้ำ อาการเหล่านี้เป็นเบาะแสให้ตรวจต่อ ไม่ใช่หลักฐานยืนยันการโจมตี และการไม่พบ error ก็ไม่ได้พิสูจน์ว่าปลอดภัย

เก็บเวลา request รหัสงาน และไฟล์ต้นเหตุไว้ตามนโยบายข้อมูล อย่าเปิดไฟล์ต้องสงสัยซ้ำบนบริการจริงเพื่อพิสูจน์ ถ้าพบพฤติกรรมผิดปกติให้แยกวิเคราะห์ใน environment ที่ควบคุมได้ แนวทางตรวจแพ็กเกจและหลักฐานประกอบอ่านต่อได้ที่ ไล่ตรวจความปลอดภัย Debian server

ส่วนตัวผมจะจัด ADOdb ที่รับข้อมูลภายนอกถึงเมธอดนี้ และ Pillow worker ที่เปิด API ตามเงื่อนไขไว้ในรอบเร่งด่วน หากยังหาจุดใช้งานไม่เจอ ให้ตรวจ inventory และโค้ดก่อนเลื่อนเข้ารอบบำรุงรักษาปกติ งานสำคัญคือยืนยันว่าแพตช์ถึงสำเนาที่แอปโหลดจริง ไม่ใช่จบแค่คำสั่งอัปเดตทำงานผ่านครับ

ที่มา: Ubuntu USN-7530-2, Ubuntu CVE-2025-46337, ADOdb advisory, Ubuntu USN-8999-1, Pillow 12.3.0 release notes, Pillow rank filter advisory, Pillow ImageCms advisory, Ubuntu CVE-2026-59205 ข้อมูลถึง 5 พ.ย. 2026 เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ

อยากให้เราทำให้ไหม?

ให้เราช่วยติดตั้ง ตั้งค่า ย้ายระบบ หรือแก้ปัญหาเซิร์ฟเวอร์ เพื่อให้คุณมีเวลาไปทำงานที่สำคัญกว่า

คุยเรื่องงานกับเรา

เคยเจองานแบบนี้ไหม? ติดตรงไหน?

มาแลกวิธีกันต่อในบอร์ด LinuxThai

→ คุยต่อในบอร์ด

ความคิดเห็น 0

ยังไม่มีความคิดเห็น — เป็นคนแรกเลย