【ビジネスロジック編】仕様の隙間を突く攻撃と守り方|CTF思考フレームワーク #13
📖 この記事はシリーズの一部です
「CTF思考フレームワーク」 Web脆弱性編 #13 / 公開中 10記事 → シリーズ一覧を見る →
ビジネスロジック脆弱性は、ツールでは見つけにくい「人間が考える」攻撃。SQLインジェクションみたいな技術的脆弱性じゃなくて、「業務フローの隙間」を突く攻撃です。割引コードの組み合わせ、注文プロセスのスキップ、ポイント還元の悪用…仕様書を読み込む力が必要🧩
ECサイト、ポイント還元、サブスク、招待制度…ビジネスルールが複雑なほど穴が増えます。
技術的脆弱性ゼロでも「仕様の隙間」で攻略される、最も検出が難しい領域です🧩

ビジネスロジックの穴はスキャナでは見つからない。発想力勝負の攻撃だよ🧠
難易度:★★★(中級) / 所要:10〜12分 / 前提:CTF思考フレームワーク #12
👀 観察フェーズ:まず何を見る?

まず業務フロー全体を俯瞰!「数量・価格・順序・条件」の組合せに穴がないかが鍵🔍
ビジネスロジックは「お得な抜け道」を探す感覚。普通のユーザーが見逃す組み合わせやエッジケースに金脈があります。

「ありえない使い方」をしたとき、エラーで止まる?それとも普通に通る?😲
🤔 仮説フェーズ:攻撃者は何を考える?

ビジネスロジックの典型穴は4分類。
攻撃者の仮説。
💰 仮説①:価格・数量の改ざん
リクエストボディにpriceやamountがそのまま入っていて、クライアント側で書き換え可能なケース。
🔢 仮説②:負の数や極端な値
出金額に-1000を渡すと残高が増える、数量に0を渡すと無料になる、みたいな境界値の油断。
⏭️ 仮説③:手順スキップ
本人確認→送金の流れを送金APIだけ直叩きでスキップ。状態遷移が甘いとそのまま通る。
🎁 仮説④:割引・クーポンの組合せ
「100%OFFクーポン×返金可能」のように組合せの想定漏れで実質マイナス価格にできる。
「仕様書のスキマ」「実装者が想定してないユースケース」を狙うのがビジネスロジック攻撃の本質です。

ビジネスロジックの穴は「想定した使い方の外」を試せばいいんだね💡
🔬 検証フェーズ:どうやって確かめる?

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

スキャナだと拾えないから、人間の脳と仕様書が一番の武器だね🧪
⚔️ 攻撃フェーズ:実際の手口

ビジネスロジック攻撃の代表はこの3つ。
実戦シナリオ。
チェックアウト時のリクエストで"price":"0"に書き換えて商品を実質タダで購入。サーバ側で価格を再取得していないと刺さる。
本人確認(KYC)を経由せず、送金API・出金APIを直接叩く。マネロン対策の根幹を破られる。
「アカウント1つにつき1回」を、作り直したアカウントで再利用。デバイスID・支払い手段でも縛らないと止まらない。
CTF{server_must_recompute_prices_and_validate_state}
ビジネスロジック攻撃の防御は「サーバが状態の正本」を握り続けること。クライアントから来た数値は「ヒント」として扱う。
🛡️ 防御フェーズ:どう守る?

ビジネスロジックの守りは「サーバ側で全部再計算」が鉄則!🛡️
防御の基本姿勢。
クライアントから受け取るのは商品IDと数量だけ。価格・割引・送料はサーバ側で都度計算する。
型・範囲・整合性を3段階でチェック。負の数や極端な値、想定外の組合せは早期に弾く。
ステートマシンで許可された遷移だけを許す。「未確認→送金」のような飛び級遷移はAPIで弾く。

「技術じゃなく仕様の堅さ」がビジネスロジックの肝なんだね💪
🛡️ 今日からできる対策ツール
パスワードの使い回しや手動管理はどんなに気をつけても限界があります。🔑 パスワード管理ツール「ワンパス」なら、複雑なパスワードを安全に保管して「1つのマスターパスワード」だけ覚えられるので、今日から始める防御策としてしっくりきます。
※ 上記は他社サービスへのリンクです。購入は各自でご判断ください。
⚠️ よくある落とし穴
よくあるミス。
- クライアントから送られる金額・割引額をそのまま使う。
- 「併用不可」をフロントエンドだけで実装してAPIには反映しない。
- ステップ式フローの途中ステップを「飛ばせない」とUIで安心。
- 返金・キャンセル時にポイントを戻し忘れる、または重複付与する。
- 紹介プログラムで「同一IP」だけ見て、エイリアス系を許す。
- 無料トライアル終了後の自動課金タイミングが、キャンセルAPIとレースする。
🧰 ツール早見表
ビジネスロジックは道具より「仕様読解力」が主役。補助ツールはこちら。
| ツール | 用途 | ひと言 |
|---|---|---|
| Burp Suite | リクエスト改ざん | 価格・パラメータ書き換えの定番 |
| Postman | API手動操作 | フロー迂回テスト用 |
| 一時メールサービス | マルチアカウント検証 | 紹介プログラム抜け穴探索 |
| 仕様書・利用規約 | 攻撃面の発見 | 実は最重要のツール |
🎓 本気で学びたい人へ
Webセキュリティを「趣味」から「仕事」に変えたい方へ。🎓 ササエルはインフラエンジニアに特化したオンラインスクールで、セキュリティ設計の基礎から体系的に学べます。
📚 もっと深く学びたい人へ
体系的に攻撃と防御の両面を学びたいなら『ホワイトハッカー入門 第2版』が分かりやすい入口です📚
⚖️ 大事なお約束
この記事の手法は、必ず自分の環境か、許可されたCTF・脆弱性報奨金プログラム(HackerOne、Bugcrowd等)で試してください。他人のサービスに無断で攻撃を仕掛けるのは不正アクセス禁止法違反、立派な犯罪です。学んだ知識は守る側で活かしましょう🤝
📚 次に読みたい
- レースコンディション編|CTF思考フレームワーク #12
- SSTI編|CTF思考フレームワーク #14
- SSRF・LFI編|CTF思考フレームワーク #11
- デシリアライズ編|CTF思考フレームワーク #15
🧪 自分で検証してみる
「自分でWordPressサイトを立てて、ログイン畫面のセキュリティを実際に試してみたい」なら、まずは安価で高速なConoHa WINGから。初期費用無料で始められます。



