セキュリティ対策

はじめに #

  • システムで対応する事(セキュアなインフラ、セキュアなプログラミング)と運用で対応することに分かれます。
  • 「カード情報の非保持、非通過」というトレンドについても触れます。
  • 運用で対応する事には、PCI DSS のようなカード情報を扱う企業の条件があります。
  • 他に利用している外部サービス(特にクラウド)のアカウントを厳重に管理していく必要があります。

セキュアなプログラミングで対応する #

  • 下記については、利用しているECサイトでどのような対策がされているか、網羅する必要があります。
  • 把握する方法としては、そもそも利用しているテクノロジーで防がれているもの、利用しているインフラで防がれているもの、個別に対応を入れることによって防がれているものがあります。
  • また攻撃手法は年々色々な方法が増えているので、定期的にキャッチアップしていく必要があります。
  • IPAの「 安全なウェブサイトの作り方」は必読です。

主要な攻撃方法 #

  • SQL インジェクション
  • クロスサイト・スクリプティング
  • CSRF(クロスサイト・リクエスト・フォージェリ)
  • セッション管理の不備
  • OS コマンド・インジェクション
  • パス名パラメータの未チェック/ディレクトリ・トラバーサル
  • HTTP ヘッダ・インジェクション
  • メールヘッダ・インジェクション
  • クリックジャッキング
  • バッファオーバーフロー
  • アクセス制御や認可制御の欠落
  • ウェブサイトの安全性向上のための取り組み
  • ウェブサーバに関する対策
  • DNS に関する対策
  • ネットワーク盗聴への対策
  • フィッシング詐欺を助長しないための対策
  • パスワードに関する対策
  • WAF によるウェブアプリケーションの保護

アプリケーションを構築するフレームワークで対応すべきこと #

  • 上記の攻撃手法は、アプリケーションを構築するフレームワークで対応されていることが望ましいです。

  • なぜかというと、プログラミングで一行一行対応すると、人的なミスで脆弱性を内包してしまう可能性があるためです。

  • また、フレームワーク上できない場合は、該当箇所の重点的なレビューが必要になります。

  • フレームワークで対応すべきという観点では、昨年話題になった何件かの情報漏洩はApache Struts2 のフレームワーク、そのアップデート不足に起因するものがありました。フレームワークとして、そもそも攻撃手法を封じているものを使うほうが安全性が高くなります。

  • 古いソフト、古いパッケージやOSS、プラグインを利用したままで、アップデートしていないケースで発生しているケースが多いです。

  • EC-CUBEやWordPressはプラグインを含めて、この脆弱性が豊富で常に最新へのアップデートが必要です。

  • クラウドのように継続してアップデート、メンテナンスできるかは重要なポイントになります。

  • イントラネットは外部侵入できなくなっているので、アップデートは不要という担当者もいるかもしれないが、昨今ではそのような考え方は企業のリスクを高めるものである。利用している環境のアップデートは本日では義務といえる。

SQLインジェクション #

  • SQLインジェクションについてはURLに含まれるパラメーターを通じて、不正なSQL(データベースへのアクセスを)を行うことを可能としてしまう攻撃手法です。
  • 脆弱性があるシステムだと、URLに https://ec.com/login?1=1 などのパラメータを投入すると、不正な情報が見えたり、他人でログインできたりしてしまいます。

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

  • URLや投稿内容にJavaScriptを埋め込み、不正な情報通信や不正な挙動を発生させます。
  • 脆弱性があるシステムだと悪意のあるユーザーが入力したJavaScriptが動作することによってサイトの情報が不正に変わったり、不正なサイトに飛ばされたり、Cookieを盗まれ、ログインされてしまう等が発生します。
  • システムからHTMLを出力する際に内容を無害化することにより防ぐことが出来ます。

アプリケーションを構築するインフラで対応すべきこと #

Cookieにsecure属性を付与し、HTTPでCookieが通信されないようにします #

  • 重要なCookieはHTTPSのみでCookieが送信されるようにSecure属性をつけます。
  • HTTPで送信することによって、セッションIDなど重要な情報が漏洩する可能性があるのでHTTPSでのみ通信します。

CookieにHttpOnly属性を加え、 TRACE メソッドを無効化します #

  • HttpOnlyが設定されたCookieは、HTML内のスクリプトからのアクセスが禁止されます。ウェブサイトにクロスサイト・スクリプティングの脆弱性が存在する場合等で、Cookieを盗まれるのを防ぐことが出来る。

カード情報の非保持、非通過 #

  • カード情報を非保持、自社EC上のサーバーを非通過とすることが2018年5月より厳格に求められている。
  • もしくは、 PCI DSSに準拠することが求められる。(後述)

PCI DSS の遵守要件を確認する #

  • 遵守要件自体は参考になるものなので、一読する事を推奨します。

アカウント管理 #

  • クラウドのアカウント管理は多要素認証を利用します。
  • ECサイトの管理画面などはIP制限や、証明書による制御を検討します。