エグゼクティブサマリー
CVE-2026-31979 は Himmelblau(Linux システムと Microsoft Entra ID や Microsoft Intune を統合するオープンソースの相互運用性スイート)で発生する深刻度の高いローカル権限昇格の脆弱性(CVSS 8.8)です。
この脆弱性が悪用されると、権限のないローカルユーザーに完全な root 権限が付与されます。これにより、すでに自社の環境内に侵入している攻撃者は、ローカルのセキュリティ制御を回避し、機微な情報(/etc/shadow など)にアクセスして、ホスト上で永続的なアクセスを確立できるようになります。
この脆弱性は、シンボリックリンクに関する競合状態に起因するものです。システムが /tmp の共有ディレクトリでファイル操作を誤って処理することで、攻撃者は高権限のプロセスをだまし、システムの重要なファイルを変更させられるようになります。
特に Linux デスクトップを運用している組織や、Intune ポリシーの適用と Azure の ID 管理に Himmelblau を利用しているハイブリッドクラウド環境が高いリスクにさらされています。
脆弱性の詳細
Himmelblau は、Linux エコシステムと Microsoft Entra ID や Microsoft Intune の間のギャップを埋めるために企業が使用する重要な相互運用スイートです。これにより、シングルサインオン(SSO)やデバイスのコンプライアンスなど、Windows デバイスで広く用いられているアイデンティティ管理やポリシー制御の手法を利用して Linux デバイスを管理できるようになります。
バージョン 3.1.0 および 2.3.8 より前のバージョンでは、himmelblaud-tasks デーモンに設計上の深刻な欠陥が見つかっていました。このデーモンはシステム全体の認証トークンを管理する際に root 権限で実行される必要があるため、ファイル処理のロジックに弱点があると重大なリスクを招くことになります。
この脆弱性(CVE-2026-31979)は、/tmp の共有ディレクトリに Kerberos の認証キャッシュファイルを書き込む際に、デーモンがシンボリックリンクの保護を行っていなかったことが原因で発生します。不適切なファイル操作があり、さらには systemd による名前空間の分離がない状態では、ローカルの攻撃者がデーモンの処理を誘導し、重要なシステムファイルの所有権を奪うことで、実質的に標準ユーザーから root への権限昇格を実現してしまいます。
影響を受ける製品
この脆弱性があるコンポーネントは、エンタープライズ環境で広く導入されています。影響を受けるバージョンの網羅的かつ信頼性の高いリストについては、ベンダーの公式アドバイザリをご参照ください。
CWE の分類
CWE-269:不適切な権限管理
CWE-862:認証の欠如
MITRE ATT&CK との対応関係
手法 |
名前 |
戦術 |
|---|---|---|
T1068 |
権限昇格を目的とするエクスプロイト |
権限昇格 |
T1548 |
権限昇格の制御メカニズムの悪用 |
権限昇格 |
この脆弱性はチェック時と使用時の不整合(TOCTOU)に起因するものです。himmelblaud-tasks デーモンは(PrivateTmp が削除されていることで)実行用の安全な名前空間がないため、権限のないユーザーと同じ /tmp 領域で動作します。
また、このデーモンはファイル記述子に基づく操作ではなくパスに基づく操作に依存しており、攻撃者はこれを悪用することで、デーモンが所有権の変更を適用する前に正当なディレクトリをシンボリックリンクに置き換えるという「レース(競合)」に勝てるようになります。
エクスプロイトを再現する 3 つの手順
この脆弱性を悪用しようとする攻撃者は、脆弱なバージョンの himmelblaud-tasks を実行しているシステムに対し、権限のないユーザーとしてのローカルアクセス権を持っている必要があります。自動登録や高頻度の再認証が行われている環境では、このエクスプロイトが成功しやすくなります。
ステップ 1:シンボリックリンクのトラップを作成する
権限のないユーザー(UID 1000 など)として、権限が必要なシステムディレクトリをターゲットとするシンボリックリンクを /tmp に作成します。たとえば、以下のとおりです。
ln -s /etc /tmp/krb5cc_$(id -u)
ステップ 2:root 権限のデーモンを起動させる
PAM ログインや aad-tool の使用など、Kerberos の認証フローを開始する操作を実行します。
aad-tool auth login
ステップ 3:乗っ取られた所有権を確認する
攻撃者が指定したパスに対し、デーモンが create_ccache_dir を呼び出します。この処理はリンクを考慮しないため、シンボリックリンクに従い、/etc に対して chown を実行します。
ls -ld /etc
# Output will show /etc is now owned by the unprivileged user.
パッチ分析
CVE-2026-31979 に対する修正は、パスに基づく高レベルの操作からファイル記述子に基づく低レベルの安全な操作への移行により競合状態に対処するパッチです。
O_NOFOLLOW の実装:本パッチでは、open() のシステムコールで O_NOFOLLOW のフラグを指定するよう write_bytes_to_file が更新されます。これにより、対象のパスがシンボリックリンクの場合、カーネルはそのパスのオープンを拒否し、ELOOP エラーを返すようになります。
lchown への切り替え:本来このデーモンはシンボリックリンクを解決する chown に依存していました。本パッチでは、これを lchown に置き換えることで、所有権の変更が重要なリンク先に適用されず、リンク自体にのみ適用されるようにします。
安全なディレクトリ作成:本パッチでは、O_EXCL ロジックが導入されています。そのため、デーモンは新しいディレクトリをアトミックに作成するようになり、そのパスに既存のファイルやシンボリックリンクが存在する場合は処理が失敗するようになります。
脆弱なアプリケーションの検知
Sigma ルール(Linux auditd)
title: Detect Himmelblau Symlink Attack
id: 0d3d2cf5-194a-efe7-03a8-ac164aaf975b
status: experimental
description: Detects the himmelblaud-tasks daemon following a symlink to sensitive directories.
logsource:
product: linux
service: auditd
detection:
selection:
type: SYSCALL
syscall: chown
exe: /usr/sbin/himmelblaud-tasks
filter:
path: '/tmp/krb5cc_*'
condition: selection
tags:
- attack.privilege_escalation
- attack.t1068
level: high
Osquery:CVE-2026-31979 — SUID/SGID バイナリ
SELECT
f.path,
f.uid AS owner_uid,
u.username
FROM file f
JOIN users u ON f.uid = u.uid
WHERE f.path LIKE '/tmp/krb5cc_%';
Akamai のお客様は、Akamai Guardicore Segmentation の Insight 機能のクエリーを活用することで、自社環境内の脆弱な資産や悪用の兆候を特定できます。
緩和策
バージョン 3.1.0 へのパッチ適用がすぐにできない場合は、himmelblaud-tasks サービスのオーバーライドを作成し、PrivateTmp=true を追加して、systemd のサンドボックス機能を再度手動で有効にします。これにより、デーモンの /tmp をユーザーの /tmp から分離し、シンボリックリンクの攻撃ベクトルを効果的に阻止できます。
まとめ
CVE-2026-31979 は、権限のないローカルユーザーと高権限のシステムデーモンの間にある信頼境界の崩壊という重大な脆弱性です。Himmelblau スイートにおける TOCTOU の競合状態を悪用することで、攻撃者は /tmp の共有ディレクトリを攻撃手段として利用し、root 権限でのファイル操作を乗っ取れるようになります。
Himmelblau が Linux と Azure の統合における主なアイデンティティ基盤として機能する以上、この脆弱性はローカルで root 権限を取得するだけにとどまらず、ホストと Microsoft Entra ID の関係の整合性を侵害します。
この脆弱性は、単にローカルの不具合と見なすのではなく、クラウドと統合したインフラへのラテラルムーブメント(横方向の移動)を招き得るリスクとして認識する必要があります。
今後の情報提供
タグ