脆弱性
競合状態(レースコンディション)
別称: 並行性バグ
定義
システムの安全性や正しさが並行処理のタイミングや順序に依存する欠陥。攻撃者は処理を割り込ませてチェックを回避できる。
レースコンディションは、複数のスレッド・プロセス・主体が共有状態に適切な同期なしでアクセスする際に発生し、攻撃者はタイミングの隙を突いて中間状態を観察したり、操作の間で状態を改変したりできます。セキュリティ上重要な変種には TOCTOU(検査と使用の間)、金融処理の原子性違反、シグナルハンドラの再入バグなどがあります。悪用には精密なスケジューリング、スレッドプールによるカーネルへの猛攻、ファイルシステムのトリック(rename、シンボリックリンク)が必要になることが多いです。防御は適切なロック、トランザクション、原子的 compare-and-swap、ファイルディスクリプタベースの API(openat、fstatat)、冪等設計、ThreadSanitizer のようなツールでの並行性レビューです。
例
- CVE-2016-5195(Dirty COW):Linux カーネルの COW 処理における競合状態。
- access() と open() の間にファイルを差し替えられるファイルシステムのレース。
関連用語
TOCTOU 脆弱性
セキュリティ判断で参照した状態が、対応する処理を実行する前に変化してしまう、検査と使用の間のレースコンディション。
Dirty COW
Dirty COW — definition coming soon.
メモリ破壊
プログラムが意図したメモリ境界の外に書き込み、型安全性・制御フロー・データ整合性を損なうタイプの脆弱性を総称する用語。
脆弱性
システム、アプリケーション、または運用プロセスに存在する弱点で、攻撃者が機密性・完全性・可用性を侵害するために悪用できるもの。
Secure Coding
Secure Coding — definition coming soon.
権限昇格
本来付与された権限を超える権限を攻撃者が取得できる脆弱性の総称。例として一般ユーザーから管理者への昇格がある。