ข้ามไปยังเนื้อหา
Data & Analytics

PgBouncer 1.26.1 ปิดช่องโหว่ล็อกอินแทนผู้ใช้อื่นผ่าน SCRAM รวมถึง superuser ของ PostgreSQL

PgBouncer 1.26.1 ออกเมื่อ 14 ต.ค. 2026 แก้ 3 CVE ร้ายแรงสุดคือ CVE-2026-107350 ที่ให้ผู้รู้รหัสผ่านผู้ใช้หนึ่งล็อกอินเป็นผู้ใช้ SCRAM อื่นได้ รวมถึง superuser

โดย กองบรรณาธิการ THAI DATA อ่าน 4 นาที

แชร์FacebookXLINELinkedIn
หน้าประกาศ PgBouncer 1.26.1 บน pgbouncer.org ลงวันที่ 14 ตุลาคม 2026 รายการช่องโหว่ CVE-2026-107350, CVE-2026-107349 และ CVE-2026-107348
ภาพ: PgBouncer (ภาพหน้าจอ)

สรุปประเด็นสำคัญ

  • โครงการ PgBouncer ออก PgBouncer 1.26.1 เมื่อ 14 ตุลาคม 2026 แก้ช่องโหว่ 3 รายการ ในตัวจัดการ connection pool ที่นิยมวางหน้า PostgreSQL
  • CVE-2026-107350 กระทบเวอร์ชัน 1.17.0 ถึง 1.26.0 ผู้โจมตีที่รู้รหัสผ่านของผู้ใช้หนึ่งใน auth_file ล็อกอินเป็นผู้ใช้อื่นที่ใช้ SCRAM ได้ รวมถึงผู้ดูแลและ superuser ฝั่งฐานข้อมูล
  • อีก 2 รายการเป็น DoS ที่ผู้ไม่ได้ยืนยันตัวตนสั่งให้ PgBouncer วนลูปไม่สิ้นสุดได้ กระทบ 1.20.0–1.26.0 และ 1.21.0–1.26.0 ภายใต้ค่าตั้งเฉพาะ
  • วันเดียวกัน ทีม psqlODBC ออกเวอร์ชัน 18.00.0005 แก้ CVE-2026-109448 คะแนน CVSS 5.9 ที่ทำให้หน่วยความจำเสียหายเมื่อผูกพารามิเตอร์เกิน 32,767 ตัว

โครงการ PgBouncer ออก PgBouncer 1.26.1 เมื่อวันที่ 14 ตุลาคม 2026 เพื่อแก้ช่องโหว่ 3 รายการ รายการที่ร้ายแรงที่สุดคือ CVE-2026-107350 ซึ่งให้ผู้ที่รู้รหัสผ่านของผู้ใช้เพียงรายเดียวล็อกอินเป็นผู้ใช้อื่นที่ยืนยันตัวตนแบบ SCRAM ได้ รวมถึงผู้ดูแลและ superuser ของ PostgreSQL ฝั่งหลัง องค์กรที่ใช้ PgBouncer 1.17.0 ถึง 1.26.0 ควรอัปเกรดโดยเร็ว

PgBouncer เป็นตัวจัดการ connection pool ขนาดเล็กที่นิยมวางไว้หน้า PostgreSQL เพื่อให้แอปพลิเคชันจำนวนมากใช้การเชื่อมต่อฐานข้อมูลร่วมกันได้ เมื่อตัวกลางนี้มีช่องโหว่ ผลกระทบจึงไปถึงทุกฐานข้อมูลที่อยู่ด้านหลัง

ช่องโหว่ 3 รายการที่ PgBouncer 1.26.1 แก้

