# バグハンターmageに聞くバグハンティングの方法とセキュアなサービス作りに必要なことめも

# バグハントを犯罪にしないために

  • HackerOneのレポートを読むと良い
    • 実際の手法を知る助けになる
  • 会社とコミュニケーションをとることも必要
  • SQLインジェクションを試したら本番環境の全ユーザのパスワードが初期化された例もある

# IPAが公開しているガイドライン

  • 情報セキュリティ早期警戒 パートナーシップガイドライン(PDF)
    • ソフトウェアやアプリケーションの脆弱性を発見した場合
      • IPAへの届出を検討
      • IPAはJPCERT/CCに通知
      • JPCERT/CCは製品開発者に連絡して検証/対策
      • IPAおよびJPCERT/CCは脆弱性情報/検証の結果および対策状況を公表
    • Webアプリケーションの脆弱性を発見した場合
      • IPAへの届出
      • ウェブサイト運営者に通知/脆弱性の通知
      • ウェブサイト運営者は漏洩/措置情報を公表する等する
      • IPAは統計情報を公表する

# 発見者が心得ておくべき法的な論点

  • 法律に抵触する可能性のある行為の例
    • 脆弱性関連情報を利用してアクセス制御機能を回避してインターネット等を介してシステムにアクセスした場合には, 不正アクセス禁止法に抵触する
    • 管理者の了解なく他人のパスワードを取得し, それを用いて権限なしでシステムにアクセスした場合は不正アクセス禁止法に抵触します

    • 故意にサーバの機能や性能の異常を来たそうとして何らかの行為をなし、コンピュータの性能を低下させたりした場合、刑法上の偽計(もしくは威力)業務妨害罪に抵触する可能性があります。さらに、その妨害の程度によっては、刑法の電子計算機損壊等業務妨害罪にも抵触すると解される可能性があります。

    • 暗号化されている無線通信を傍受し復号する行為(無線LANのWEPキーを解読して通信内容を復号すること)は、電波法109条の2に触れる可能性があります。

  • 不正アクセス禁止法に抵触しないと推察される行為の例
    • ウェブアプリケーションの利用権者が、正規の手順でログインする等して通常のアクセスをした際に、ブラウザとサーバとの通信の内容を観察したところ、それだけで脆弱性の存在を推定できた場合。

    • ウェブページのデータ入力欄に HTML のタグを含む文字列を入力したところ、入力した文字列がそのまま表示された。この段階ではアクセス制御機能の制限を回避するに至らなかったが、悪意ある者に別の文字列を入力されれば、このサイトにセキュリティ上の問題が引き起こされかねないと予想できた場合。

    • アクセス制御による制限を免れる目的ではなく、通常の自由なページ閲覧を目的として、日付やページ番号等を表すと推察される URL 中の数字列を、別の数字に差し替えてアクセスしてみたところ、社会通念上、本来は利用できてはならないはずと推定される結果が、偶発的に起きてしまった場合。(ただし、積極的に多数の数字列を変えて試す行為等は、制限を免れる目的とみなされる可能性があります。)

# バグハント手法について

  • 調査->解析->実証の流れでバグハンティングを行う
    • 意外かもしれないが, 簡単な部分から行うのが一般的
    • URLのパラメータが?name=valueだった時に, ?name[]=valueとした時のレスポンスが変だったらPHPで書かれていると仮定するなど
  • 例外が発生するようなパラメータを飛ばして, 固有のエラーメッセージが返ってきたらフレームワークの特定に繋がる
    • OSSなら隅々まで読むことでバグを見つけられるかも
    • フレームワークが分かれば, 脆弱性を試しに使ってみて通るか否かでそのフレームワークのバージョンを推定できる
  • 普段はやらない操作をやってみると良い
    • 普通のフローは以下の通り
      • 商品を選ぶ
      • 個数を入力する
      • 購入する
    • ここで負の値を入力する, などの普通はやらない入力をすると良い

# IPAが公開している安全なウェブサイトの作り方

# バグハントで使うツールについて

Last Updated: 2019-8-29 14:04:30