intern2015 02
TRANSCRIPT
➡ カード業界の勉強
➡ ペネトレーションテスト
➡ CheckoutHelperのバージョンアップ
➡ セキュリティ調査
➡ インフラ、プロビジョニングツールの整備
➡ 動作確認
インターンでやったこと
セキュリティ調査
HTTPS+公開鍵暗号化
➡ ツールによる解析 ➡ Webアプリケーション攻撃テ
ストツールのbrakeman、
WebReaverを使用
➡いくつかの脆弱性と診断された
ものはあったがどれも誤診断で
あった
CheckoutHelperについて
➡CheckoutHelperとは?
CheckoutHelper
➡ 決済時にユーザーが購入サイトから離れずに
カード情報を入力できるようにする
JavaScriptライブラリ
➡ カード情報の入力フォームとカード情報の
トークン化を担う
セキュリティ調査-安全でないDOMの生成
xxshop.com
DOM in xxshop.com
jquery.js
analytics.js
4242 4242 4242 4242
PAN: 4242 4242 4242 4242 EXPIRE: 08/18 NAME: YAMADA… CVC: 123
analytics.com
CheckoutHelperのバージョンアップ
➡ インターンではiframe対応をしたCheckoutHelperのv3をリリースする
ことを目標に
➡ クレジットカード業界におけるセキュリティ基準のPCI DSSのバージョ
ン3で推奨されているため、移行を予定していた
See: http://qiita.com/hokkai7go@github/items/3705120cf73b07570f9e
CheckoutHelperのバージョンアップ
➡ 実はすでに対応のためのブランチがあった
➡ リリースされていなかった理由 ➡ 動作確認やセキュリティの調査、新しいサーバの準備が必要
➡ ここらへんを対応していくことに
本当にあった怖いXSS
?publishableKey=“ ?publishableKey=<b>test</b>
?publishableKey=</script><script>alert(1)</script>
?publishableKey=test_public_XXXXXXXX
JSON.dump
※リリース前のコードの話です
➡ scriptタグ内では、このサニタイズでは十分でない ➡ JSONで出力するのであれば、加えて<>/のエスケープ
➡ https://subtech.g.hatena.ne.jp/mala/20100222/1266843093
本当にあった怖いXSS
?publishableKey=</script><script>alert(1)</script>
➡そもそもサーバサイドで埋め込む必要なくない? ➡ クライアントサイドでパラメータの取得を行うように
➡ 現状Ansibleを使ってサーバの構成を管理している
プロビジョニングツール
➡動作が遅い/もっさり ➡ 完了するまでに1時間以上かかる
➡ YAMLによる記述力不足 ➡ ignore_errors: yes, when, when, when..
➡ テンプレートエンジンがしょぼい ➡ Jinja2使いづらい
➡エージェントを先にインストールする必要がある ➡ 簡単に実行できない
➡ Chef/Puppet
https://www.flickr.com/photos/dakiny/14652227925/
Itamae➡クックパッドの荒井氏(@ryot_a_rai)を中心に開発しているOSSのプロビジョニングツール
➡RubyのDSLなので学習コストが低く、柔軟な記述が可能
➡エージェント不要で、軽快に動作する
➡ iframe対応をしたCheckoutHelperのv3をリリースします
➡ 利用中のマーチャントに影響が出ないよう、移行は公式ブログ等で
アナウンスをする(記事は書いた)
最終報告
v12014/06 v2
2015/08 v3
初版 デザイン変更 モバイル対応
iframe版
NOW
しました