🔴 【深度分析】严重安全漏洞:CVE-2026-45695

CVSS 评分: 严重(9.8)🔴  状态: Deferred  发布时间: 2026-07-16


🔍 技术细节速览

字段 值
CVE ID CVE-2026-45695
CVSS 评分 9.8 🔴
严重程度 严重
CVSS 向量 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE 分类 CWE-78,CWE-306
发布时间 2026-07-16
最后更新 2026-07-16
状态 Deferred
数据来源 security-advisories@github.com

好的,作为一名资深网络安全分析师,我将根据您提供的 NVD 数据,为您生成关于 CVE-2026-45695 的深度分析文章。


CVE-2026-45695: Kopia HTTP Server 未授权命令注入漏洞深度分析

CVSS 评分:9.8 (严重)
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
危害等级: 严重 (CRITICAL)


漏洞概述

CVE-2026-45695 是一个影响 Kopia(一款跨平台备份工具)的严重安全漏洞。该漏洞允许远程未授权攻击者在 Kopia 服务器上执行任意命令,从而实现完全控制服务器。其根本原因在于 Kopia 的 HTTP 服务器接口在未设置密码的情况下,缺少对 /api/v1/repo/exists 端点请求的身份认证(CWE-306),并且未能有效过滤用户提供的 SFTP 存储配置参数,导致可以通过 -oProxyCommand 选项注入恶意系统命令(CWE-78)。

该漏洞影响 Kopia 0.23.0 之前的所有版本,官方已在 0.23.0 版本中修复。

受影响组件与版本

  • 受影响组件: Kopia HTTP Server
  • 受影响版本: 所有早于 0.23.0 的版本(prior to 0.23.0)
  • 安全版本: 0.23.0

漏洞原理分析

该漏洞是 认证缺失 和 命令注入 两个常见漏洞组合作用的结果,攻击链如下:

  1. 认证缺失(CWE-306):
    Kopia 的 HTTP 服务器在启动时可以指定 --without-password 参数。在该模式下,服务器默认不会对任何 API 请求进行身份验证。这使得攻击者可以绕过权限限制,直接访问诸如 /api/v1/repo/exists 这类敏感接口。

  2. 命令注入(CWE-78):
    /api/v1/repo/exists 端点用于检查一个远程存储库是否存在,其实现逻辑允许用户通过 HTTP 请求指定存储后端类型(如 SFTP)及其相关配置参数。其中,对于 SFTP 存储后端,Kopia 使用了 blob.NewStorage 函数来解析用户提供的配置。

    攻击者可以在 SFTP 配置中设置两个关键的、可被操纵的参数:

    • externalSSH: true:这个标志指示 Kopia 在连接时使用系统上安装的 OpenSSH 客户端 (ssh 命令),而不是其内置的 SFTP 库。
    • sshArguments:此参数用于向 OpenSSH 客户端传递额外的命令行参数。Kopia 在处理该参数时,没有进行严格的过滤或消毒,直接将其拼接到了最终要执行的 exec.CommandContext("ssh") 命令中。

    攻击向量:
    攻击者通过在 sshArguments 中包含一个恶意的 -oProxyCommand 参数,可以执行任意系统命令。-oProxyCommand 是 OpenSSH 的一个功能选项,允许用户指定一个在连接到目标主机之前执行的命令。因此,攻击者发起的请求看起来可能像这样(简化示例):

    {
      “type”: “sftp”,
      “config”: {
        “host”: “some-attacker-host.com”,
        “port”: 22,
        “username”: “attacker”,
        “password”: “”,
        “externalSSH”: true,
        “sshArguments”: “-oProxyCommand= ‘被注入的命令,如:rm -fr / || calc.exe’ ”
      }
    }
    

    当 Kopia 处理这个请求时,最终执行的命令将等效于:

    ssh -oProxyCommand='被注入的命令,如:rm -fr / || calc.exe' attendee@some-attacker-host.com -p 22
    

    这个 -oProxyCommand 中的命令会以 Kopia 进程的权限在服务器上执行。

影响评估

根据 CVSS 向量分析:

  • 攻击向量(AV:N): 攻击者无需物理接触或特定网络位置,只要能访问 Kopia HTTP 服务的网络端口即可发起攻击,暴露面非常大。
  • 攻击复杂度(AC:L): 触发漏洞的请求构造简单,不需要复杂的利用技巧,利用现有的工具或脚本即可实现。
  • 所需权限(PR:N) 和 用户交互(UI:N): 攻击者无需任何身份验证(只要服务器未设置密码),也无需受害用户的任何互动,因此可以实现完全自动化的扫描和攻击。
  • 影响范围(S:U): 虽然漏洞影响的是服务器自身,但其影响是直接的,不涉及越权访问其他租户或域(Context)。但是,一旦控制服务器,攻击者可以访问服务器上的所有数据,包括其他用户可能备份在本地存储的数据。
  • 机密性(C:H)、完整性(I:H)、可用性(A:H): 漏洞允许 RCE,这意味着攻击者对系统拥有最高控制权,可以窃取、篡改或删除所有数据,并导致服务完全瘫痪。

实际威胁评估:

  • 极高。该漏洞的利用条件简单,影响却极为严重。如果 Kopia 备份服务器以 --without-password 模式暴露在互联网上,任何攻击者都可以在无认证的情况下直接获得该服务器的完全控制权。这对于备份服务器而言是灾难性的——攻击者不仅可以删除所有备份数据,还能在备份数据中植入恶意软件,从而在下一次恢复时感染生产系统。

修复建议

1. 版本更新(最推荐)

立即将 Kopia 升级到 0.23.0 或更高版本。官方版本已修复此问题,主要更新包括:

  • 对 API 端点增加了严格的认证检查,即使使用 --without-password 参数,敏感操作也需要认证。
  • 对用户提供的 sshArguments 等配置参数进行了严格的过滤,禁止包含 -oProxyCommand 等危险选项。

2. 临时缓解措施

如果无法立即升级,请采取以下措施:

  • 强制执行密码保护: 禁止使用 --without-password 参数启动 Kopia HTTP 服务器。始终设置一个强密码,确保所有 API 请求必须通过认证。
  • 网络隔离: 立即将 Kopia HTTP 服务置于防火墙或 VPN 之后,绝不直接暴露在公开的互联网环境中。限制只有受信任的内部网络或管理端 IP 才能访问该服务。
  • 监控与告警: 在无法更新的过渡期内,加强 Kopia 服务器上的日志监控,重点关注对 /api/v1/repo/exists 端点的异常请求,特别是包含 externalSSH、sshArguments、ProxyCommand 等关键字的请求。一旦发现异常,立即阻断并调查。

参考资料