LoginSignup
2
2

More than 3 years have passed since last update.

WEBアプリ セキュリティ 簡易まとめ

Posted at

この記事は何?

オライリーから出版されているリアルワールドバグハンティングを読み、
再度セキュリティに関して確認しようと思い作成したもの。
また事例の調査も行った。
リアルワールドバグハンティングはバグハンティングプログラムを利用した、脆弱性の報告からバグを見つける手法・考え方を解説する本です。セキュリティ観点としてだけでなく、読み物としても面白いためオススメです。

SQLインジェクション

概要

悪意あるリクエストにより、データベースへの不正利用がおこなわれる

脅威

  • データベースの非公開情報の閲覧
  • データベースの情報の改竄・消去
  • 認証回避による不正ログイン

被害事例

価格.com事件
SQLインジェクションにより、価格.comのOZmallが不正アクセスを受けた。
それにより、メールアドレスなどの個人情報が二万件超流出する被害にあい、サービスは一時休止する事態となった。

SQLインジェクション対策漏れの責任を開発会社に問う判決
SQLインジェクションの対策漏れが原因で発生した、クレジットカード情報漏洩事件。
詳しくは記事を読んだほうがいいです。

対策

  • SQL文の組み立てはすべてプレースホルダで実装する
  • SQL文の組み立てはエスケープ処理をおこない、リテラルを正しく構成する

OSコマンド・インジェクション

概要

WEBサーバのOSコマンドを不正に実行することにより起こされる攻撃

脅威

  • サーバ内ファイル閲覧・改竄・削除
  • 不正なシステム操作
  • 不正なプログラムのダウンロード・実行
  • 他のシステムへの攻撃の踏み台

被害事例

日テレ個人情報漏洩
日本テレビのWebモバイルサイトで利用しているソフトが不正アクセスによる攻撃を受け、個人情報43万件が流出したとされる事件。遠隔操作プログラムが設置され、それを利用して、内部情報を捜索され、流出につながった。

対策

  • シェルを起動できる言語機能の利用を避ける

ディレクトリ・トラバーサル

概要

プログラムへ指定するパラメータに対して、本来想定していないファイルを指定して、公開をしていないファイルへのアクセスを許してしまったり、意図しない処理をさせられる

脅威

  • ファイルの閲覧・改竄・消去

被害事例

ウィルスバスター 脆弱性
ウィルスバスターの上記脆弱性をつかれ、攻撃者がウイルスバスター Corp. サーバ、もしくはビジネスセキュリティサーバの任意のファイルを変更することができた。

対策

  • 外部からのパラメータでウェブサーバ内のファイル名を直接指定する実装を避ける
  • アクセス権限の設定を正しく管理する

セッション管理の不備

概要

セッションIDを不正に取得(推測、盗む)され、なりすましてアクセスされてしまう

脅威

対象の利用者になりすまし、その利用者の個人情報の漏洩や、利用者の意図しないプログラムの処理をおこなう

被害事例

Apacheのサーバへの攻撃
XSSによってセッションを含むクッキー情報を盗むコードが仕込まれていた。
そのため、セッションハイジャックされ、侵入を許すこととなった。

対策

  • セッションIDを推測困難な文字列とする
  • セッションIDをURLパラメータに格納しない
  • 既存のセッション ID とは別に秘密情報を発行し、ページの遷移ごとにその値を確認

クロスサイトスクリプティング

概要

WEBアプリの入力欄に対してスクリプトなどを埋め込み、クッキー情報の漏洩やサイトに偽のページを表示させてしまう

脅威

  • クッキー情報の漏洩
  • 偽情報の流布

被害事例

Apacheのサーバへの攻撃

対策

  • エスケープ処理をほどこす
  • 入力値の内容チェックを行う
  • HTTP レスポンスヘッダのContent-Type フィールドに文字コード(charset)を指定する。

CSRF(クロスサイト・リクエスト・フォージェリ)

概要

Webアプリ利用者自身が意図しない処理が実行されてしまう

脅威

  • 利用者のみが利用可能なサービスの悪用
  • 利用者のみが編集可能な情報の改竄

被害事例

twitter CSRF脆弱性
Twitterにモバイル端末を登録してSMSでアカウントを管理できる機能に存在していた脆弱性。
攻撃者の携帯端末とネットワークを被害者のアカウントに登録させたりすることができた。

対策

  • 処理を実行するページを POST メソッドでアクセスするようにし、その「hidden パラメータ」に秘密情報が挿入されるよう、前のページを自動生成して、実行ページではその値が正しい場合のみ処理を実行する。
  • Referer が正しいリンク元かを確認し、正しい場合のみ処理を実行する。
  • 処理を実行する直前のページで再度パスワードの入力を求め、実行ページでは、再度入力されたパスワードが正しい場合のみ処理を実行する。

参考

安全なウェブサイトの作り方
安全なSQLの呼び方
リアルワールドバグハンティング

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2