このWebページのスクリーンショットから、以下の脆弱性に関する重要な情報を取得できます。 1. 脆弱性の概要: - 問題点:vmapスタックのオーバーフローを検出する際、RISC-Vアーキテクチャではまず「シャドウスタック」と呼ばれる領域に切り替え、そのシャドウスタックを使用して を呼び出し、オーバーフロー用スタックを取得します。しかし、複数のHART(ハードウェアスレッド)が同じシャドウスタックを同時に使用すると、競合状態が発生します。 - 解決策: というアトミック変数を導入し、この変数に対して自身のアドレスと0の間の原子 swap を行います。この変数がセットされている間はシャドウスタックが使用中であることを、クリアされている間は未使用であることを示します。 2. 修正コード: - 対象ファイル: 、 、 - 変更内容: - において、 マクロを追加しました。 - において、 変数の定義と使用を追加しました。 - において、 変数の定義と使用を追加しました。 3. 修正の詳細: - において、 変数の定義と使用を追加しました。 - において、 変数の定義と使用を追加しました。 4. 修正プロセス: - vmapスタックのオーバーフローが検出されると、まずシャドウスタックに切り替えます。 - 複数のHARTが同じシャドウスタックを同時に使用しないよう、 変数によってシャドウスタックを保護します。 - がセットされている間はシャドウスタックが使用中であることを、クリアされている間は未使用であることを示します。 5. 修正の影響: - 31da94c25aea commit ("riscv: add VMAP_STACK overflow detection") によって導入された問題を修正しました。 - 31da94c25aea commit ("riscv: add VMAP_STACK overflow detection") によって導入された問題を修正しました。 6. 修正著者: - Jisheng Zhang () - Guo Ren () - Palmer Dabbelt () - Sasha Levin () 7. 修正ステータス: - RISC-Vカーネルに実装され、gitリポジトリにコミット済みです。 これらの情報から、この脆弱性の修正プロセスや詳細、ならびに修正後のコードの変更内容を理解できます。