重要な脆弱性情報 脆弱性タイプ: rxrpc: 完了済みコールの recv-recv レース条件の修正 説明: - コールがイベント(受信データなど)を受信すると、そのコールはソケットのキューに配置され、 内のスレッドがその処理のためにウェイクアップされます。一度スレッドがキューからコールを取得すると、さらに発生したイベントによりコールが再キューイングされます。ソケットロックが解放されると( は を使用してソケットの並列アクセスを許可)、2番目のスレッドが進入し、ソケットキューからコールを再度ポップアップすることができます。 - この状況では、1番目のスレッドはコールからデータを受信し、2番目のスレッドは でブロックされます。1番目のスレッドは現在、自身が選択したコールのイベントおよび2番目のスレッドが選択したコールのイベントを処理し、コールの終了を確認する可能性があります。その場合、コールは「解放」され、それに対応するユーザーコールID(制御メッセージ内の )との関連付けが解除されます。 - 1番目のスレッドは正常に戻りますが、2番目のスレッドは を保持した状態でウェイクアップし、コールが1番目のスレッドによって解放されたと確認すると BUG を発生させます。 修正措置: - この問題は、コールのデキューのみを行い、解放された場合は無視することで修正されます。ユーザーコールIDが期限切れとなるため、ユーザー空間に通知する方法はありません。 関連コミット: - Fixes: 248f219cb8bc ("rxrpc: Rewrite the data and ack handling code") - Reported-by: Junvyyang, Tencent Zhuque Lab - Signed-off-by: David Howells - Reviewed-by: Jeffrey Altman リンク: - https://patchwork.kernel.org/patch/17074350.3767366-3-dhowells@redhat.com