このウェブページスクリーンショットから、脆弱性に関する以下の重要な情報を取得できます: 1. 脆弱性情報: - 并发して システムコールを実行する際、同一のファイル記述子を使用すると、短期間に競合条件が発生し、メモリリークを引き起こす可能性があります。 2. 脆弱性のプロセス: - 1) プログラムがファイル記述子を開き、2つのスレッドを開始します(例:pthreads ライブラリを使用)。 - 2) スレッドAが を呼び出すと、ファイルの読み取りロックを取得し、 関数内でファイルの ポインターを取得します。 - 3) スレッドBも を呼び出すと、ファイルの共有ロックを取得し、 関数内でファイルの ポインターを取得します。 - 4) スレッドAとスレッドBの両方が空の ポインターを認識したため、それぞれが 構造体を割り当て、ファイル構造体に割り当てます。 - 5) この過程で、スレッドAによって割り当てられた 構造体がリークします。 3. 修正方法: - の割り当てとチェックを保護し、ファイルの spinlock 保持状態を保つとともに、 を割り当てるタスクを追跡し、 が現在のタスクに対してのみ割り当てられるようにします。 - これにより、将来の使用における問題を防ぐことができます。 構造体のキャッシュ状態により、使用後の解放問題が発生する可能性があるためです。 4. パッチ内容: - 、 、および 内のコードを修正し、 の割り当てとチェックを保護しました。 - 関数内で が かをチェックし、 でない場合は新しい 構造体を割り当て、現在のタスクに割り当てます。 5. パッチ適用: - このパッチは の問題を修正します。 - このパッチは Filipe Manana と David Sterba によってレビューされ、承認されています。 これらの情報により、脆弱性の原理、修正方法、パッチの実装に関する具体的な内容が理解できます。