【かたこんごう】
型混同(Type Confusion) とは?
最終更新:
💡 型を取り違えると、同じデータの意味が変わる
ある型の値やオブジェクトを、適合しない別の型として扱ってしまう不具合。処理の誤りを招き、メモリ操作を伴う実装では不正な読み書きなどにつながることがある。
📌 このページのポイント
型混同って何?
データを、その値に適合しない別の型として扱ってしまう不具合だよ。型はデータの意味や操作方法に関わるので、取り違えると計算や判定を誤る。メモリ操作を伴う実装では、不正な読み書きの原因にもなるんだ。
具体例はある?
同じメモリ領域を複数の型で使う仕組みで、整数として保存した値を、誤ってポインタとして読む例があるよ。数として使うはずの値を、メモリの場所として扱ってしまう。実際にどんな操作が可能になるかは、実装や攻撃者が制御できる範囲によるんだ。
ブラウザだけの問題?
すぐにパソコン全体を乗っ取られるの?
必ずではないよ。条件によって不正なメモリ操作やコード実行につながる可能性はあるけれど、その範囲は実装や防御によって変わる。サンドボックスは被害を封じ込めるための仕組みで、型混同だけで必ずその境界を越えられるわけではないんだ。
どう防ぐの?
開発では、値が想定する型であるか、型を変えて扱う根拠が正しいかを確認する設計が必要だね。メモリの安全性と、JITが生成するコードや処理の正しさも分けて考えよう。利用者は、修正が提供されたソフトウェアを更新することが対策になるよ。
まとめ:ざっくりこれだけ覚えればOK!
「型混同」って出てきたら「データを適合しない別の型として扱ってしまう不具合」と思えればだいたいOK!
📖 おまけ:英語の意味
「Type Confusion」 = 型の混同
💬 type(データの型)+confusion(混同・混乱)で、プログラムが型を取り違えて動作してしまう状態を表しているんだよ。