OpenBSD IPv6 スタックのリモートの脆弱性

OpenBSD の IPv6 アドレス自動設定 (IPv6 ステートレス アドレス自動設定、RFC 4862) を担当するバックグラウンド プロセス slaacd で、特別に設計された IPv6 ルーター アドバタイズメント (RA、ルーター アドバタイズメント) を受信したときにバッファ オーバーフローを引き起こす脆弱性が確認されました。 。

当初、IPv6 アドレス自動設定機能はカーネル レベルで実装されていましたが、OpenBSD 6.2 以降は、別の非特権 slaacd プロセスに移動されました。 このプロセスは、RS (ルーター要請) メッセージの送信と、ルーターおよびネットワーク接続パラメーターに関する情報を含む RA (ルーター通知) 応答の解析を担当します。

slaacd は 7 月に、RDNSS (再帰 DNS サーバー) リストで XNUMX 台のサーバーが指定されている場合にクラッシュするバグを修正しました。 この見落としは、RA メッセージのフィールドを解析するときに発生する他のエラーについて slaacd コードを調査しようとした独立した研究者の注目を集めました。 分析の結果、コード内に別の問題があることが判明しました。この問題は、ドメイン名と DNS のホスト テンプレートのリストを含む DNSSSL (DNS 検索リスト) フィールドを処理するときに現れます。

DNSSSL リスト内の各名前は、null 区切り文字と、その後に続くデータのサイズを決定する間に介在する 63 バイトのタグを使用してエンコードされます。 この脆弱性は、リスト解析コード内で、サイズのあるフィールドが符号付き整数型 (「len = data[pos]」) の変数にコピーされるという事実によって引き起こされます。 したがって、最上位ビットが設定されたフィールドで値が指定されている場合、この値は条件演算子で負の数として認識され、最大許容サイズがチェックされます (「if (len > 1 || len + pos)」 + XNUMX > datalen) {") は機能せず、コピーされたデータのサイズがバッファー サイズを超えるパラメーターを使用して memcpy を呼び出すことになります。

OpenBSD IPv6 スタックのリモートの脆弱性
OpenBSD IPv6 スタックのリモートの脆弱性


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

コメントを追加します