CVE ประเภท เวอร์ชันที่ได้รับผลกระทบ เงื่อนไขที่โจมตีได้
CVE-2026-107350 ข้ามการยืนยันตัวตน 1.17.0–1.26.0 ผู้โจมตีรู้รหัสผ่านของผู้ใช้หนึ่งใน auth_file และทั้งสองบัญชีใช้ SCRAM
CVE-2026-107349 DoS วนลูปไม่สิ้นสุด 1.20.0–1.26.0 ตั้ง ignore_startup_parameters ไว้แต่ไม่มี options และไคลเอนต์ส่งชื่อ option ว่าง เช่น -c=
CVE-2026-107348 DoS จาก integer overflow 1.21.0–1.26.0 ตั้ง max_packet_size ตั้งแต่ 2147483649 ขึ้นไป ค่าเริ่มต้น 2147483647 ไม่ได้รับผลกระทบ
ภาพสรุปช่องโหว่ 3 รายการที่ PgBouncer 1.26.1 แก้: CVE-2026-107350 ข้ามการยืนยันตัวตน SCRAM กระทบ 1.17.0 ถึง 1.26.0, CVE-2026-107349 DoS กระทบ 1.20.0 ถึง 1.26.0 และ CVE-2026-107348 DoS กระทบ 1.21.0 ถึง 1.26.0
ภาพสรุปช่องโหว่ 3 รายการที่ PgBouncer 1.26.1 แก้ พร้อมช่วงเวอร์ชันที่ได้รับผลกระทบ ภาพ: THAI DATA (ข้อมูล: PgBouncer)

CVE-2026-107350 ทำงานอย่างไร

changelog ของ PgBouncer 1.26.1 อธิบายว่า เวอร์ชันที่มีช่องโหว่ยอมประมวลผลข้อความ StartupMessage รอบที่สองซึ่งไคลเอนต์ส่งมาระหว่างการยืนยันตัวตนแบบ SCRAM เมื่อไคลเอนต์ขอเชื่อมต่อฐานข้อมูลที่ไม่มีอยู่จริง ผู้โจมตีที่รู้รหัสผ่านของผู้ใช้หนึ่งราย จึงใช้จังหวะนี้สลับไปเป็นผู้ใช้อื่นได้ บัญชีเป้าหมายจะมาจาก auth_file หรือ auth_query ก็ได้ แต่ทั้งบัญชีของผู้โจมตีและบัญชีเป้าหมายต้องยืนยันตัวตนด้วย SCRAM

ก่อนอัปเกรดเป็น PgBouncer 1.26.1 ความเสี่ยงสูงสุดอยู่ที่ระบบซึ่งให้ผู้ใช้หลายกลุ่มเชื่อมต่อผ่าน PgBouncer ตัวเดียวกัน เช่น แอปหลายตัวหรือผู้ใช้ภายในที่มีบัญชีของตนเอง บัญชีสิทธิ์ต่ำที่รหัสผ่านรั่วจะกลายเป็นทางเข้าสู่บัญชี superuser ได้ ทั้งประกาศบน pgbouncer.org และ postgresql.org ไม่ได้ระบุคะแนน CVSS

หน้าประกาศ PgBouncer 1.26.1 บน pgbouncer.org ลงวันที่ 14 ตุลาคม 2026 รายการช่องโหว่ CVE-2026-107350, CVE-2026-107349 และ CVE-2026-107348
ประกาศ PgBouncer 1.26.1 บนเว็บไซต์ pgbouncer.org วันที่ 14 ตุลาคม 2026 ระบุช่องโหว่ 3 รายการที่แก้ ภาพ: PgBouncer (ภาพหน้าจอ)

PgBouncer 1.26.0 เพิ่งแก้ช่องโหว่ไปเมื่อสามสัปดาห์ก่อน

PgBouncer 1.26.1 ออกห่างจาก 1.26.0 เพียงสามสัปดาห์ รุ่น 1.26.0 ที่ออกเมื่อ 23 กันยายน 2026 แก้ช่องโหว่ไปแล้ว 3 รายการ ได้แก่ CVE-2026-19888, CVE-2026-6668 และ CVE-2026-6669 ซึ่งล้วนทำให้ PgBouncer หยุดให้บริการได้ changelog ระบุว่าเพราะ PgBouncer ทำงานแบบ single-threaded การค้างเพียงครั้งเดียวจึงหยุดบริการลูกค้าทุกรายจนกว่าจะปิดโปรเซส CVE-2026-107348 ในรอบนี้เป็นบั๊กประเภทเดียวกับ CVE-2026-6668 แต่อยู่ในส่วนจัดการบัฟเฟอร์อีกชุด

