openSUSE 安全更新:dbus-1 (openSUSE-SU-2014:1228-1)

medium Nessus 插件 ID 77845

简介

远程 openSUSE 主机缺少安全更新。

描述

DBUS-1 已升级到上游版本 1.8。

这样会将 dbus 的版本从不稳定的快照 1.7.4(已知此版本含有多个回归)更新到最新稳定版本

- 1.7.4 以来的上游变更:

+ 安全补丁:

- 在 cmsg 消息的填充中不接受额外的 fd,否则可能造成 4 字节堆缓冲区溢出。(CVE-2014-3635、fdo#83622;Simon McVittie)

- 将每条消息通过的默认最大 Unix 文件描述符数量从 1024 降低为 16,防止含有默认最大连接数的 uid 耗尽 Linux 的默认 rlimit 下的系统总线的文件描述符。具有严格的 fd 限制的分销商或系统管理员可能希望进一步减少这些限制。此外,在 Linux 上,这将防止二次拒绝服务,否则可能导致 dbus-daemon 超过每个 sendmsg() 的最大 fd 数,并断开将接收这些 fd 的进程。
(CVE-2014-3636、fdo#82820;Alban Crequy)

- 在新的可配置限制 pending_fd_timeout(默认为 150 秒)之后,断开的连接仍然具有 fd 待定解组,从而防止通过对连接的文件描述符设置循环引用来创建无法断开的恶意连接。
(CVE-2014-3637、fdo#80559;Alban Crequy)

- 将每个连接的默认最大待定回复数量从 8192 降低为 128,从而降低拒绝服务攻击的算法复杂性(CVE-2014-3638、fdo#81053;Alban Crequy)

- 将系统总线上认证超时的默认值从 30 秒降低为 5 秒,从而避免因为耗尽所有未经认证的连接槽而导致拒绝服务,当所有未经认证的连接槽用尽时,制作新的连接尝试块,而不是断开连接。(CVE-2014-3639、fdo#80919;Alban Crequy)

- 在 Linux >0 2.6.37-rc4 中,如果 sendmsg() 执行 ETOOMANYREFS 失败,则静默终止该消息。这样会防止恶意客户端中的攻击通过创建 dbus-daemon 来断开与系统服务的连接(即本地拒绝服务)。(fdo#80163、CVE-2014-3532;Alban Crequy)

- 连续多个消息中包含 fd 时,跟踪剩余的 Unix 文件描述符。
这样会防止恶意客户端可使 dbus-daemon 断开与系统服务连接的另一个攻击。
(fdo#79694、fdo#80469、CVE-2014-3533;Alejandro Martínez Suárez、Simon McVittie、Alban Crequy)

- Collabora Ltd. 的 Alban Crequy 发现并修复了 dbus-daemon(D-Bus 的引用实现的一部分)中的拒绝服务缺陷。此外,在高度异常的环境中,同一缺陷可导致在不应进行通信的进程之间出现边信道。(CVE-2014-3477,fdo#78979)

+ 其他补丁和增强:

- 检查来自 systemd >= 209 的 libsystemd,如果未找到则回退到较早版本的单独的库(Umut Tezduyar Lindskog,Simon McVittie)

- 在 Linux 上,使用 prctl() 从故意引发 SIGSEGV 以测试 dbus-daemon 如何处理该情况的测试可执行文件禁用核心转储(fdo#83772,Simon McVittie)

- 通过 --enable-stats 修复编译(fdo#81043、Gentoo #507232;Alban Crequy)

- 改进在 Windows 上运行测试的文档(fdo#41252,Ralf Habacker)

- 如果 dbus-launch --exit-with-session 启动 dbus-daemon 但是随后无法连接到会话,那么按预期终止 dbus-daemon(fdo#74698,Роман
Донченко


- 在 CMake 构建系统中,为 Linux 用户跨编译 Windows D-Bus 二进制文件添加一些提示,以便能在 Wine 下运行测试(fdo#41252,Ralf Habacker)

- 为 dbus.service 添加文档密钥(fdo#77447,Cameron Norman)

- 在“dbus-uuidgen --ensure”中,尝试将 systemd 的 /etc/machine-id 复制到 /var/lib/dbus/machine-id,而不是生成全新的 ID(fdo#77941,Simon McVittie)

- 如果 dbus-launch 很快地接收到 X 错误,则不终止不相关的进程(fdo#74698,Роман
Донченко


- 在 Windows 中,允许 dbus-daemon 使用最多 8K 个连接,而不是之前的 64 个(fdo#71297;
Cristian Onet、Ralf Habacker)

- 处理回归测试中的 \r\n 换行符,因为在 Windows 上,dbus-daemon.exe 使用文本模式(fdo#75863,Руслан
Ижбулато
в)

- 增强 CMake 构建系统,以检查 GLib 并且编译/运行回归测试的子集(fdo#41252,fdo#73495;Ralf Habacker)

- 不依赖 va_copy(),使用 DBUS_VA_COPY() 封装程序(fdo#72840,Ralf Habacker)

- 在旧版的 systemd(其中 sd-journal.h 不包括 syslog.h)中修复 systemd 日志支持的编译(fdo#73455,Ralf Habacker)

- 通过包括 stdlib.h 来修复旧版 MSVC 上的编译(fdo#73455,Ralf Habacker)

- 允许在包括的配置文件中显示 <allow_anonymous/>(fdo#73475,Matt Hoosier)

- 如果测试因断言失败而崩溃,那么它们在默认情况下,不会再阻止附加调试程序。如果需要旧行为,则在环境中设置 DBUS_BLOCK_ON_ABORT。

- 要改进可调试性,可通过在环境中设置 DBUS_TEST_DAEMON_ADDRESS 来以外部 dbus-daemon 运行 dbus-daemon 和 dbus-daemon-eavesdrop 测试。会跳过需要异常配置的 dbus-daemon 的测试案例。

- 不需要没有调度任何 INTERFACE 的消息(fdo#68597,Simon McVittie)

- 记录“tcp:bind=...”和“nonce-tcp:bind=...”(fdo#72301,Chengwei Yang)

- 定义“listenable”和“connectable”地址,并且讨论它们的不同之处(fdo#61303,Simon McVittie)

- 支持在 dbus-send、dbus-monitor 中打印 Unix 文件描述符(fdo#70592,Robert Ancell)

- 给定 --disable-systemd 时不安装 systemd 单元(fdo#71818,Chengwei Yang)

- 在列出可激活的服务或活动服务时,不在内存不足时泄漏内存(fdo#71526,Radoslaw Pajak)

- 修复回归测试中的不明行为(fdo#69924,DreamNik)

- 正确转义 Unix 套接字地址(fdo#46013,Chengwei Yang)

- 在 SELinux 中,不假设 SECCLASS_DBUS、DBUS__ACQUIRE_SVC 和 DBUS__SEND_MSG 在数值上等于它们在引用策略中的值(fdo#88719,osmond sun)

- 定义 PROCESS_QUERY_LIMITED_INFORMATION(如果 MinGW < 4 标头缺少它)(fdo#71366,Matt Fischer)

- 定义 WIN32_LEAN_AND_MEAN 以避免在 winsock.h 和 winsock2.h 之间发生冲突(fdo#71405,Matt Fischer)

- 不从未设置任何错误的 _dbus_read_nonce() 返回失败,防止潜在的崩溃(fdo#72298,Chengwei Yang)

- 在 BSD 中,在 kqueue 中避免某些 O(1)-per-process 内存和 fd 泄漏,防止测试失败(fdo#69332、fdo#72213;Chengwei Yang)

- 通过不尝试在 Unix 套接字中设置 SO_REUSEADDR(至少在 Linux 和 FreeBSD 中,它无论如何不会执行任何操作),修复 Hurd 中的垃圾邮件警告(fdo#69492,Simon McVittie)

- 通过容忍来自含有 SCM_CREDS 的 sendmsg() 的 EINVAL(使用普通 send() 重试),以及更准确地查找凭据,修复 FreeBSD 和 Hurd 中对 TCP 套接字的使用(fdo#69492,Simon McVittie)

- 确保使用临时 XDG_RUNTIME_DIR 运行测试,以避免在 XDG/systemd“用户会话”中混淆(fdo#61301,Simon McVittie)

- 总线配置更改时,为现有连接刷新缓存策略规则(fdo#39463,Chengwei Yang)

- 如果启用 systemd 支持,那么现在需要 libsystemd-journal。

- 在 systemd 下激活非 systemd 服务时,使用它在日志中的总线名称对其 stdout/stderr 进行注解。已知限制:因为在执行 fork 之前打开套接字,所以仍然会记录进程,就像其具有 dbus-daemon 进程 ID 和用户 ID 一样。(fdo#68559,Chengwei Yang)

- 在 dbus-daemon(1) 中记录更多配置元素(fdo#69125,Chengwei Yang)

- 在 dbus_message_iter_get_args_valist() 解包字符串数组或 fd 并且随后遇到错误时,不泄漏字符串数组或 fd(fdo#21259,Chengwei Yang)

- 如果使用 libaudit 编译,那么保留 CAP_AUDIT_WRITE 以保证可以将禁用的方法调用写入审计日志,从而修复 1.7.6 中的回归(fdo#49062,Colin Walters)

- 匹配规则中的 path_namespace='/' 错误地不匹配任何项;现在匹配所有项。(fdo#70799,Simon McVittie)

- Linux 中不再支持通过 dnotify 进行目录更改通知,从 2010 年起已无法对其进行成功编译。如果没有 inotify (Linux) 或 kqueue (*BSD),那么需要在更改其配置时将 SIGHUP 发送到 dbus-daemon。(fdo#33001,Chengwei Yang)

- 不再支持使用 --disable-userdb-cache 进行编译,它至少从 2008 年起就无法使用,而且即使使用也会导致 dbus-daemon 的运行速度变得非常慢。
(fdo#15589、fdo#17133、fdo#66947;Chengwei Yang)

- DBUS_DISABLE_ASSERTS CMake 选项实际上未禁用大多数断言。它已重命名为 DBUS_DISABLE_ASSERT,以便与 Autotools 构建系统保持一致。(fdo#66142,Chengwei Yang)

- 只有在 valgrind 标头可用时,--with-valgrind=auto 才会启用 Valgrind 检测。默认值仍然是

--with-valgrind=no。(fdo#56925,Simon McVittie)

- 不再支持不含任何 64 位整数类型的平台。(fdo#65429,Simon McVittie)

- 现在需要 GNU make(要记录)。(fdo#48277,Simon McVittie)

- 尽管在缺少 dbus-glib 时测试不会使用共享库(仅为静态副本),完整测试覆盖不再需要 dbus-glib。
(fdo#68852,Simon McVittie)

- D-Bus 规范 0.22

- 记录 GetAdtAuditSessionData() 和 GetConnectionSELinuxSecurityContext()(fdo#54445,Simon)

- 修复示例 .service 文件(fdo#66481,Chengwei Yang)

- 不声称 D-Bus 是“低延迟”(低于什么值?),仅实际陈述它支持异步使用(fdo#65141,Justin Lee)

- 记录 .service 文件的内容,而且实际限制系统服务的文件名(fdo#66608;Simon McVittie、Chengwei Yang)

- 默认情况下在所有平台上是线程安全的,即使还没有调用 dbus_threads_init_default()。对于与旧版 libdbus 的兼容性,库用户应该继续调用 dbus_threads_init_default():这么做没有坏处。(fdo#54972,Simon McVittie)

- 添加 GetConnectionCredentials() 方法(fdo#54445,Simon)

- 新的 API:dbus_setenv(),关于 setenv() 的简单封装程序。请注意,这不是线程安全的。(fdo#39196,Simon)

- 添加 dbus-send --peer=ADDRESS(连接到给定的对等连接,例如之前版本中的 --address=ADDRESS)和 dbus-send --bus=ADDRESS(连接到给定总线,例如 dbus-monitor

--address=ADDRESS)。dbus-send --address 仍然存在以保证向后兼容,但是不会再记录。
(fdo#48816,Andrey Mazo)

- Windows 上重新允许“dbus-daemon --nofork”。
(fdo#68852,Simon McVittie)

- 避免信号中断 waitpid() 时无限忙循环(fdo#68945,Simon McVittie)

- 取消导出对象时清除父节点的内存(fdo#60176,Thomas Fitzsimmons)

- 让 dbus_connection_set_route_peer_messages(x, FALSE) 的行为与记录的一致。以前,它假设其第二个参数是 TRUE。(fdo#69165,Chengwei Yang)

- 正确转义包含非 ASCII 字符的地址(fdo#53499,Chengwei Yang)

- 正确记录 <servicedir> 搜索顺序(fdo#66994,Chengwei Yang)

- 不会使在 1.7.4 中回归的“dbus-send --session / x.y.z”崩溃。(fdo#65923,Chengwei Yang)

- 如果 malloc() 在 _dbus_string_init() 或类似函数中返回 NULL,并且在之后释放字符串,不释放无效指针(fdo#65959,Chengwei Yang)

- 如果 malloc() 在 dbus_set_error() 中返回 NULL,不为从不曾 va_start() 的 va_list 执行 va_end()(fdo#66300,Chengwei Yang)

- 修复由 --enable-stats 造成的构建失败(fdo#66004,Chengwei Yang)

- 修复严格对齐平台上的回归测试(fdo#67279,Colin Walters)

- 避免调用函数参数“interface”,因为某些 Windows 标头拥有该名称的命名空间污染宏(fdo#66493,Ivan Romanov)

- 分组的 Doxygen 补丁(fdo#65755,Chengwei Yang)

- 各种针对静态变量的线程安全改进(fdo#68610,Simon McVittie)

- 使“make -j check”工作(fdo#68852,Simon McVittie)

- 修复不太可能的错误路径中的空指针取消引用(fdo#69327,Sviatoslav Chagaev)

- 改进 valgrind 内存池跟踪(fdo#69326,Sviatoslav Chagaev)

- 不在 dbus-monitor 中过度分配内存(fdo#69329,Sviatoslav Chagaev)

- dbus-monitor 可再次监控低于 1.5.6 的 dbus-daemon(fdo#66107,Chengwei Yang)

- 如果 accept4() 因 EINVAL 发生故障(在采用较高版本 glibc 的较低版本 Linux 内核中就可能发生故障),则尝试 accept() 而不是进入忙循环。(fdo#69026,Chengwei Yang)

- 如果 socket() 或 socketpair() 因 EINVAL 或 EPROTOTYPE(例如在含有新的 glibc 的 Hurd 或较早版本的 Linux 上)发生故障,则尝试不使用 SOCK_CLOEXEC。(fdo#69073;Pino Toscano、Chengwei Yang)

- 修复错误代码路径中的文件描述符泄漏。
(fdo#69182,Sviatoslav Chagaev)

- dbus-run-session:清除某些不需要的环境变量(fdo#39196,Simon)

- dbus-run-session:在 FreeBSD 上编译(fdo#66197,Chengwei Yang)

- 如果没有 DISPLAY,autolaunch 测试不会失败(fdo#40352,Simon)

- 将来自 builddir 的 dbus-launch 用于测试,不是安装的副本(fdo#37849,Chengwei Yang)

- writev() 不可用时修复编译(fdo#69409,Vasiliy Balyasnyy)

- 不再支持 LOCAL_CREDS 凭据传递,并且记录使用每一个凭据传递方案的地方(fdo#60340,Simon McVittie)

- 通过不假设 GNU coreutils 功能使 autogen.sh 在 *BSD 上生效(fdo#35881、fdo#69787;Chengwei Yang)

- dbus-monitor:可移植到 NetBSD(fdo#69842,Chengwei Yang)

- dbus-launch:停止使用不可移植的 asprintf(fdo#37849,Simon)

- 改进来自 setuid 激活帮助程序的错误报告(fdo#66728,Chengwei Yang)

- 删除“dbus-daemon --help”的不可用的命令行选项(fdo#42441,Ralf Habacker)

- 添加对通过未记录的 AllocateAndGetTcpExTableFromStack 函数在 Windows XP 上查找本地 TCPv4 客户端的凭据的支持(fdo#66060,Ralf Habacker)

- 修复依存关系跟踪不充分的问题(fdo#68505,Simon McVittie)

- 不包括 wspiapi.h,修复编译器警告(fdo#68852,Simon McVittie)

- 添加 DBUS_ENABLE_ASSERT、DBUS_ENABLE_CHECKS 以减少混乱(fdo#66142,Chengwei Yang)

- 改进 verbose 模式输出(fdo#63047,Colin Walters)

- 合并 Autotools 和 CMake 版本(fdo#64875,Ralf Habacker)

- 修复各种未使用的变量、异常的版本配置等内容(fdo#65712、fdo#65990、fdo#66005、fdo#66257、fdo#69165、fdo#69410、fdo#70218;Chengwei Yang、Vasiliy Balyasnyy)

- dbus-cve-2014-3533.patch:添加针对 CVE-2014-3533 的修补程序以修复 (fdo#63127) &bull; CVE-2012-3524:不访问环境变量 (fdo#52202)(fdo#51521,Dave Reisner)&bull; 从 DBusTransport 删除错误的断言(fdo#51657,(fdo#51406,Simon McVittie)(fdo#51032,Simon McVittie)(fdo#34671,Simon McVittie)&middot; 检查 Unix 中 CMake 之下的 libpthread(fdo#47237,Simon McVittie)规范合规性(fdo#48580,David Zeuthen)使用 OpenBSD 时,非根用户安装(1)(fdo#48217,Antoine Jacoutot)(fdo#45896,Simon McVittie)(fdo#39549,Simon McVittie)创建自己的“联合一切”类型(fdo#11191,Simon 再次在 Win32 中发现(1)(fdo#33840,Simon McVittie)(fdo#46273,Alban Crequy),但是没有在 WinCE 中发现(fdo#46049,Simon(fdo#47321,Andoni Morales Alastruey)(fdo#39231、fdo#41012;Simon McVittie)

- 添加针对激活的 fdo#38005(fdo#39836,Simon McVittie)服务文件条目的回归测试(fdo#39230,Simon McVittie)(fdo#24317,#34870;Will Thompson、David Zeuthen、Simon McVittie)而且更好地记录它(fdo#31818,Will Thompson)&bull; 使总线后台程序实现多个界面(fdo#33757,&bull; 优化 _dbus_string_replace_len 以减少浪费(fdo#21261,(fdo#35114,Simon McVittie)&bull; 将 dbus_type_is_valid 作为公共 API(fdo#20496,Simon McVittie)添加到总线后台程序中的未知界面(fdo#34527,Lennart Poettering)(fdo#32245;Javier Jard&oacute;n、Simon McVittie)&bull; 正确授予 XDG_DATA_HOME 高于 XDG_DATA_DIRS 的优先级(fdo#34496,在嵌入式环境中(fdo#19997、NB#219964;Simon McVittie)&bull; 安装文档,以及 Devhelp 的索引(fdo#13495,布尔值,发送它们时(fdo#16338、NB#223152;Simon McVittie)错误至 dbus-shared.h(fdo#34527,Lennart Poettering)数据(fdo#10887,Simon McVittie).service 文件(fdo#19159,Sven Herzberg)(fdo#35750,Colin Walters)(fdo#32805,Mark Brand)可导致繁忙循环(fdo#32992、NB#200248;可能 &bull; 修复无法检测抽象套接字支持的错误 (fdo#29895)(fdo#32262,NB#180486)&bull; 改进某些错误代码路径(fdo#29981、fdo#32264、fdo#32262、fdo#33128、fdo#33277、fdo#33126、NB#180486)&bull; 在编译期间避免 /tmp 中可能的符号链接攻击 (fdo#32854) &bull;
整理死代码(fdo#25306、fdo#33128、fdo#34292、NB#180486)&bull; 改进 gcc malloc 批注 (fdo#32710) &bull; 文档改进 (fdo#11190) &bull; 避免难以正确使用的 readdir_r(fdo#8284、fdo#15922、LP#241619)&bull;
处理 session.d、system.d 中的无效文件(fdo#19186、&bull; 不分发嵌入 builddir 的生成的文件(fdo#30285,fdo#34292)(fdo#33474,LP#381063)含 lcov HTML 报告和
--enable-compiler-coverage (fdo#10887) &middot; 支持凭据传递 (fdo#32542) &middot; 选择线程安全 (fdo#33464)

解决方案

更新受影响的 dbus-1 程序包。

另见

https://bugzilla.novell.com/show_bug.cgi?id=896453

https://lists.opensuse.org/opensuse-updates/2014-09/msg00038.html

插件详情

严重性: Medium

ID: 77845

文件名: openSUSE-2014-558.nasl

版本: 1.6

类型: local

代理: unix

发布时间: 2014/9/25

最近更新时间: 2021/1/19

支持的传感器: Frictionless Assessment Agent, Frictionless Assessment AWS, Frictionless Assessment Azure, Nessus Agent, Nessus

风险信息

VPR

风险因素: Critical

分数: 9.5

CVSS v2

风险因素: Medium

基本分数: 6.9

矢量: CVSS2#AV:L/AC:M/Au:N/C:C/I:C/A:C

漏洞信息

CPE: p-cpe:/a:novell:opensuse:dbus-1, p-cpe:/a:novell:opensuse:dbus-1-debuginfo, p-cpe:/a:novell:opensuse:dbus-1-debuginfo-32bit, p-cpe:/a:novell:opensuse:dbus-1-debugsource, p-cpe:/a:novell:opensuse:dbus-1-devel, p-cpe:/a:novell:opensuse:dbus-1-devel-32bit, p-cpe:/a:novell:opensuse:dbus-1-x11, p-cpe:/a:novell:opensuse:dbus-1-x11-debuginfo, p-cpe:/a:novell:opensuse:dbus-1-x11-debugsource, p-cpe:/a:novell:opensuse:libdbus-1-3, p-cpe:/a:novell:opensuse:libdbus-1-3-32bit, p-cpe:/a:novell:opensuse:libdbus-1-3-debuginfo, p-cpe:/a:novell:opensuse:libdbus-1-3-debuginfo-32bit, cpe:/o:novell:opensuse:13.1

必需的 KB 项: Host/local_checks_enabled, Host/SuSE/release, Host/SuSE/rpm-list, Host/cpu

可利用: true

易利用性: Exploits are available

补丁发布日期: 2014/9/17

可利用的方式

Core Impact

参考资料信息

CVE: CVE-2012-3524, CVE-2014-3477, CVE-2014-3532, CVE-2014-3533, CVE-2014-3635, CVE-2014-3636, CVE-2014-3637, CVE-2014-3638, CVE-2014-3639