Linux カーネルの TIPC プロトコルの実装におけるリモートの脆弱性

Linux カーネルで提供される TIPC (透過的プロセス間通信) ネットワーク プロトコルの実装に重大な脆弱性 (CVE-2021-43267) が確認されました。これにより、特別に設計されたネットワークパケット。 この問題の危険性は、攻撃にはシステム内の TIPC サポートの明示的な有効化 (tipc.ko カーネル モジュールのロードと構成) が必要であるという事実によって軽減されますが、特殊化されていない Linux ディストリビューションではデフォルトで有効化されません。

TIPC プロトコルは Linux カーネル 3.19 からサポートされていますが、脆弱性の原因となるコードはカーネル 5.10 に含まれていました。 この脆弱性はカーネル 5.15.0、5.10.77、および 5.14.16 で修正されています。 この問題は、Debian 11、Ubuntu 21.04/21.10、SUSE (まだリリースされていない SLE15-SP4 ブランチ)、RHEL (脆弱な修正がバックポートされたかどうかはまだ詳細が不明)、および Fedora で発生し、まだ修正されていません。 Arch Linux 用のカーネル アップデートはすでにリリースされています。 Debian 5.10 や Ubuntu 10 など、20.04 より古いカーネルを使用するディストリビューションは、この問題の影響を受けません。

TIPC プロトコルは元々エリクソンによって開発され、クラスター内のプロセス間通信を組織化するように設計されており、主にクラスター ノードでアクティブ化されます。 TIPC は、イーサネットまたは UDP (ネットワーク ポート 6118) 上で動作できます。 イーサネット経由で動作している場合はローカル ネットワークから攻撃が実行される可能性があり、UDP を使用している場合は、ポートがファイアウォールでカバーされていない場合はグローバル ネットワークから攻撃が実行される可能性があります。 この攻撃は、ホストの権限のないローカル ユーザーによって実行される可能性もあります。 TIPC をアクティブにするには、tipc.ko カーネル モジュールをダウンロードし、netlink またはtipc ユーティリティを使用してネットワーク インターフェイスへのバインドを構成する必要があります。

この脆弱性は、tipc_crypto_key_rc 関数に現れ、他のノードから暗号化キーを取得するために使用される MSG_CRYPTO タイプのパケットを解析する際に、ヘッダーで指定されたデータとデータの実際のサイズとの間の対応関係が適切に検証されていないことが原因で発生します。これらのノードから送信されたメッセージを後で復号化する目的でクラスター内に保存されます。 メモリにコピーされるデータのサイズは、メッセージ サイズとヘッダー サイズのフィールドの値の差として計算されますが、暗号化アルゴリズムの名前とヘッダーの内容の実際のサイズは考慮されません。メッセージで送信されるキー。 アルゴリズム名のサイズは固定されており、そのサイズを含む別の属性がキーに追加で渡されると想定されており、攻撃者はこの属性に実際のものとは異なる値を指定することができ、これにより、割り当てられたバッファを超えたメッセージの末尾。 structtipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* バイト単位 */ char key[]; };

Linux カーネルの TIPC プロトコルの実装におけるリモートの脆弱性


出所: オープンネット.ru

コメントを追加します