CVE-2026-98548 in Linux情報

要約

〜によって VulDB • 2026年10月19日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

sctp: stale-cookie エラー時にパケットの残りを破棄する

アソシエーションが COOKIE-ECHOED 状態にある際に、ピアから非プライマリアドレスの一つを通じて [ERROR(Stale Cookie)][DATA] のバンドルされたパケットが送信されると、ERROR チャンクの処理は致命的ではない stale-cookie リトライパス sctp_sf_do_5_2_6_stale() を取り、SCTP_CMD_DEL_NON_PRIMARY をキューに追加しながらアソシエーションを存続させます。
sctp_cmd_del_non_primary() はプライマリ以外のトランスポートすべて(このパケットの受信元となったトランスポートを含む)を削除しますが、そのトランスポートは受信ルックアップによって参照されており、パケット内のすべてのチャンクが chunk->transport を介して共有されています。

sctp_assoc_rm_peer() は asoc->peer.last_data_from を削除されたトランスポートからリダイレクトしますが、直後にバンドルされた DATA チャンクにより sctp_assoc_bh_rcv() が asoc->peer.last_data_from = chunk->transport を無条件で再登録し、先ほど削除したトランスポートとのリダイクションを元に戻してしまいます。

パケットの処理が完了すると受信参照は解放され、トランスポートは RCU-freed されますが、存続するアソシエーションはダングリング状態の last_data_from を保持します。その後の FWD-TSN(または遅延 SACK タイマー)により sctp_gen_sack() がそれを逆参照し(->param_flags など)、sctp_make_sack()/sctp_outq_select_transport() は解放されたオブジェクトへの書き込みを行い、それをライブなトランスポートリストにリンクします。これは、特権不要で悪意のある SCTP ピア(またはそれとして振るローカルの非特権ユーザー)によってトリガー可能な use-after-free です:

BUG: KASAN: slab-use-after-free in sctp_do_sm+0x498a/0x5660 Read of size 4 at addr ffff88800e1e356c by task poc/115 Call Trace: sctp_do_sm <- sctp_assoc_bh_rcv <- sctp_inq_push <- sctp_rcv <- ip_protocol_deliver_rcu <- ip_rcv Allocated: sctp_transport_new <- sctp_assoc_add_peer <- sctp_process_init (INIT-ACK processing) Freed: kfree <- sctp_transport_destroy_rcu <- rcu_core (call_rcu queued by sctp_transport_put at end of sctp_rcv) The buggy address is located 364 bytes inside of freed 1024-byte region [ffff88800e1e3400, ffff88800e1e3800), cache kmalloc-1k

コミット 03a9d10ecf71 ("sctp: drop a chunk if its transport was removed") は、受信ルックアップとチャンク処理の間のウィンドウ(例:ソケットバックログに対して競合する ASCONF DEL-IP)のみをカバーしていることに注意してください。ここでは、トランスポートは同じパケット内の先行するチャンクによってパケット処理中に削除されるため、sctp_inq_push() でのドロップはこのパスには到達しません。バンドルされた [ERROR(Stale Cookie)][DATA] + FWD-TSN の再現コードで検証したところ、上記の KASAN レポートは該当コミット適用後も発生し続け、このパッチを適用することで解消されました。

Xin が提案した通り、このパスにおいてパケットの残りを破棄することで修正します。stale-cookie ERROR によりアソシエーションが COOKIE-WAIT に戻され、非プライマリトランスポートが削除された後、パケット内の残りのチャンクは、chunk->transport を介して削除された到着元トランスポートを参照しながら再起動されたハンドシェイクに対してのみ実行されます。上記の last_data_from 登録に加え、sctp_cmd_setup_t2() および sctp_make_*() の応答ビルダーも、そのポインタを sctp_assoc_rm_peer() がすでにサニタイズ済みのアソシエーション寿命状態にコピーしてしまいます。トランスポートが処理前に削除されたチャンクに対して sctp_inq_push() が行うのと同様に、ピアによる再送を行わせます。

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

責任者

Linux

予約する

2026年09月25日

モデレーション

承諾済み

エントリ

VDB-422066

EPSS

0.00210

アクティビティ

非常低い

ソース

Want to stay up to date on a daily basis?

Enable the mail alert feature now!