nicolasjulian/bouncer-overflow
GitHub: nicolasjulian/bouncer-overflow
针对 PgBouncer 1.25.1 中 CVE-2026-6664 整数溢出漏洞的本地拒绝服务 PoC,附带一键 Docker 实验环境。
Stars: 0 | Forks: 0
# PgBouncer 崩溃 PoC
本仓库包含一个本地概念验证,用于演示易受攻击的 PgBouncer 版本中由整数溢出导致的 PgBouncer 崩溃。包含的 Docker 设置会构建 PgBouncer `1.25.1`,启动一个 PostgreSQL 后端,启用 SCRAM-SHA-256 身份验证,并针对 PgBouncer 运行 `poc.py`。
本工具仅用于受控的实验室测试。请勿在未经授权或没有明确测试许可的系统上运行此程序。
## 目录
- `poc.py` - Python 概念验证客户端。
- `docker-compose.yml` - 本地 PostgreSQL、PgBouncer 和 PoC 运行器服务。
- `postgres/init.sql` - 创建测试数据库用户。
- `pgbouncer/Dockerfile` - 构建存在漏洞的 PgBouncer `1.25.1`。
- `pgbouncer/pgbouncer.ini` - 使用 SCRAM 认证的 PgBouncer 配置。
- `pgbouncer/gen_userlist.py` - 生成确定性的 SCRAM 验证器。
## 环境要求
- Docker
- Docker Compose
- Python 3(如果需要从主机手动运行 `poc.py`)
## 使用 Docker Compose 运行
构建并启动实验环境:
```
docker compose up --build
```
Compose 文件会启动:
- 内部 compose 网络上的 PostgreSQL。
- 在主机端口 `6432` 上暴露的 PgBouncer。
- 一个运行 PoC 以针对 PgBouncer 进行测试的一次性 Python 容器。
如果仅运行服务并手动执行 PoC:
```
docker compose up --build postgres pgbouncer
python3 poc.py 127.0.0.1 6432
```
## 预期结果
当易受攻击的 PgBouncer 进程处理到格式错误的 SASL 初始响应时,客户端应报告连接被重置或 PgBouncer 变得不可达。
PoC 会检查此情况,并打印崩溃是否已被确认。
## 清理
停止并移除实验环境容器:
```
docker compose down
```
## 备注
PoC 默认设置为:
- 主机:`127.0.0.1`
- 端口:`6432`
- 用户:`testuser`
- 数据库:`testdb`
自定义目标:
```
python3 poc.py
```
标签:CISA项目, CVE, CVE-2026-6664, Docker, Docker Compose, Maven, PgBouncer, PoC, PostgreSQL, Python, SASL认证, SCRAM-SHA-256, 安全测试, 安全防御评估, 崩溃漏洞, 拒绝服务攻击, 攻击性安全, 数字签名, 数据展示, 整数溢出, 无后门, 暴力破解, 概念验证, 测试用例, 漏洞复现, 漏洞验证, 版权保护, 红队, 网络安全, 请求拦截, 逆向工具, 隐私保护