PR 本記事には広告(Amazonアソシエイト・もしもアフィリエイト・A8.net等)が含まれます。掲載情報の正確性には努めていますが、商品の詳細は必ずリンク先で最新情報をご確認ください。
CTF・セキュリティ学習

【ビジネスロジック編】仕様の隙間を突く攻撃と守り方|CTF思考フレームワーク #13

安全に生きたい編集部

📖 この記事はシリーズの一部です

「CTF思考フレームワーク」 Web脆弱性編 #13 / 公開中 10記事 → シリーズ一覧を見る →

ビジネスロジック脆弱性は、ツールでは見つけにくい「人間が考える」攻撃。SQLインジェクションみたいな技術的脆弱性じゃなくて、「業務フローの隙間」を突く攻撃です。割引コードの組み合わせ、注文プロセスのスキップ、ポイント還元の悪用…仕様書を読み込む力が必要🧩

ECサイト、ポイント還元、サブスク、招待制度…ビジネスルールが複雑なほど穴が増えます。

難易度:★★★(上級)

技術的脆弱性ゼロでも「仕様の隙間」で攻略される、最も検出が難しい領域です🧩

ビジネスロジックの穴はスキャナでは見つからない。発想力勝負の攻撃だよ🧠

この記事の難易度

難易度:★★★(中級) / 所要:10〜12分 / 前提:CTF思考フレームワーク #12

👀 観察フェーズ:まず何を見る?

まず業務フロー全体を俯瞰!「数量・価格・順序・条件」の組合せに穴がないかが鍵🔍

ビジネスロジックは「お得な抜け道」を探す感覚。普通のユーザーが見逃す組み合わせやエッジケースに金脈があります。

数量に上限がない/負の値が通る/手順を飛ばせる/値段がクライアント側といった設計の油断は典型的な落とし穴です👀

「ありえない使い方」をしたとき、エラーで止まる?それとも普通に通る?😲

🤔 仮説フェーズ:攻撃者は何を考える?

ビジネスロジックの典型穴は4分類

攻撃者の仮説。

💰 仮説①:価格・数量の改ざん

リクエストボディにpriceamountがそのまま入っていて、クライアント側で書き換え可能なケース。

🔢 仮説②:負の数や極端な値

出金額に-1000を渡すと残高が増える、数量に0を渡すと無料になる、みたいな境界値の油断

⏭️ 仮説③:手順スキップ

本人確認→送金の流れを送金APIだけ直叩きでスキップ。状態遷移が甘いとそのまま通る。

🎁 仮説④:割引・クーポンの組合せ

「100%OFFクーポン×返金可能」のように組合せの想定漏れで実質マイナス価格にできる。

「仕様書のスキマ」「実装者が想定してないユースケース」を狙うのがビジネスロジック攻撃の本質です。

ビジネスロジックの穴は「想定した使い方の外」を試せばいいんだね💡

🔬 検証フェーズ:どうやって確かめる?

「マイナス・ゼロ・上限超え・順序逆」を1つずつ試して挙動を表にまとめると見えてくるよ📊

検証ステップ。

スキャナだと拾えないから、人間の脳と仕様書が一番の武器だね🧪

⚔️ 攻撃フェーズ:実際の手口

ビジネスロジック攻撃の代表はこの3つ

実戦シナリオ。

① 価格改ざん購入

チェックアウト時のリクエストで"price":"0"に書き換えて商品を実質タダで購入。サーバ側で価格を再取得していないと刺さる。

② 手順スキップでKYC回避

本人確認(KYC)を経由せず、送金API・出金APIを直接叩く。マネロン対策の根幹を破られる。

③ 割引コードの無限再利用

「アカウント1つにつき1回」を、作り直したアカウントで再利用。デバイスID・支払い手段でも縛らないと止まらない。

CTF{server_must_recompute_prices_and_validate_state}

ビジネスロジック攻撃の防御は「サーバが状態の正本」を握り続けること。クライアントから来た数値は「ヒント」として扱う。

🛡️ 防御フェーズ:どう守る?

ビジネスロジックの守りは「サーバ側で全部再計算」が鉄則!🛡️

防御の基本姿勢。

💵 価格・数量はサーバ側で再計算

クライアントから受け取るのは商品IDと数量だけ。価格・割引・送料はサーバ側で都度計算する。

📐 入力バリデーションを多層に

型・範囲・整合性を3段階でチェック。負の数や極端な値、想定外の組合せは早期に弾く。

🪜 状態遷移を厳格に

ステートマシンで許可された遷移だけを許す。「未確認→送金」のような飛び級遷移はAPIで弾く。

「技術じゃなく仕様の堅さ」がビジネスロジックの肝なんだね💪

🛡️ 今日からできる対策ツール

パスワードの使い回しや手動管理はどんなに気をつけても限界があります。🔑 パスワード管理ツール「ワンパス」なら、複雑なパスワードを安全に保管して「1つのマスターパスワード」だけ覚えられるので、今日から始める防御策としてしっくりきます。

PR / 広告

ソースネクスト

※ 上記は他社サービスへのリンクです。購入は各自でご判断ください。

⚠️ よくある落とし穴

よくあるミス。

  1. クライアントから送られる金額・割引額をそのまま使う。
  2. 「併用不可」をフロントエンドだけで実装してAPIには反映しない。
  3. ステップ式フローの途中ステップを「飛ばせない」とUIで安心。
  4. 返金・キャンセル時にポイントを戻し忘れる、または重複付与する。
  5. 紹介プログラムで「同一IP」だけ見て、エイリアス系を許す。
  6. 無料トライアル終了後の自動課金タイミングが、キャンセルAPIとレースする。

🧰 ツール早見表

ビジネスロジックは道具より「仕様読解力」が主役。補助ツールはこちら。

ツール用途ひと言
Burp Suiteリクエスト改ざん価格・パラメータ書き換えの定番
PostmanAPI手動操作フロー迂回テスト用
一時メールサービスマルチアカウント検証紹介プログラム抜け穴探索
仕様書・利用規約攻撃面の発見実は最重要のツール

🎓 本気で学びたい人へ

Webセキュリティを「趣味」から「仕事」に変えたい方へ。🎓 ササエルはインフラエンジニアに特化したオンラインスクールで、セキュリティ設計の基礎から体系的に学べます。

PR / 広告

ササエル

📚 もっと深く学びたい人へ

体系的に攻撃と防御の両面を学びたいなら『ホワイトハッカー入門 第2版』が分かりやすい入口です📚

⚖️ 大事なお約束

必ず守ってね

この記事の手法は、必ず自分の環境か、許可されたCTF・脆弱性報奨金プログラム(HackerOne、Bugcrowd等)で試してください。他人のサービスに無断で攻撃を仕掛けるのは不正アクセス禁止法違反、立派な犯罪です。学んだ知識は守る側で活かしましょう🤝

📚 次に読みたい

🧪 自分で検証してみる

「自分でWordPressサイトを立てて、ログイン畫面のセキュリティを実際に試してみたい」なら、まずは安価で高速なConoHa WINGから。初期費用無料で始められます。

PR / 広告

ConoHa WING
記事URLをコピーしました