[ホーム] > [サイバー攻撃大辞典 トップ] > [レースコンディション]


作成日:2020/09/16

レースコンディション

レースコンディションとは


・プログラムやデータベースの排他制御不備により、プロセスやスレッドが共有リソースに同時アクセスした場合に想定外の動作を行う。インテグリティ(整合性)が損失する。
複数のプロセス、スレッドなどの並行処理がプログラムの整合性を損失させる。
・タイミングがシビアであるため、攻撃は偶然性を利用する場合が多い。




攻撃例


例えば複数のスレッドで X の値を修正するプログラムがあるとする。
それぞれのスレッドがXに1を加算しているため、結果としてXは2となるはずである。
しかしタイミングが悪くそれぞれのスレッドがほぼ同時にXを読み込んでいるため、最終的にX=1となり不整合が発生する。
各スレッドがXを読み込むときにはXを排他ロックして、他からアクセスできなくすべきであった。


本当にこのような単純な不具合が残存することがあるのだろうか。
サーバの性能がよく、しかもアクセスが少ないWebサイトでは排他ロックをしなくてもアクセス頻度がすくないのでこのような不具合が表面化しにくい。
そこに目を付けた攻撃者が断続的に大量のアクセスを行い、このような不備による不具合が発生しないか観察する。

例えばWebサーバに対して複数ボットから大量の会員情報表示要求を行うことのより、偶然レースコンディション状態を発生させ他人の会員情報を表示させる。
例えば会員番号として格納する変数の整合性が失われるなどの脆弱性の可能性があるからである。

稀な偶然を狙う攻撃であるが大量に継続的に行うことにより効果が期待できる。


対策


共有リソースの排他制御に関して、不備が存在しないかプログラムを確認する。例えアクセスが少ないWebシステムでも、ストレステストや負荷テストを十分行い不整合が発生しないことを確認する。







[ホーム] > [サイバー攻撃大辞典 トップ] > [レースコンディション]


本サイト内掲載されている情報は、誰もその正当性は保証しません。独自の調査により判明した事項を記載しており、内容に誤りがある可能性があります。
内容により発生したいかなる損害は誰も補償しません。自己責任で参考として閲覧してください。
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) securitychecklist.net 2015 - 2020