Upgrade to Pro — share decks privately, control downloads, hide ads and more …

外部決済サービスを利用する上での脆弱ポイントと対策 / Vulnerable points and countermeasures for using external payment services

外部決済サービスを利用する上での脆弱ポイントと対策 / Vulnerable points and countermeasures for using external payment services

クラスメソッドのオンライン型イベント DevelopersIO 2022 https://classmethod.jp/m/developers-io/ 技術セッションとして、「外部決済サービスを利用する上での脆弱ポイントと対策」というテーマで動画を公開しました。

ECサイトなどで決済機能を作る場合は外部の決済サービスを扱うことがほとんどだと思います。特に外部サービスから結果を受け取る場合にセキュリティ上考慮が必要なことについて話しました。

Keiichi Nomura

July 27, 2022
Tweet

More Decks by Keiichi Nomura

Other Decks in Technology

Transcript

  1. ֎෦ܾࡁαʔϏεΛར༻͢Δ্Ͱͷ੬ऑϙΠϯτͱରࡦ

    QSJTNBUJYࣄۀ෦໺ଜܒҰ

    View full-size slide

  2. ΞδΣϯμ
    w ܾࡁͰΑ͋͘ΔભҠʹ͍ͭͯ
    w ͦͷதͰ੬ऑͱͳΓಘΔϙΠϯτ
    w ੬ऑϙΠϯτ΁ͷରࡦ

    View full-size slide

  3. ૝ఆࢹௌऀ
    w &$αΠτͳͲͷܾࡁػೳΛ։ൃ͢Δํ
    w ֎෦ͷܾࡁαʔϏε 4USJQF "NB[PO1BZͳͲ

    Λར༻

    View full-size slide

  4. ࣗݾ঺հ
    ΫϥεϝιουQSJTNBUJYࣄۀ෦
    QSJTNBUJY஫จܾࡁαʔϏε୲౰
    ໺ଜܒҰ

    View full-size slide

  5. QSJTNBUJYͷ͝঺հ
    ɾ&$$3.ಛԽܕ"1*ϓϥοτϑΥʔϜ
    ɾϚΠΫϩαʔϏεΫϥ΢υωΠςΟϒ
    ɾΫϥεϝιουͷ##ࣗࣾαʔϏε
    https://prismatix.jp/

    View full-size slide


  6. ܾࡁͰΑ͋͘ΔભҠ

    View full-size slide

  7. ྫʣΫϨδοτΧʔυͷ%ηΩϡΞܾࡁ
    https://www.veritrans.co.jp/user_support/3d-secure.html
    ΫϨδοτΧʔυͰຊਓೝূΛඞཁͱ͢Δܾࡁ
    ˞ΫϨδοτΧʔυܾࡁ୅ߦͷ%('5ʹΑΔઆ໌

    View full-size slide

  8. ྫʣ"NB[PO1BZܾࡁ
    https://pay.amazon.co.jp/using-amazon-pay
    "NB[POͷΞΧ΢ϯτʹొ࿥ͨ͠ࢧ෷͍ํ๏Λར༻ͯ͠
    ܾࡁͰ͖ΔαʔϏε
    ˞"NB[PO1BZߪೖऀ޲͚αΠτʹΑΔઆ໌

    View full-size slide

  9. ڞ௨͢ΔભҠ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ

    View full-size slide

  10. &$αΠτͳͲɺࣗલͰ։ൃ͢Δػೳ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ

    View full-size slide

  11. ֎෦αʔϏε͕ఏڙ͢Δػೳ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ

    View full-size slide

  12. ஫จ׬ྃͷλΠϛϯά
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ࠷ॳʹड͚෇͚ͨ஫จ͕੒ཱ͢Δ

    View full-size slide

  13. ಉ͓͡٬༷͕ભҠ͢Δ͜ͱΛ૝ఆ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ

    View full-size slide


  14. ؾΛ͚ͭΔ΂͖ϙΠϯτ

    View full-size slide

  15. ஫จ׬ྃͷλΠϛϯάʢ࠶ܝ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ࠷ॳʹड͚෇͚ͨ஫จ͕੒ཱ͢Δ

    View full-size slide

  16. ؾΛ͚ͭΔ΂͖ϙΠϯτ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ͜ͷભҠʹ஫໨
    ࠷ॳʹड͚෇͚ͨ஫จ͕੒ཱ͢Δ

    View full-size slide

  17. ؾΛ͚ͭΔ΂͖ϙΠϯτ
    ஫จ׬ྃʹભҠͰ͖Δͷ͸


    ֎෦αʔϏεͱ͸ݶΓ·ͤΜ

    View full-size slide

  18. ѱҙ͋ΔϢʔβʔͷૢ࡞
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ᶃ஫จड෇ঢ়ଶ·ͰਐΊΔ

    View full-size slide

  19. ѱҙ͋ΔϢʔβʔͷૢ࡞
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ᶃ஫จड෇ঢ়ଶ·ͰਐΊΔ
    ᶄ֎෦αʔϏε͔ΒͷϦΫΤετͱ
    ِ૷ͯ͠஫จ׬ྃঢ়ଶʹ͢Δ

    View full-size slide

  20. ѱҙ͋ΔϢʔβʔͷૢ࡞
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ϦΫΤετ͕໰୊ͳ͚Ε͹஫จ֬ఆ

    View full-size slide

  21. ѱҙ͋ΔϢʔβʔͷૢ࡞
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ຊਓ৘ใ΍Χʔυ৘ใͳͲͷೖྗΛεΩοϓͯ͠
    ஫จͰ͖Δʢʂʁʣ
    ϦΫΤετ͕໰୊ͳ͚Ε͹஫จ֬ఆ

    View full-size slide

  22. Կ΋ରࡦ͍ͯ͠ͳ͍ͱ
    ϦΫΤετ಺༰͕໰୊ͳ͚Ε͹


    ແ৚݅Ͱ஫จͰ͖Δ

    View full-size slide

  23. ֎෦αʔϏε͔Β݁ՌΛड͚औΔػೳͷྫ
    w ֎෦αʔϏε͔ΒͷίʔϧόοΫ ϦμΠϨΫτ

    ͱͳΔը໘
    w ઌʹྫࣔͨ͠ʮ஫จ׬ྃը໘ʯͳͲ
    w ֎෦αʔϏε͕ൃߦͨ͠ΠϕϯτΛड͚औΔ

    ΤϯυϙΠϯτ 8FCIPPL

    w ֎෦αʔϏε͔ΒΞΫηεՄೳͱ͢ΔͨΊ

    ެ։͍ͯ͠Δ͜ͱ͕લఏɻ୭Ͱ΋ΞΫηεՄೳ

    View full-size slide


  24. ੬ऑϙΠϯτ΁ͷରࡦ

    View full-size slide

  25. ੬ऑϙΠϯτ΁ͷରࡦᶃ
    ૝ఆ͢Δૹ৴ݩͰ͋Δ͜ͱΛݕূ͢Δ

    View full-size slide

  26. ૹ৴ݩݕূΛར༻ͨ͠ભҠ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ஫จ׬ྃ͢ΔલʹɺϦΫΤετݩ͕
    ૝ఆͨ͠ૹ৴ݩͰ͋Δ͔֬ೝ

    View full-size slide

  27. ѱҙ͋ΔϢʔβʔͷૢ࡞
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ᶃ஫จड෇ঢ়ଶ·ͰਐΊΔ
    ᶄ֎෦αʔϏε͔ΒͷϦΫΤετͱ
    ِ૷ͯ͠஫จ׬ྃঢ়ଶʹ͢Δ

    View full-size slide

  28. ѱҙ͋ΔϢʔβʔͷૢ࡞ΛϒϩοΫ
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ᶃ஫จड෇ঢ়ଶ·ͰਐΊΔ
    ஫จ׬ྃ͢ΔલʹɺϦΫΤετݩ͕
    ૝ఆͨ͠ૹ৴ݩͰ͋Δ͔֬ೝ
    ૝ఆ֎ͳΒϒϩοΫ
    ×
    ᶄ֎෦αʔϏε͔ΒͷϦΫΤετͱ
    ِ૷ͯ͠஫จ׬ྃঢ়ଶʹ͢Δ

    View full-size slide


  29. w ֎෦αʔϏεΛಛఆͰ͖Δ৘ใ͔Βݕূ͢Δ
    w *1ΞυϨεɺϦϑΝϥͳͲ
    w ͋Δ͍͸ɺ֎෦αʔϏε͕ఏڙ͢Δݕূํ๏Λར༻
    ͢Δ
    w ྫʣ4USJQF͕ఏڙ͢Δݕূํ๏
    w 8FCIPPLͷॺ໊Λ֬ೝ͢Δ
    ૝ఆ͢Δૹ৴ݩͰ͋Δ͜ͱΛݕূ͢Δํ๏
    https://stripe.com/docs/webhooks/signatures

    View full-size slide

  30. ੬ऑϙΠϯτ΁ͷରࡦᶄ
    ೚ҙͷύϥϝʔλΛ࢖ͬͯݕূ͢Δ

    View full-size slide

  31. ೚ҙͷύϥϝʔλΛ࢖ͬͯݕূ͢Δ৔߹ͷભҠ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ᶃ೚ҙύϥϝʔλΛϥϯμϜͰੜ੒ɺอ࣋͢Δ

    View full-size slide


  32. ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ᶃ೚ҙύϥϝʔλΛϥϯμϜͰੜ੒ɺอ࣋͢Δ
    ೚ҙͷύϥϝʔλΛ࢖ͬͯݕূ͢Δ৔߹ͷભҠ
    ᶄ஫จ׬ྃભҠઌʹɺੜ੒ͨ͠ύϥϝʔλ΋ૹΔΑ͏
    ʹઃఆ͢Δ

    View full-size slide


  33. ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ᶅอ࣋ͨ͠ύϥϝʔλͱɺ
    ֎෦αʔϏε͔ΒͷύϥϝʔλΛর߹
    Ұக͍ͯ͠Ε͹0,
    ᶃ೚ҙύϥϝʔλΛϥϯμϜͰੜ੒ɺอ࣋͢Δ
    ᶄ஫จ׬ྃભҠઌʹɺੜ੒ͨ͠ύϥϝʔλ΋ૹΔΑ͏
    ʹઃఆ͢Δ
    ೚ҙͷύϥϝʔλΛ࢖ͬͯݕূ͢Δ৔߹ͷભҠ

    View full-size slide

  34. ѱҙ͋ΔϢʔβʔͷૢ࡞
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ᶃ஫จड෇ঢ়ଶ·ͰਐΊΔ

    View full-size slide

  35. ѱҙ͋ΔϢʔβʔͷૢ࡞
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ᶃ஫จड෇ঢ়ଶ·ͰਐΊΔ
    ᶃͷૢ࡞ͷࡍʹ೚ҙύϥϝʔλΛϥϯμϜͰੜ੒ɺ
    อ࣋͢Δ

    View full-size slide

  36. ѱҙ͋ΔϢʔβʔͷૢ࡞
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ᶃ஫จड෇ঢ়ଶ·ͰਐΊΔ
    ᶃͷૢ࡞ͷࡍʹ೚ҙύϥϝʔλΛϥϯμϜͰੜ੒ɺ
    อ࣋͢Δ
    ᶄ֎෦αʔϏε͔ΒͷϦΫΤετͱ
    ِ૷ͯ͠஫จ׬ྃঢ়ଶʹ͢Δ

    View full-size slide

  37. ஫จʹ࢖͏ࢧ෷͍
    ํ๏Λબ୒ͯ͠
    ஫จΛड෇
    ᶃͷૢ࡞ͷࡍʹ೚ҙύϥϝʔλΛϥϯμϜͰੜ੒ɺ
    อ࣋͢Δ
    ѱҙ͋ΔϢʔβʔͷૢ࡞ΛϒϩοΫ
    ຊਓೝূ
    ར༻͢ΔΧʔυ
    ͳͲೖྗ
    ஫จ׬ྃ
    ᶃ஫จड෇ঢ়ଶ·ͰਐΊΔ
    อ͓͍࣋ͯͨ͠ύϥϝʔλͱɺِ૷ͨ͠ϦΫΤετͷ
    ύϥϝʔλΛൺֱɻҰகͯ͠ͳ͚Ε͹ϒϩοΫ
    ×
    ᶄ֎෦αʔϏε͔ΒͷϦΫΤετͱ
    ِ૷ͯ͠஫จ׬ྃঢ়ଶʹ͢Δ

    View full-size slide

  38. ೚ҙͷύϥϝʔλΛ࢖ͬͯݕূ͢ΔରࡦͷޮՌ
    w $43'ͷରࡦͱͯ͠΋༗ޮ
    w ҆શͳ΢ΣϒαΠτͷ࡞Γํ$43'ʢΫϩ
    εαΠτɾϦΫΤετɾϑΥʔδΣϦʣɿ*1"ಠ
    ཱߦ੓๏ਓ৘ใॲཧਪਐػߏ
    https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_6.html

    View full-size slide

  39. ·ͱΊ
    ֎෦ܾࡁαʔϏεΛؒʹڬΉܾࡁͷ৔߹


    ܾࡁ݁ՌͷडऔΛ୭Ͱ΋࣮ߦͰ͖ͳ͍Α͏ʹ


    ରࡦ͠·͠ΐ͏

    View full-size slide