systemd - Denial of Service Vulnerability
CVE-2016-7795 で対応されています。分析時に systemd のこれより前のバージョンに影響する同様の問題が発見され、 CVE-2016-7796 で対応されました。これらの脆弱性によるセキュリティー上の影響度は 中程度の影響 と評価されています。
この脆弱性は背景情報
Red Hat Enterprise Linux 7 上の systemd は、通知ソケット経由で受信した長さゼロのメッセージを正しく処理できません。このメッセージを受信すると、systemd は pause システムコールでハングアップし、システムサービスの起動および停止、またはシステム自体の完全なシャットダウンまたは再起動ができなくなります。また、ログインコマンド (ssh や su など) が 30 秒以上ハングアップし、systemd で管理される inetd 形式のサービスは接続を受け入れなくなり、systemd を親プロセスとするゾンビプロセスはクリーンアップされません。
この問題は root 権限のないローカルユーザーによって引き起こされる可能性があります。
Red Hat セキュリティーレスポンスチームは、この脆弱性によるセキュリティー上の影響度を 中程度の影響 と評価しています。
影響を受ける製品
Red Hat 製品の次のバージョンに影響します。
- Red Hat Enterprise Linux 7.2/7.3 (CVE-2016-7795)
- Red Hat Enterprise Linux 7.0/7.1 (CVE-2016-7796)
根本的な原因
systemd はすべてのローカルユーザーから通知メッセージを受け入れます。通知メッセージの長さがゼロの場合は systemd がハングアップします。Red Hat Enterprise Linux 7.2 上で、 manager_invoke_notify_message() 関数のアサーションが失敗すると、実行が中断されます。Red Hat Enterprise Linux 7.1 以前では、 manager_dispatch_notify_fd() 関数がエラーを返すと、systemd がメインループから外されます。いずれの場合も、systemd は pause() システムコールでその実行をフリーズします。
診断手順
Red Hat Enterprise Linux 7.2 で次のコマンドを実行すると、
systemd
は systemctl コマンドに応答しなくなります。
NOTIFY_SOCKET=/run/systemd/notify systemd-notify ""
ログには次のようなメッセージが記録されます。
Sep 28 16:34:29 rhel7 systemd: Cannot find unit for notify message of PID 12345.
Sep 28 16:34:29 rhel7 systemd: Assertion 'n > 0' failed at src/core/manager.c:1619, function manager_invoke_notify_message(). Aborting.
Sep 28 16:34:29 rhel7 systemd: Caught <ABRT>, dumped core as pid 3988.
Sep 28 16:34:29 rhel7 systemd: Freezing execution.
Red Hat Enterprise Linux 7.0 および 7.1 では、次のメッセージのみがログに記録されます。
Sep 30 11:48:56 rhel7 systemd: Failed to run mainloop: Input/output error
影響を受ける製品の更新
製品 | パッケージ | CVE | アドバイザリー/更新 |
---|---|---|---|
Red Hat Enterprise Linux 7 | systemd | CVE-2016-7795 | RHSA-2016:2610 |
Red Hat Enterprise Linux 7 | systemd | CVE-2016-7796 | RHBA-2015:2092 |
Red Hat Enterprise Linux 7.2 EUS | systemd | CVE-2016-7795 | RHSA-2016:2694 |
Red Hat Enterprise Linux 7.1 EUS | systemd | CVE-2016-7796 | RHSA-2017-0003 |
Comments