ผู้ที่อัปเกรดจาก 1.25 ควรรู้การเปลี่ยนแปลงสองเรื่องจาก 1.26.0 คือ PgBouncer เริ่มติดตามค่า search_path เป็นค่าเริ่มต้นเมื่อใช้กับ PostgreSQL 18 ขึ้นไป และตัดความสามารถ online restart (-R) ออก โดยแนะนำให้ใช้ rolling restart กับ so_reuseport แทน PgBouncer 1.26.1 ยังแก้ให้ ignore_startup_parameters มีผลเหนือพารามิเตอร์ที่ติดตาม การใส่ search_path ไว้ในค่านี้จึงกลับไปทำงานแบบ 1.25

changelog ของ PgBouncer ส่วน 1.26.1 ระบุว่า CVE-2026-107350 กระทบ 1.17.0 ถึง 1.26.0 และส่วน 1.26.0 วันที่ 23 กันยายน 2026
ส่วน changelog ของ PgBouncer 1.26.1 และ 1.26.0 บน pgbouncer.org แสดงรายละเอียดช่องโหว่และเวอร์ชันที่ได้รับผลกระทบ ภาพ: PgBouncer (ภาพหน้าจอ)

psqlODBC 18.00.0005 แก้ช่องโหว่ในวันเดียวกัน

ทีม psqlODBC ไดรเวอร์ ODBC ทางการของ PostgreSQL ออกเวอร์ชัน 18.00.0005 ในวันเดียวกัน เพื่อแก้ CVE-2026-109448 คะแนน CVSS 3.1 อยู่ที่ 5.9 ระดับปานกลาง กระทบเวอร์ชัน 08.01.0102 ถึง 18.00.0004 ไดรเวอร์เก็บจำนวนพารามิเตอร์ไว้ในตัวแปร 16 บิตแบบมีเครื่องหมาย เมื่อแอปผูกพารามิเตอร์เกิน 32,767 ตัว ไดรเวอร์จะเขียนทับหน่วยความจำนอกขอบเขต ทำให้แอปแครชหรือทำงานต่อทั้งที่หน่วยความจำเสียหาย ทีมพัฒนาแนะนำว่าถ้ายังอัปเกรดไม่ได้ ให้จำกัดจำนวนพารามิเตอร์ที่สร้างจากข้อมูลภายนอก หรือส่งรายการค่ายาวเป็นพารามิเตอร์อาร์เรย์ตัวเดียว เช่น = ANY(?)

ทำไมเรื่องนี้สำคัญ

กรณี PgBouncer 1.26.1 สะท้อนว่าช่องโหว่ในตัวกลางของฐานข้อมูลมักถูกมองข้าม เพราะทีมสนใจการอัปเดต PostgreSQL มากกว่า แต่ PgBouncer เป็นจุดที่แอปพลิเคชันทุกตัวต้องผ่าน การข้ามการยืนยันตัวตนจึงเท่ากับเปิดทางเข้าข้อมูลทั้งหมดที่ superuser เข้าถึงได้ และ DoS เพียงครั้งเดียวทำให้ทุกแอปที่พึ่งฐานข้อมูลหยุดทำงานพร้อมกัน

สิ่งที่องค์กรไทยควรทำ

  • สำรวจว่าใช้ PgBouncer อยู่ที่ไหน ทั้งบนเซิร์ฟเวอร์ คอนเทนเนอร์ และ sidecar ใน Kubernetes แล้วจดเวอร์ชันของแต่ละจุด
  • อัปเกรดเป็น PgBouncer 1.26.1 ทุกจุดที่ใช้ 1.17.0 ถึง 1.26.0 ถ้าข้ามมาจาก 1.25 ให้ทดสอบเรื่อง search_path และเลิกพึ่ง online restart ก่อนขึ้นระบบจริง
  • ตรวจค่าตั้งระหว่างรออัปเกรด ดูว่า ignore_startup_parameters และ max_packet_size ตั้งตรงเงื่อนไขของช่องโหว่ DoS หรือไม่ และจำกัดเครือข่ายให้เฉพาะเครื่องแอปพลิเคชันเชื่อมต่อ PgBouncer ได้
  • ตรวจบันทึกการล็อกอิน มองหาการเชื่อมต่อไปยังฐานข้อมูลที่ไม่มีอยู่จริงตามด้วยการล็อกอินเป็นบัญชีผู้ดูแล โดยเฉพาะในระบบที่มีหลายบัญชีใช้ PgBouncer ร่วมกัน
  • ถามผู้ให้บริการคลาวด์ หากใช้ PostgreSQL แบบบริการที่มี connection pooler ในตัว ให้สอบถามว่าใช้ PgBouncer เวอร์ชันใดและแพตช์แล้วหรือยัง และอัปเกรด psqlODBC บนเครื่องที่ใช้ ODBC เชื่อมต่อ PostgreSQL

