Commit 9d0149a
committed
fix: 升级 go-pay/crypto 至 v0.0.3,修复回调解密 panic 隐患
微信 V3 回调报文中的 resource.nonce、resource.ciphertext 均来自外部
JSON,此前会被原样传给 aes.GCMDecrypt。nonce 长度不为 12 字节时,
crypto/cipher 内部直接 panic,伪造的回调请求即可打挂商户进程。
DecryptPayCipherText 等解密方法与 VerifySignByPKMap 相互独立,验签
并非必经步骤,因此该路径无需任何凭证即可触达。
go-pay/crypto v0.0.3 将 aes/des 的非法 nonce、非法密文长度、iv 过短、
非法 PKCS 填充等原本 panic 的路径改为返回 error,函数签名与既有行为
均未变更。
同时补充 wechat/v3 回归测试,锁定畸形 nonce / 密文只返回 error。
release_note.md:cmbpay 与本次修复归入未发布的 v1.5.123,此前误写入
已随 37d526d 发布的 v1.5.122 段落。1 parent fd4db2b commit 9d0149a
4 files changed
Lines changed: 32 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
| 1 | + | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
23 | 33 | | |
24 | 34 | | |
25 | 35 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
49 | 67 | | |
50 | 68 | | |
51 | 69 | | |
| |||
0 commit comments