2026/9/19 15:58:23

Barrier 2.4.0 / 2.3.4 发布说明深度解读:客户端身份验证、SHA256 指纹与加密命令行选项

Barrier 2.4.0 / 2.3.4 发布说明深度解读:客户端身份验证、SHA256 指纹与加密命令行选项 Barrier 2.4.0 / 2.3.4 发布说明深度解读客户端身份验证、SHA256 指纹与加密命令行选项【免费下载链接】barrierOpen-source KVM software项目地址: https://gitcode.com/gh_mirrors/ba/barrier本文围绕 Barrier 开源 KVM键盘鼠标共享软件的2.4.0与2.3.4两个版本的官方发布说明见 doc/release_notes/index.md展开重点剖析涉及 CVE 修复的客户端身份验证机制、SSL 指纹由 SHA1 升级为 SHA256 的安全变更以及--disable-crypto、--drop-target、--profile-dir等新增命令行选项。读完本文你将理解这些版本修复的漏洞成因、安全特性的启用前提以及如何用新参数更安全地配置 Barrier 服务端与客户端。版本背景Barrier 2.4.0发布于2021-11-01以安全加固为核心的大版本引入客户端身份验证并切换指纹算法同时修复多个平台缺陷、新增若干命令行选项。Barrier 2.3.4发布于2021-11-01安全修复补丁版本集中封堵应用层握手与消息长度校验方面的三个 CVE。两版的发布说明正文位于 doc/release_notes/index.md由 towncrier 根据各 newsfragment见 doc/newsfragments/README.md自动聚合生成渲染模板为 doc/release_notes/index.template.jinja。Barrier 2.4.0 的安全修复客户端身份验证CVE-2021-42072 / CVE-2021-42073发布说明指出在 2.4.0 之前恶意客户端无需任何认证即可连接 Barrier 服务端并发送应用层消息使 Barrier 的攻击面显著扩大更严重的是如果恶意客户端通过暴力枚举或其他手段获得了一个合法屏幕名称screen name它还能篡改服务端的剪贴板内容。2.4.0 为此引入了客户端身份验证client identity verification。需要注意两个关键前提默认关闭兼容旧版本为了支持从旧版 Barrier 无缝升级该特性默认不启用启用后拒绝旧客户端一旦在设置对话框中开启旧版 Barrier 客户端将被拒绝连接。这与服务端参数解析逻辑相互印证在 src/lib/barrier/ArgParser.cpp 中服务端提供了--disable-client-cert-checking命令行选项来显式关闭客户端证书校验默认是开启校验的说明该版本的客户端证书检查能力既可在图形界面配置也可在命令行层面控制。SSL 指纹升级为 SHA2562.4.0 起Barrier 使用SHA256 指纹来建立加密 SSL 连接的可信关系。升级客户端后需要重新批准现有服务端指纹同时客户端和服务端会同时展示 SHA1 与 SHA256 两种服务端指纹以便与旧版本 Barrier 互操作。源码层面可以印证指纹算法的双轨实现src/lib/net/FingerprintData.h 定义了FingerprintType::SHA1标注为 deprecated与FingerprintType::SHA256两种枚举src/lib/net/FingerprintData.cpp 提供了两种类型与字符串sha1、sha256的相互转换src/lib/net/FingerprintDatabase.cpp 中指纹数据库记录以v2:algorithm:hex格式落盘如v2:sha256:...从而在同一数据库中兼容两类指纹。在图形界面侧src/gui/src/FingerprintAcceptDialog.cpp 与 src/gui/src/FingerprintAcceptDialog.ui 实现了连接时对服务端指纹的人工确认对话框首次连接新服务端时用户应比对两端显示的 SHA256 指纹是否一致确认后再批准。随机艺术图randomart辅助指纹比对为了便于人眼比对 SSL 证书指纹2.4.0 新增了randomart 图片展示功能其算法与 OpenSSH 使用的随机艺术图算法一致。相比逐字符核对十六进制指纹randomart 将指纹映射为网格状图案人类更容易察觉细微差异从而降低中间人攻击被忽略的概率。安全问题的发现者上述安全问题均由 Matthias Gerstner 报告并在修复过程中提供了协助。作为使用方应在升级到 2.4.0 后及时启用客户端身份验证并核对新指纹而不是继续依赖默认关闭的兼容配置。Barrier 2.4.0 的 Bug 修复跨平台构建与路径处理修复了mips*el 与 riscv64 架构上的构建失败拓展了 Barrier 可编译运行的硬件平台范围。修复了Windows 上配置读取失败的问题此前当路径包含非 ASCII 字符如中文、日文目录名时无法正确读取配置对应上游 issue 976、974、444。结合 src/lib/barrier/ArgParser.cpp 可以看到新版本的路径类参数如--profile-dir统一通过barrier::fs::u8path()将 UTF-8 字符串转换为文件系统路径对象这正是处理非 ASCII 路径的关键实现。Barrier 不再调用openssl 命令行工具而是直接链接并使用 openssl 库消除了对外部可执行程序的运行时依赖。剪贴板与键盘输入更多X11 剪贴板 MIME 类型被映射到对应的转换器对应 issue 344改善了 Linux 下剪贴板内容的兼容性。修复了热键关联多个动作时的设置问题issue 778 相关以及含逗号、分号等特殊字符的热键无法设置的问题。修复了特定场景下Windows 服务端传输非 ASCII 字符失败的问题issue 527。新增对Sun Microsystems USB 键盘上额外按键的支持issue 784。证书与界面细节当服务端证书无效时Barrier 将自动重新生成证书而不是启动失败issue 802。修复了Windows 上 Barrier 服务路径设置不正确的问题。主题图标现在优先于 Barrier 自带的图标被使用issue 471。更新了中文与斯洛伐克语翻译。Barrier 2.4.0 的新特性与命令行选项本版本新增了若干命令行选项其解析逻辑集中在 src/lib/barrier/ArgParser.cpp 的parseGenericArgs()中默认值定义见 src/lib/barrier/ArgsBase.cpp。以下是完整对照表选项作用默认值源码位置--enable-crypto启用 SSL 加密自 2.4.0 起为默认行为选项本身已标记为 deprecated开启ArgParser.cpp--disable-crypto显式关闭加密关闭ArgParser.cpp--drop-target以便携模式portable运行时指定拖放目标目录空字符串ArgsBase.cpp--profile-dir指定自定义配置目录空ArgParser.cpp加密默认开启--enable-crypto成为默认发布说明强调将--enable-crypto设为默认值是为了降低从命令行配置 Barrier 时意外发生安全问题的概率并新增--disable-crypto用于显式关闭加密。在源码中ArgsBase的构造函数已将m_enableCrypto初始化为true见 src/lib/barrier/ArgsBase.cpp因此命令行不传任何加密参数时默认走 TLS而解析到--enable-crypto时仅打印一条该选项已为默认、已废弃的提示不再改变状态只有--disable-crypto会真正把开关置为false。典型用法示例服务端保留默认加密barriers --enable-crypto --address 0.0.0.0:24800若在封闭内网中确需关闭加密以兼容极旧客户端可显式指定barriers --disable-crypto --address 0.0.0.0:24800注意关闭加密会使剪贴板与键鼠数据明文传输仅在可信网络中才建议这样做。便携模式拖放--drop-target新增的--drop-target选项改进了 Barrier 以便携应用portable app方式运行时在 Windows 上的拖放支持。它对应ArgsBase::m_dropTarget字段见 src/lib/barrier/ArgsBase.cpp拖放实现相关代码见 src/lib/platform/MSWindowsScreen.cpp 与 src/lib/barrier/DropHelper.cpp。需要配合--enable-drag-drop使用该选项在 Linux 上会被忽略并打印提示在 Windows Vista 以下版本也会被忽略见 ArgParser.cpp。barriers --enable-drag-drop --drop-target C:\BarrierDrop自定义配置目录--profile-dir--profile-dir允许用户将 Barrier 的配置、指纹数据库等数据放到自定义目录例如放在可移动介质中实现真正的便携化参数经由barrier::fs::u8path()转换后存入m_profileDirectory见 ArgParser.cpp对非 ASCII 路径有良好的兼容性。其他可用性改进实现了Server GUI 自动启动的配置选项允许在图形界面中控制服务端随会话自动运行。屏幕布局编辑现在可以仅用键盘完成无需鼠标即可调整各屏幕的位置关系。新增对键盘背光媒体键的支持以及Eisu_toggle英数键与 Muhenkan无变换键按键的支持。Barrier 2.3.4 的安全修复2.3.4 针对应用层协议与 SSL 实现封堵了三个安全漏洞同样由 Matthias Gerstner 报告应用层握手失败时未正确关闭连接CVE-2021-42075此前反复失败的连接会泄漏文件描述符最终导致 Barrier 无法接收新客户端的连接。该修复保证了握手失败路径上的资源被及时回收。输入消息缺少最大长度限制CVE-2021-42076恶意客户端或服务端可以发送超长消息通过资源耗尽造成拒绝服务DoS。该修复为应用层消息强制设置了最大长度。断开 TCP 连接时崩溃CVE-2021-42074在刚发送 Hello 消息之后立即断开 TCP 会话会触发崩溃使未经认证的攻击者仅凭网络访问权限即可让 Barrier 崩溃。该修复消除了这一崩溃路径。此外2.3.4 还修复了SSL 实现中的一个 Bug高负载下偶尔会向客户端发送无效数据。对运维者而言2.3.4 的教训在于Barrier 的监听端口默认 24800不应暴露到不可信网络而应通过防火墙限制在可信主机范围内再配合 2.4.0 的身份验证与指纹机制共同使用。升级建议与验证路径综合两个版本的发布说明升级到 2.4.0 及以上版本时建议按以下顺序操作先升级服务端与所有客户端到 2.4.0保证双方都具备身份验证能力升级后首次连接时重新核对并批准服务端的新 SHA256 指纹客户端与服务端会同时显示 SHA1 与 SHA256 两套指纹以便过渡在设置对话框中启用客户端身份验证确认旧客户端已全部升级后再开启避免旧版客户端被拒连确认服务端证书有效若证书失效2.4.0 会自动重新生成而不是拒绝启动issue 802 的修复如需命令行配置利用--enable-crypto默认、必要时--disable-crypto、--drop-target、--profile-dir等新参数并参考 doc/barrier.conf.example 与 doc/barrier.conf.example-advanced 中服务端配置文件的写法。相关实现与配置的源码位置速查发布说明原文doc/release_notes/index.md参数默认值src/lib/barrier/ArgsBase.cpp参数解析实现src/lib/barrier/ArgParser.cpp指纹类型定义src/lib/net/FingerprintData.h指纹数据库格式src/lib/net/FingerprintDatabase.cpp指纹确认对话框src/gui/src/FingerprintAcceptDialog.cpp服务端配置示例doc/barrier.conf.example以上安全与功能变更使 2.4.0 成为 Barrier 在默认加密 双向信任方向上迈出的关键一步加密连接默认开启、指纹升级为 SHA256、客户端身份可验证从而显著收窄了此前无认证即连的攻击面。【免费下载链接】barrierOpen-source KVM software项目地址: https://gitcode.com/gh_mirrors/ba/barrier创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考