十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ClickHouse v24.3.18.7-lts 安全修复深度解析:clickhouse-library-bridge 任意库加载漏洞与库路径限制机制

ClickHouse v24.3.18.7-lts 安全修复深度解析:clickhouse-library-bridge 任意库加载漏洞与库路径限制机制 ClickHouse v24.3.18.7-lts 安全修复深度解析clickhouse-library-bridge 任意库加载漏洞与库路径限制机制【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse本篇文章聚焦 ClickHouse 官方 LTS 版本 v24.3.18.7-lts 中的一项关键安全修复clickhouse-library-bridge曾允许从文件系统打开任意共享库存在被利用执行任意代码的安全风险。文章将结合仓库源码与发布说明完整还原漏洞成因、修复思路将库加载路径限制到配置文件指定的目录、升级与加固建议帮助运维与开发人员理解该问题并正确评估自身部署的暴露面。版本与修复背景该修复记录于仓库 docs/changelogs/archive/v24.3.18.7-lts.md属于Bug Fix用户可见的官方稳定版错误行为类别。该版本基于 v24.3.17.18-lts提交 b163637e2f7发布提交标识为 807f69cd6a8属于 24.3 系列 LTS长期支持分支的维护版本。本次修复由 Alexey Milovidov 提交PR #75954漏洞由Arseniy Dugin通过 ClickHouse Bug Bounty Program漏洞赏金计划发现并报告。clickhouse-library-bridge 是什么clickhouse-library-bridge是 ClickHouse 的一个辅助进程bridge用于在独立进程中执行与外部库交互的任务。这类 bridge 设计模式在 ClickHouse 中广泛存在例如 XDBC bridge 用于连接 ODBC/JDBC 数据源其基础设施定义在 src/BridgeHelper/IBridgeHelper.h 与 src/BridgeHelper/XDBCBridgeHelper.h 中。从安装逻辑可以确认该二进制的存在与权限模型在 programs/install/Install.cpp 中安装器会检查bin_dir / clickhouse-library-bridge是否存在若存在或 ODBC bridge 存在则执行后续的属主调整将其归属到DEFAULT_CLICKHOUSE_BRIDGE_USER/DEFAULT_CLICKHOUSE_BRIDGE_GROUP默认 bridge 用户与组。这说明clickhouse-library-bridge是一个独立的、以专用低权限用户运行的组件与 clickhouse-server 主进程分离。漏洞本质任意共享库加载发布说明明确指出漏洞行为clickhouse-library-bridgeallows opening arbitrary libraries from the filesystem, which makes it safe to run only inside an isolated environment.即该 bridge 进程可以从文件系统打开dlopen 式加载任意共享库.so 文件。攻击者一旦能够控制 bridge 可访问的文件系统路径例如通过恶意词典配置或能够写入服务器可读目录就可以诱导其加载并执行任意本地库中的代码造成远程代码执行RCE级别的危害。因此该组件只有在完全隔离的环境中运行才是安全的——这是修复前版本的安全边界假设。修复方案库路径限制Path Restriction修复的核心思路是收敛可加载库的来源To prevent a vulnerability when it is run near the clickhouse-server, we will limit the paths of libraries to a location, provided in the configuration.即将允许加载的共享库路径限制为配置文件中提供的位置。修复后clickhouse-library-bridge只允许从配置指定的目录/路径加载库不再接受任意的文件系统路径。这样即使攻击者能控制请求参数也无法加载白名单之外的文件从根上堵住了任意路径加载的漏洞面。从源码结构看这一配置驱动路径限制机制与该仓库中 bridge 体系的通用架构一致——bridge 通过配置文件与控制协议与 clickhouse-server 通信其行为参数均由服务端下发参考 src/BridgeHelper/IBridgeHelper.cpp 中 bridge 端口的获取与握手流程。因此本次修复将库路径也纳入了服务端可配置、bridge 强制校验的范畴。升级后的配置要点升级到 v24.3.18.7-lts或包含该修复的更新版本后使用 library 词典Library Dictionary等依赖clickhouse-library-bridge的功能时必须在配置文件中显式指定允许加载的库文件位置否则相关功能将因路径校验失败而不可用配置中的路径应遵循最小权限原则只放置业务真正需要的共享库且目录对普通用户不可写防止攻击者向受信任目录投放恶意库若业务未使用 library 相关功能建议直接停用/不部署clickhouse-library-bridge进一步缩减攻击面。影响评估与缓解措施谁受影响使用了依赖clickhouse-library-bridge的功能如 Library 词典且运行在 v24.3.18.7-lts 之前 24.3 系列版本的部署尤其是 bridge 进程与 clickhouse-server 运行在同一主机、且文件系统边界未做隔离的部署风险最高。缓解与加固建议升级前的临时措施隔离环境运行将clickhouse-library-bridge部署在隔离容器/沙箱中限制其对宿主文件系统的访问范围最小权限账户确保 bridge 以专用低权限用户运行安装器默认会将其归属到 bridge 专用用户组见 programs/install/Install.cpp避免使用 root 或 clickhouse 主账户文件系统访问控制通过 seccomp、AppArmor/SELinux、只读挂载等方式限制 bridge 可读取的目录及时升级最终应升级到包含本次修复的 v24.3.18.7-lts 版本启用配置化的库路径限制。升级与验证将 24.3 LTS 分支升级至 v24.3.18.7-lts或后续包含该修复的版本按上文在配置中补充库路径限制配置验证 library 词典相关查询正常返回、bridge 日志中无路径校验失败记录可尝试在配置外的路径加载库确认会被拒绝以验证修复生效。小结v24.3.18.7-lts 的这次修复体现了 ClickHouse 对 bridge 类组件安全边界的收紧从仅依赖隔离环境转向配置化的路径白名单。对于所有生产部署而言这既是必须跟进的安全补丁也是一次值得借鉴的默认安全secure by default实践——外部代码加载路径应当始终由显式配置控制而非信任进程运行环境本身。【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表