Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20190226_JP_StripesNagoya
Search
mori-hisayuki
February 26, 2019
Technology
0
58
20190226_JP_StripesNagoya
PayPayで話題になったCVCアタックに対してStripeでどう戦うか?
mori-hisayuki
February 26, 2019
Tweet
Share
More Decks by mori-hisayuki
See All by mori-hisayuki
Cloudflare Page を使った Webアプリケーションを構築
hisayuki
0
510
jawssonic2020_AWSサービスで_JAMStackの構築をしてみた.pdf
hisayuki
1
980
20191219_JAWS_UG_NAGOYA
hisayuki
0
24
20190717_JAWS_UG_NAGOYA.pdf
hisayuki
0
55
20190423_JP_Stripes_kobe
hisayuki
0
39
Other Decks in Technology
See All in Technology
2025年になってもまだMySQLが好き
yoku0825
8
3.8k
Agile PBL at New Grads Trainings
kawaguti
PRO
1
200
なぜスクラムはこうなったのか?歴史が教えてくれたこと/Shall we explore the roots of Scrum
sanogemaru
2
710
Obsidian応用活用術
onikun94
0
350
Figma + Storybook + PlaywrightのMCPを使ったフロントエンド開発
yug1224
10
3.9k
Snowflakeの生成AI機能を活用したデータ分析アプリの作成 〜Cortex AnalystとCortex Searchの活用とStreamlitアプリでの利用〜
nayuts
0
220
まだ間に合う! StrandsとBedrock AgentCoreでAIエージェント構築に入門しよう
minorun365
PRO
11
830
ガチな登山用デバイスからこんにちは
halka
1
210
『FailNet~やらかし共有SNS~』エレベーターピッチ
yokomachi
1
200
【Grafana Meetup Japan #6】Grafanaをリバプロ配下で動かすときにやること ~ Grafana Liveってなんだ ~
yoshitake945
0
220
データアナリストからアナリティクスエンジニアになった話
hiyokko_data
2
380
AWSで推進するデータマネジメント
kawanago
0
930
Featured
See All Featured
Designing for humans not robots
tammielis
253
25k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Gamification - CAS2011
davidbonilla
81
5.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Six Lessons from altMBA
skipperchong
28
4k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
111
20k
GitHub's CSS Performance
jonrohan
1032
460k
Balancing Empowerment & Direction
lara
3
610
Why Our Code Smells
bkeepers
PRO
339
57k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Transcript
PayPayで話題になったCVCアタックに対してStripe でどう戦うか? 森 久由生 #JP_Stripes
自己紹介
Introduction Name : Hisayuki Mori Company : Cloud9 Holdings Inc.
Post : CTO Community : JP-Stripes, JAWS-UG 名古屋 Facebook : 森 久由生 Twitter : @hisayuki_mori Blog : https://hisa-tech.site
弊社初のWebサービス
Jupiter • 電話占いサービス • 3/6展開予定 • クレジットカード登録にElements • ポイント購入にStripeCharge リリース延期確定w
Stripeさんとの戦闘はまだ続く・・・
いろいろ使ってます
2/22
初JP_Stripes Tokyo 参加!
そして・・・
岡本さん ✨ご結婚おめでとうございます✨
Developers.IO Cafe
None
本日のセッション
アジェンダ • 今回起きた問題 • Stripeではどうする? • StripeRadar • カード登録のみは弾けるのか? •
やりたかったこと • まとめ • お楽しみ
ブログ見た方は すこし退屈かもしれないです
今回起きた問題
PayPayで起きた問題① 今回PayPayで起きた問題はクレジットカード情報漏 洩といわれてるが・・・ 実際はCVC入力失敗の制限を掛けていなかったた め、CVCの総当たりが出来るようになっていた。 ⇛漏れたというより仕組みを利用されたに近い
PayPayで起きた問題② 利用されただけなので、クレジットカードがPayPayに 登録していたかどうかはあまり問題ではない 登録されていないクレジットカードでも、番号を保持し ていてCVCがわからないカードはCVC総当たりで突 破されてしまう。
Stripeではどうする?
Stripeの仕組み Elements経由でクレジットカードを登録した場合 Elements Customer Card(defult) 最初にはCustomerが作成されて、Customerのデフォル トカードとしてのCardが作成される。 token Stripe Front
End
Stripe StripeChargeの仕組み① Elementsでカード情報を送りつつ、そのまま支払をする 場合 Elements Charge Elementsから送らてたToken情報をそのままChargeに 突っ込みます。 この方法ではCustomerもCardも作られませんが、カード 情報も登録されませんので都度入力。
Front End token
StripeChargeの仕組み② Elementsでカード情報を登録。 その後、アプリ側にあるCustomerIDでCharge ChargeAPI Charge 既にElementsなどで登録済みの場合Customerができている ので、APIでCustomerIDをPostすることでCustomerのデフォ ルトカードで決裁出来る。 CustomerID Stripe
Front End
Attention StripeChargeには2パターンある これ大事なところです
StripeRadar
StripeRadarとは? • ルールを設定することで、怪しい決済を防げる • 複数のルールを設定可能 – Allowd(許可ルール) – Block(防止ルール) –
Place in revies(最後に通るルール) • 永久ブロックはリストに追加
StripeRadarルール設定
StripeRadarでのルールサンプル • Block if: CVC verification fails – 入力ミスされたらブロック •
Block if :blocks_per_card_number_daily: > 10 – 24時間以内に同じcardで10回以上カード番号を間違 えた場合は支払いブロック • Block if :charge_attempts_per_customer_hour > 5 – 1時間以内に同じcustomerで5回以上の支払試行が された場合はブロック
永久ブロック • Radarのルールが弾くのは都度のトランザクションの みで、永久ブロックしてるわけではない。 • ただし弾いた記録は残るので、明らかにおかしいもの は手動でRadarのリストに追加することで永久ブロッ クが出来る
Attention StripeRadarのルールは決済がトリガーになる なので、決済を弾くことは出来ます。
カード登録のみは弾けるのか?
もう気づいてる人もいるかもしれない
Attention カード登録のみは決済を通らない
Stripeの仕組み • Elementsから直接決済をせずカード登録のみにした 場合、CustomerとデフォルトCardの作成しかしな い。 ⇛Radarのルール発動条件を満たさない。
間違ったカード登録時の動作①
間違ったカード登録時の動作② • JSONでExceptionが返ってくる • Stripe側には402エラーとしてのログが残る • そもそもカード情報が間違ってるので、Customerも Cardも作られない Stripe側には”あなたのカードのセキュリティコードは正 しくありません。”という記録のみ残って終了
やりたかったこと
PayPayで起きた問題の対策 課題: CVC入力失敗の制限を掛けていなかったため、CVCの 総当たりが出来るようになっていた。 対策: 決済はもちろん防がないとだが、そもそもカード登録の総 当たりが出来ないように失敗回数上限などを設けたい
つまり・・・
Attention StripeだけではCVCアタックを 完全に防ぐことは出来ない
まとめ
まとめ • "支払い”(Chargeなど)はStripeのみで防げる • カード情報入力から決済までを1トランザクションにす ればRadarで引っ掛けて、永久ブロックも可能 • カード登録と決済が別トランザクションだと、CVCア タック対策はStripe単体では難しいアプリで作り込み が必要
しかし・・・
じつは・・・
ここからは裏動作 • StripeRadarのルール部分は起動しないが、機械学 習ツールは動いている。 • 最大限有効にするならすべてのページにStripe.jsを 読み込むタグを入れる ◦ SPAであればTOPページの1箇所に入れればOK ◦
Stripe.jsが入っているページの動線チェック等を行ってい て、明らかに怪しい動作をしている場合はカード登録前に 弾いている • 100%ではないが、それによりCVCアタックはかなり 防げるとのこと。
ここからは裏動作 ここに書いてあることはそういうことらしい
本当のまとめ • "支払い”(Chargeなど)はStripeのみで防げる • カード情報入力から決済までを1トランザクションにす ればRadarで引っ掛けて、永久ブロックも可能 • カード登録と決済が別トランザクションだと、CVCア タック対策はStripe単体では難しいアプリで作り込み が必要
• new すべてのページにStripe.jsを読み込ませてお けば、Radarの機械学習ツールで怪しい動作を検知 して、カード登録以前で弾くことが出来る
Radarはルールとリストだけではないのだ
お知らせ
None
JP_Stripes Connect 2019 !! JP_Stripes初の全国イベント!! 2019/03/21(木) 13:00〜 エムオーテックス新大阪ビルにて
LT応募しました!! 今も続いてるStripe様との戦いについて 簡易版を話そうと思います♪
まだまだ応募すくない!! 皆様奮ってご参加ください
None
ご清聴ありがとうございました