Debian PostgreSQL CVE-2026-6460 และ Sympa ต้องเร่งแพตช์
ผู้ดูแล Debian trixie ที่ใช้ PostgreSQL 17 หรือ Sympa ควรตรวจรุ่นแพ็กเกจและนัดช่วงหยุดบริการ ให้เริ่มจากฐานข้อมูลที่ผู้ใช้สร้าง object ได้ และเว็บ archive ที่เปิดให้ผู้ใช้เข้าถึง
สรุปใน 1 นาที
- อาการ/ปัญหา
- PostgreSQL มีหลายช่องโหว่รวมการรันโค้ดและข้ามสิทธิ์ ส่วน Sympa เปิดทางให้อ่าน archive ที่ถูกลบหรือไฟล์ข้อความดิบโดยไม่ได้รับอนุญาต
- ใครควรอ่าน
- ผู้ใช้ postgresql-17 และ sympa บน Debian trixie ตามประกาศ รวมเครื่องมือ PostgreSQL ฝั่งสำรองและกู้ข้อมูล
- ทางแก้แบบสั้น
- อัปเดตให้ตรงรุ่นแก้ใน Debian Tracker เริ่มบริการที่เกี่ยวข้องใหม่ และติดตามแพ็กเกจ extension ของ PostgreSQL ที่ต้องคอมไพล์ใหม่
พอดีเห็น Debian ออกประกาศความปลอดภัยของ PostgreSQL 17 กับ Sympa เมื่อ 13 พ.ย. 2026 ผมเลยรวมไว้ต่อจากชุดอัปเดตเซิร์ฟเวอร์วันที่ 11 พ.ย. ชุดนี้มีเรื่องต้องตรวจทั้งฐานข้อมูลและคลังจดหมาย เลขรุ่น PostgreSQL ในประกาศกับ Tracker ไม่ตรงกัน ต้องเทียบให้ชัดก่อนสรุปว่าอัปเดตครบแล้ว
| แพ็กเกจ | ประกาศ | ระบบในประกาศ | รุ่นแก้ที่ใช้ตรวจงาน |
|---|---|---|---|
| postgresql-17 | DSA-6625-1 | Debian trixie | 17.12-0+deb13u1 ตาม Tracker |
| sympa | DSA-6624-1 | Debian trixie | 6.2.76~dfsg-1+deb13u1 |
ตารางอ้างTracker ของ PostgreSQL และTracker ของ Sympa แพ็กเกจจาก repository อื่นต้องตรวจประกาศแยก
PostgreSQL มีทั้งบั๊กชนิดข้อมูลและเครื่องมือกู้ข้อมูล
DSA-6625-1 ระบุหลายช่องโหว่ ผลกระทบมีทั้งรันโค้ด ตรวจสอบตัวตนผิด ข้อมูลรั่ว บริการล่ม และยกระดับสิทธิ์ ผมหยิบมาสองตัวอย่างเพื่อช่วยจัดลำดับงาน
CVE-2026-6460 เป็น type confusion หลังเปลี่ยนชนิดข้อมูล เช่น ALTER ... SET DATA TYPE ข้อมูลเก่าอาจยังอยู่ แต่ระบบอ่านด้วยโครงสร้างใหม่ ผู้ที่มีสิทธิ์สร้าง object ในฐานข้อมูลอาจใช้ช่องนี้รันโค้ดได้ โค้ดจะทำงานด้วยบัญชีระบบปฏิบัติการที่รันฐานข้อมูล สิทธิ์สร้าง object เป็นเงื่อนไขสำคัญของการโจมตี ตามคำอธิบายของ PostgreSQL
อีกตัวคือ CVE-2026-116314 ใน pg_restore ช่องนี้เกี่ยวกับ archive แบบ non-plain ที่ผู้โจมตีเตรียมมา เมื่อผู้ใช้นำไฟล์ไปเปิดด้วย pg_restore รุ่นที่มีช่องโหว่ โค้ดอาจทำงานด้วยบัญชีระบบปฏิบัติการที่เรียกเครื่องมือนี้ งานสำรองและกู้ข้อมูลเลยต้องตรวจแพ็กเกจ client ด้วย ต้องอัปเดตเครื่องที่รับไฟล์ไป restore ให้ครบ
DSA ระบุ 17.11-0+deb13u1 แต่ Debian Tracker ระบุรุ่นนี้เป็น vulnerable และให้ 17.12-0+deb13u1 เป็น fixed อีกทั้ง upstream แก้ใน 17.12 ผมเลยใช้รุ่นจาก Tracker เป็นเป้าหมายตรวจงาน ไม่ถือว่าเลขในอีเมล DSA เพียงอย่างเดียวพอแล้ว
ความรุนแรงต้องอ่านพร้อมเงื่อนไขโจมตี
หน้า CVE ของ PostgreSQL ให้คะแนนทั้งสองตัวอย่าง 8.8 โดย CVE-2026-6460 ใช้ vector AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H ส่วน CVE-2026-116314 ใช้ AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H ช่องแรกต้องมีสิทธิ์ระดับต่ำ ช่องที่สองไม่ต้องมีสิทธิ์ในระบบ แต่ต้องให้ผู้ใช้เปิดไฟล์ด้วยเครื่องมือที่มีช่องโหว่ ทั้งคู่มีผลกระทบระดับสูงต่อความลับ ความถูกต้องของข้อมูล และความพร้อมใช้งาน
ป้ายรุ่น CVSS ในแหล่งทางการไม่ตรงกัน หน้า CVE รายตัวเขียน CVSS 3.0 ส่วนประกาศ release เขียน CVSS v3.1 ระเบียน CVE ทางการของ CVE-2026-6460 และ CVE-2026-116314 ระบุ CVSS 3.1 พร้อม vector ตรงกับข้างบน ทุกแหล่งให้คะแนน 8.8 สำหรับสองรหัสนี้ คะแนนนี้ไม่ได้ใช้แทนช่องโหว่ทั้งหมดในชุด
DSA ทั้งสองไม่ได้ระบุว่าพบการโจมตีจริง ผมตรวจ KEV JSON จากคลังทางการของ CISA แล้ว CVE-2026-6460 และ CVE-2026-116314 ยังไม่อยู่ใน KEV ฉบับ 10 พ.ย. 2026 (catalogVersion: 2026.11.10) เลยไม่มีวันเพิ่มรายการหรือกำหนดแก้จาก KEV สำหรับสองรหัสนี้ การไม่อยู่ในรายการไม่ได้แปลว่าไม่มีการโจมตี
Sympa เสี่ยงอ่านคลังจดหมายข้ามสิทธิ์
DSA-6624-1 ระบุปัญหา path traversal และการข้ามสิทธิ์ ผู้โจมตีอาจอ่าน archive ที่ถูกลบหรือไฟล์ข้อความดิบได้ เลยควรทดสอบสิทธิ์เข้าถึงไฟล์เหล่านี้ด้วยหลังอัปเดต ผลกระทบที่ประกาศระบุคือการเข้าถึงข้อความ ไม่ได้ระบุการรันโค้ด
ประกาศระบุ CVE ว่า not yet available และไม่ได้ให้คะแนน CVSS ผมเลยไม่ใส่เลขที่ไม่มีแหล่งอ้างอิง รุ่นแก้ใน DSA และ Tracker ตรงกันคือ 6.2.76~dfsg-1+deb13u1 บน trixie
หน้าแพ็กเกจ Sympa ยังแสดงปัญหานี้เป็น vulnerable ใน bookworm ด้วย แต่ DSA ฉบับนี้ให้รุ่นแก้เฉพาะ trixie ใครใช้ bookworm ต้องตามประกาศของสายนั้นต่อ ไม่ควรนำแพ็กเกจ trixie มาติดตั้งข้ามสาย
อัปเดตแพ็กเกจแล้วเริ่มบริการให้ถูกตัว
ตรวจระบบและแพ็กเกจด้วย dpkg-query โดยนับเฉพาะสถานะ installed
cat /etc/os-release
dpkg-query -W -f='${binary:Package}\t${Version}\t${db:Status-Status}\n' \
postgresql-17 postgresql-client-17 sympa
pg_lsclusters
- เทียบรุ่น ตรวจ release และแหล่งแพ็กเกจกับ Tracker
- เตรียมข้อมูลสำรอง ตรวจทางกู้คืนและนัดช่วงหยุดบริการ
- อ่านรายการอัปเดต จำลองก่อนติดตั้งจริง รวม client และ extension ที่ใช้อยู่
- เริ่มบริการใหม่ ตรวจคลัสเตอร์ฐานข้อมูลและโปรเซสเว็บ archive แล้วทดสอบงานจริง
ทำเฉพาะแพ็กเกจ Debian ที่ติดตั้งอยู่ หลัง update ให้ดู Candidate และ repository จาก apt-cache policy ถ้า Candidate ยังไม่ถึงรุ่นแก้ ให้ตรวจแหล่งอัปเดตก่อน
sudo apt-get update
apt-cache policy postgresql-17 postgresql-client-17 sympa
sudo apt-get -s install --only-upgrade postgresql-17 postgresql-client-17
sudo apt-get -s install --only-upgrade sympa
# อ่านผลจำลองและเตรียมช่วงหยุดบริการก่อนติดตั้ง
sudo apt-get install --only-upgrade postgresql-17 postgresql-client-17
--only-upgrade ไม่ติดตั้งแพ็กเกจใหม่ที่ยังไม่มีอยู่ ให้ตรวจแพ็กเกจ extension เพิ่มด้วย ขั้นตอนติดตั้งอาจเริ่มบริการใหม่ระหว่างอัปเดต ต้องเผื่อไว้ในช่วงบำรุงรักษา
PostgreSQL ให้ใช้ชื่อคลัสเตอร์ที่ได้จาก pg_lsclusters ตัวอย่าง main เป็นชื่อสมมติ เปลี่ยนให้ตรงกับคลัสเตอร์ที่ต้องดูแล การ restart ตัดการเชื่อมต่อของ client ต้องเตรียมแอปให้พร้อม ไม่ใช้ reload แทน เพราะ pg_ctlcluster ระบุว่า reload เป็นเพียงการอ่าน configuration ใหม่
# ตัวอย่างสำหรับคลัสเตอร์ PostgreSQL 17 ชื่อ main เท่านั้น
sudo pg_ctlcluster 17 main restart
sudo pg_ctlcluster 17 main status
pg_lsclusters
DSA เตือนว่า CVE-2026-6460 ยังต้องคอมไพล์ extension บางตัวใหม่ โดย Debian จะทยอยทำผ่าน trixie point release ส่วน release notes 17.12 ระบุว่าต้องคอมไพล์ C extension ใหม่เพื่อให้การป้องกันครบ บางตัวต้องแก้ source ด้วย ถ้าจะปิดการตรวจชนิดข้อมูลเพื่อแก้ปัญหา compatibility ต้องประเมินความเสี่ยงก่อน
ฝั่ง Sympa ต้องเริ่มโปรเซสเว็บ WWSympa ใหม่ด้วย ไม่ตรวจแค่ตัวส่งเมล คู่มืออัปเกรด แนะนำให้หยุดบริการ สำรอง configuration และฐานข้อมูล แล้วติดตั้งก่อนเริ่มใหม่ ถ้าใช้ FastCGI แยก ให้หยุดส่วนนั้นด้วย โดยไม่หยุดบริการฐานข้อมูลระหว่างอัปเกรด Sympa
สำหรับระบบที่ใช้ชื่อ unit และ socket activation ตามคู่มือ WWSympa ให้ตรวจ unit ก่อนใช้คำสั่งข้างล่าง ระบบที่ใช้ FastCGI แบบอื่นต้องใช้คำสั่งของตัวจัดการโปรเซสนั้น
systemctl list-unit-files 'sympa*' 'wwsympa*'
# เฉพาะระบบที่มี unit เหล่านี้และใช้ socket activation
# หยุดก่อนติดตั้งแพ็กเกจ Sympa ในช่วงบำรุงรักษา
sudo systemctl stop wwsympa.socket
sudo systemctl stop wwsympa.service
sudo systemctl stop sympa.service
sudo apt-get install --only-upgrade sympa
sudo systemctl start sympa.service
sudo systemctl start wwsympa.socket
เมื่อมี request เข้า socket ระบบจะเรียก WWSympa ขึ้นมาใหม่ ให้ทดสอบรับส่งเมลและสิทธิ์อ่าน archive ด้วยบัญชีทดสอบที่มีสิทธิ์ต่างกัน
ส่วน PostgreSQL ใครใช้ incremental backup ให้ทำ full backup ใหม่หลังอัปเดต และใช้เป็นฐานของ incremental backup ต่อไป ตรวจด้วยว่ามี index ที่ต้องทำ REINDEX ตาม release notes หรือไม่ เลือกทำเฉพาะที่เข้าเงื่อนไข
เช็กความผิดปกติและจัดลำดับงาน
DSA ทั้งคู่ไม่ได้ให้ IOC สำหรับตรวจว่าถูกโจมตีหรือไม่ ให้เก็บ access log ของเว็บ archive ตรวจคำขออ่านไฟล์ที่ไม่ควรเปิดเผย และเทียบกับสิทธิ์ของบัญชีที่เรียก ฝั่งฐานข้อมูลให้ตรวจการสร้างหรือเปลี่ยน object ที่ไม่ได้รับอนุมัติ รวมถึงประวัติการรับ archive ไป restore นี่เป็นแนวทางตรวจทั่วไป ใช้ยืนยันการโจมตีจากช่องโหว่ชุดนี้โดยลำพังไม่ได้
ถ้าพบหลักฐานเข้าถึงข้อความที่ไม่ควรอ่าน หรือมี object เปลี่ยนโดยไม่ทราบที่มา ให้เก็บหลักฐานและตรวจเหตุการณ์ต่อ การอัปเดตช่วยปิดช่องโหว่ แต่ไม่ได้พิสูจน์ว่าข้อมูลไม่เคยรั่ว
ผมแนะนำให้ผู้ดูแลเร่งอัปเดตฐานข้อมูลที่มีผู้ใช้หลายกลุ่มสร้าง object ได้ และเว็บ Sympa archive ที่เปิดให้ผู้ใช้เข้าถึง ให้นัดช่วงบำรุงรักษาโดยเร็ว ระหว่างเตรียมแพตช์ให้จำกัดการเข้าถึงส่วนที่ไม่จำเป็น วิธีนี้ช่วยลดจุดที่เปิดให้เข้าถึง แต่ DSA ไม่ได้รับรองว่าใช้แทนแพตช์ได้
ที่มา: Debian DSA-6625-1, Debian PostgreSQL Tracker, Debian DSA-6624-1, Debian Sympa Tracker, PostgreSQL CVE-2026-6460, PostgreSQL CVE-2026-116314, PostgreSQL release notes, คู่มือ Sympa, KEV JSON ของ CISA ระเบียน CVE และคู่มือคำสั่งทางการที่ลิงก์ในเนื้อหา ข้อมูลถึง 13 พ.ย. 2026 สำหรับฉบับร่างรอตรวจนี้ เดี๋ยวกลับมาแก้เพิ่มให้ภายหลังครับ
อยากให้เราทำให้ไหม?
ให้เราช่วยติดตั้ง ตั้งค่า ย้ายระบบ หรือแก้ปัญหาเซิร์ฟเวอร์ เพื่อให้คุณมีเวลาไปทำงานที่สำคัญกว่า
เคยเจองานแบบนี้ไหม? ติดตรงไหน?
มาแลกวิธีกันต่อในบอร์ด LinuxThai



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