ヘルスケア Web・API のペネトレーションテスト
欧州のヘルスケアプラットフォーム:患者データの保護
機密性の高い患者データを扱う欧州のヘルスケアプラットフォームに対し、詳細なセキュリティ診断を実施しました。認証、認可、ビジネスロジックの各層で 5 件の脆弱性を特定し、3 週間の案件期間内に優先度付きの是正ロードマップを提供しました。
プロジェクト概要
業種
ヘルスケア
テストの種類
Web・API のグレーボックステスト
期間
3 週間
課題と目的
課題
欧州各国で機密性の高い患者データを処理するヘルスケアプラットフォームとして、規制要件を満たし、医療記録や予約システムへの不正アクセスを防ぐための厳格なセキュリティ検証が必要でした。
目的
- すべての API エンドポイントで認証・認可の仕組みを評価する
- 予約、アカウント管理、データアクセスのワークフローにおけるビジネスロジックの欠陥を特定する
- 重要な認証フローにおけるレート制限とブルートフォース対策を検証する
- 欧州のヘルスケアデータ保護基準への準拠準備を確認する
手法
API のマッピング
すべての API エンドポイント、認証フロー、データアクセスパターンを網羅的に列挙
認証・アクセス制御のテスト
認証回避、OTP の仕組み、オブジェクトレベルのアクセス制御を体系的にテスト
ビジネスロジックの分析
予約ワークフロー、状態遷移、機能トグルの適用を手動でテスト
是正ロードマップ
深刻度に基づく是正計画で指摘事項に優先度を付け、再テストで修正を確認
主な指摘事項(脆弱性 5 件)
OTP 検証にレート制限がない
OTP 検証エンドポイントにレート制限がなく、ワンタイムパスワードを無制限にブルートフォースで推測して二要素認証を回避できる状態でした。
推奨対策
OTP 検証に厳格なレート制限(最大 3〜5 回)と一時的なロックアウトを導入する。
API エンドポイントの認証の欠如
一部の API エンドポイントに認証チェックがなく、未認証のユーザーに機密性の高い患者データや管理機能が露出していました。
推奨対策
すべての API エンドポイントで、デフォルトで認証チェックを適用する。
不適切な認可:オブジェクトレベルのアクセス制御の不備(CWE-285)
認証済みユーザーが API リクエストのオブジェクト識別子を操作することで、他のユーザーのリソースにアクセス・変更できる状態でした。
推奨対策
すべてのデータ操作に、サーバー側で堅牢なオブジェクトレベルのアクセス制御を実装する。
予約作成時の競合状態(レースコンディション)
予約エンドポイントへの同時リクエストにより空き状況のチェックを回避でき、二重予約や予約枠の重複が発生する状態でした。
推奨対策
データベースのトランザクションロックまたは排他制御を導入し、予約作成リクエストを順番に処理する。
ビジネスロジックのエラー
複数のビジネスルール、状態の検証、機能トグルがクライアント側でのみ適用されており、攻撃者が API を直接呼び出すことで制限を回避できる状態でした。
推奨対策
すべてのビジネスロジックのルール、状態の検証、機能トグルをサーバー側で厳格に適用する。
提供した価値
患者データの保護
重大なアクセス制御の欠陥を特定・是正し、機密性の高い医療記録を保護
規制への準拠
欧州のヘルスケアデータ保護要件に向けてセキュリティ体制を強化
優先度付きの是正
深刻度に基づく是正ロードマップを提供し、案件期間中にすべての問題を修正