Title: 【安全漏洞】CWE-295: 微信支付 API TLS 证书验证完全禁用 — 支付凭据可被中间人窃取
漏洞概述
CWE-295: Improper Certificate Validation
严重程度: 🔴 CRITICAL (CVSS 8.1)
OpenShare 的微信支付模块 (pay.php) 在调用微信统一下单 API 时,完全禁用了 TLS 证书验证和主机名验证。支付相关数据(商户号、订单金额、商品描述、回调地址)通过未经验证的 HTTPS 连接发送到 api.mch.weixin.qq.com。
受影响代码
文件: pay.php:99-109
$opts = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type: text/xml',
'content' => $xml
),
"ssl" => array(
"verify_peer" => false, // ← 证书验证已禁用
"verify_peer_name" => false, // ← 主机名验证已禁用
)
);
$context = stream_context_create($opts);
$result = file_get_contents(
'https://api.mch.weixin.qq.com/pay/unifiedorder',
false,
$context
);
数据流分析
以下数据通过未验证 TLS 传输到微信支付 API:
appid — 微信支付应用 ID
mch_id — 商户号
sign — 使用商户 API 密钥生成的 MD5/SHA256 签名
body — 商品/订单描述
out_trade_no — 商户订单号
total_fee — 交易金额
notify_url — 支付结果回调地址
攻击场景
具备网络中间人(MITM)定位的攻击者可以:
- 窃取支付信息 — 捕获所有订单详情和商户信息
- 篡改交易金额 — 修改
total_fee 字段
- 劫持支付回调 — 修改
notify_url 指向攻击者服务器
- 伪造支付确认 — 冒充微信支付返回虚假的支付成功响应
修复方案
"ssl" => array(
"verify_peer" => true,
"verify_peer_name" => true,
// 如需指定 CA 证书包:
// "cafile" => "/path/to/cacert.pem",
)
PHP 默认的 CA 证书包路径通常为:
- Linux:
/etc/ssl/certs/ca-certificates.crt
- 或通过
php.ini 中的 openssl.cafile 配置
影响范围
OpenShare 是一个被广泛使用的中国社交媒体集成 SDK(3,619 stars),涵盖:
- 微信支付统一下单
- 微信/QQ/微博社交登录
- 支付宝支付集成
- 各主流平台社交分享
发现信息
- 日期: 2026-06-18
- 方法: GitHub Code Search:
verify_peer false stream_context_create language:PHP
- CWE: CWE-295
备注
本项目最后更新为 2018 年 9 月,距今已近 8 年无维护。建议下游用户:
- 自行修改
pay.php 中的 TLS 配置
- 考虑迁移至官方微信支付 SDK
- 关注 CVE 分配进度(将通过 GitHub Security Advisory 申请)
Title: 【安全漏洞】CWE-295: 微信支付 API TLS 证书验证完全禁用 — 支付凭据可被中间人窃取
漏洞概述
CWE-295: Improper Certificate Validation
严重程度: 🔴 CRITICAL (CVSS 8.1)
OpenShare 的微信支付模块 (
pay.php) 在调用微信统一下单 API 时,完全禁用了 TLS 证书验证和主机名验证。支付相关数据(商户号、订单金额、商品描述、回调地址)通过未经验证的 HTTPS 连接发送到api.mch.weixin.qq.com。受影响代码
文件:
pay.php:99-109数据流分析
以下数据通过未验证 TLS 传输到微信支付 API:
appid— 微信支付应用 IDmch_id— 商户号sign— 使用商户 API 密钥生成的 MD5/SHA256 签名body— 商品/订单描述out_trade_no— 商户订单号total_fee— 交易金额notify_url— 支付结果回调地址攻击场景
具备网络中间人(MITM)定位的攻击者可以:
total_fee字段notify_url指向攻击者服务器修复方案
PHP 默认的 CA 证书包路径通常为:
/etc/ssl/certs/ca-certificates.crtphp.ini中的openssl.cafile配置影响范围
OpenShare 是一个被广泛使用的中国社交媒体集成 SDK(3,619 stars),涵盖:
发现信息
verify_peer false stream_context_create language:PHP备注
本项目最后更新为 2018 年 9 月,距今已近 8 年无维护。建议下游用户:
pay.php中的 TLS 配置