ติดตามข่าวฐานข้อมูลและ Data Platform เพิ่มเติมได้ที่หมวด Data

คำถามที่พบบ่อย

PgBouncer 1.26.1 แก้ช่องโหว่อะไรบ้าง?

PgBouncer 1.26.1 ที่ออกเมื่อ 14 ตุลาคม 2026 แก้ 3 CVE ได้แก่ CVE-2026-107350 ช่องโหว่ข้ามการยืนยันตัวตนแบบ SCRAM ที่ให้ล็อกอินเป็นผู้ใช้อื่นได้ และ CVE-2026-107349 กับ CVE-2026-107348 ซึ่งเป็นช่องโหว่ DoS ที่ทำให้ PgBouncer วนลูปไม่สิ้นสุดจนหยุดให้บริการทุกไคลเอนต์

PgBouncer เวอร์ชันไหนได้รับผลกระทบจาก CVE-2026-107350?

CVE-2026-107350 กระทบ PgBouncer 1.17.0 ถึง 1.26.0 และใช้โจมตีได้เมื่อทั้งบัญชีของผู้โจมตีและบัญชีเป้าหมายยืนยันตัวตนแบบ SCRAM ผู้โจมตีต้องรู้รหัสผ่านของผู้ใช้หนึ่งราย ส่วนบัญชีเป้าหมายมาจาก auth_file หรือ auth_query ก็ได้ ทางแก้คืออัปเกรดเป็น PgBouncer 1.26.1

ถ้ายังอัปเกรด PgBouncer 1.26.1 ไม่ได้ ควรทำอะไร?

ประกาศของโครงการไม่ได้ให้วิธีบรรเทาสำหรับ CVE-2026-107350 นอกจากการอัปเกรด ระหว่างรอควรจำกัดให้เฉพาะเครื่องแอปพลิเคชันที่จำเป็นเชื่อมต่อ PgBouncer ได้ ส่วนช่องโหว่ DoS สองรายการเกิดเฉพาะเมื่อตั้ง ignore_startup_parameters โดยไม่มี options หรือตั้ง max_packet_size สูงกว่าค่าเริ่มต้น จึงตรวจค่าตั้งสองตัวนี้ได้ทันที

ช่องโหว่ psqlODBC CVE-2026-109448 กระทบใคร?

CVE-2026-109448 กระทบ psqlODBC ไดรเวอร์ ODBC ทางการของ PostgreSQL เวอร์ชัน 08.01.0102 ถึง 18.00.0004 แอปที่ให้ข้อมูลจากภายนอกกำหนดจำนวนพารามิเตอร์ เช่น สร้างรายการ IN จากค่าที่ผู้ใช้ส่งมา อาจถูกทำให้หน่วยความจำเสียหายหรือแครชได้ ทางแก้คืออัปเกรดเป็น 18.00.0005

แหล่งอ้างอิง

  1. PgBouncer 1.26.1 — PgBouncer
  2. PgBouncer changelog — PgBouncer
  3. PgBouncer 1.26.1 released - Fixes three CVEs — PostgreSQL Global Development Group
  4. psqlODBC 18.00.0005 released with security fix for CVE-2026-109448 — PostgreSQL Global Development Group

บุคคล องค์กร และสถานที่ในข่าวนี้

เลือกชื่อเพื่ออ่านข่าวทั้งหมดที่กล่าวถึง ตัวเลขคือจำนวนข่าว

ผลิตภัณฑ์และเทคโนโลยี
PostgreSQL5Kubernetes10
แชร์FacebookXLINELinkedIn

พบข้อมูลคลาดเคลื่อน? แจ้งกองบรรณาธิการ