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

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

- ประเภท: ข่าว · หมวด: Data & Analytics
- เผยแพร่: 2026-10-15T06:21:00.000Z · อัปเดต: 2026-10-15T06:21:00.000Z
- โดย: กองบรรณาธิการ THAI DATA, THAI DATA IT BUSINESS ENTERPRISE
- ที่มา: https://thaidata.co.th/data/pgbouncer-1-26-1-scram-auth-bypass-cve/

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

- โครงการ 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 แก้ พร้อมช่วงเวอร์ชันที่ได้รับผลกระทบ](https://thaidata-co-th.s3.ap-southeast-1.amazonaws.com/thaidata.co.th/images/articles/pgbouncer-1-26-1-scram-auth-bypass-cve/pgbouncer-1-26-1-cves.webp?v=262eb820) _(ภาพ: 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 ระบุช่องโหว่ 3 รายการที่แก้](https://thaidata-co-th.s3.ap-southeast-1.amazonaws.com/thaidata.co.th/images/articles/pgbouncer-1-26-1-scram-auth-bypass-cve/pgbouncer-1-26-1-release-page.webp?v=0a2d608f) _(ภาพ: 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 และ 1.26.0 บน pgbouncer.org แสดงรายละเอียดช่องโหว่และเวอร์ชันที่ได้รับผลกระทบ](https://thaidata-co-th.s3.ap-southeast-1.amazonaws.com/thaidata.co.th/images/articles/pgbouncer-1-26-1-scram-auth-bypass-cve/pgbouncer-changelog-1-26.webp?v=50b7b5e0) _(ภาพ: 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](/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


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

- [PgBouncer 1.26.1](https://www.pgbouncer.org/2026/10/pgbouncer-1-26-1) — PgBouncer
- [PgBouncer changelog](https://www.pgbouncer.org/changelog.html) — PgBouncer
- [PgBouncer 1.26.1 released - Fixes three CVEs](https://www.postgresql.org/about/news/pgbouncer-1261-released-fixes-three-cves-3403/) — PostgreSQL Global Development Group
- [psqlODBC 18.00.0005 released with security fix for CVE-2026-109448](https://www.postgresql.org/about/news/psqlodbc-18000005-released-with-security-fix-for-cve-2026-109448-3404/) — PostgreSQL Global Development Group
