第18章. ビジネス・ロジックの脆弱性
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
前の章では、ほとんどのウェブ・アプリケーションに影響する、一般的な脆弱性について議論した。これらの脆弱性は、インジェクションや サービス拒否のような用語を用いて簡単に分類することができた。前述の脆弱性は、ほとんど常に一貫した形をしており、そのため分類的に定義しやすかった。これはまた、一般的な脆弱性を攻撃したり緩和したりするための攻撃戦略と防御戦略の両方が、影響を受 けるすべてのアプリケーションで比較的一貫していることを意味する。
これまでは、典型的なウェブ・アプリケーションの脆弱性について研究してきた。しかし、あるアプリケーションに特有の脆弱性に遭遇した場合、どうなるのだろうか?固有の脆弱性は、アプリケーションが特定のビジネスロジックの規則を実装した結果として、最も頻繁に発生する。ハッカーは、そのプログラミングされた規則を利用し、意図しない結果を得る方法を学ぶ。言い換えれば、これまで私たちが研究してきた脆弱性は、 アプリケーションロジックの結果として発生する可能性のある脆弱性であり、ビジネスルールのために発生する脆弱性ではありません。
アプリケーション・ロジックは、画像のレンダリングやネットワーク呼び出しなど、ウェブ・アプリケーションに共通するタスクを実行するために、情報と命令を組み合わせる。一方、ビジネス・ルールは実装するビジネスに特化したものである。ビジネス・ルールの例としては、現在時刻が予約時刻の24時間以上前である場合にのみ、乗客に予約のキャンセルを許可するといったものがある。
ビジネスルールの実装における脆弱性は、しばしばビジネスロジックの脆弱性と呼ばれる。この形式の脆弱性は、定義によれば、特定のアプリケーションに特有のビジネスルールのセットを理解する必要があるため、発見と悪用がより困難である。
これは、多くのアプリケーションで比較的一貫した方法で実装された標準的なアプリケーショ ンロジックを利用する一般的な脆弱性とは対照的である。このような複雑さが加わった結果、ビジネスロジックの脆弱性は、発見と悪用が最も困難な脆弱性であることが多い。
最後に、ビジネスロジックの脆弱性は、手作業で発見することが難しい一方で、標準的な自動化ツールを使 って発見することもほとんど不可能である。 というのも、脆弱性を発見するために設計されたほとんどすべてのツールは、特定のアプリケーショ ンや一連のビジネスルールのために設計されているのではなく、共有のアプリケーションフレームワーク、言語、シス テム設計を利用する幅広いアプリケーションを攻撃するように構成されているからである。
前置きが長くなったが、よくあるビジネス・ロジックの脆弱性を評価し、それを悪用するメソッドについて説明しよう。
カスタム数学の脆弱性
数学関連の脆弱性 はビジネスロジックの脆弱性の最も一般的な形態の一つである。ほとんどすべてのアプリケーションは、ユーザに代わって計算を実行するために数学を利用しますが、数学的演算の背後にある論理はしばしば異なります。
アプリケーションの例として、MegaBank を考えてみよう。前の章では、MegaBank が顧客のためにホストしているウェブ・アプリケーションが、認証されたユーザが他のユーザに通貨を送金して取引を完了することを許可していることを述べた。
メガバンクのようなアプリケーションに代わって、送金がどのように見えるかを考えてみよう: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access