質問1:なぜ「本来保存されない」はずのセキュリティコードが保存されており、他の情報とともに漏えいしたのか?
回答は以下のとおり.冒頭に「申し訳ございません」という文言とか入ってたけど,内容の解釈には一切関係ないので抜いてある.
当社の不始末により平成24年3月7日〜平成25年4月23日にお申し込み頂きましたお客様の情報に関しては、保管をしておりましたが、平成25年4月23日22時に、セキュリティコードを含む全てのクレジットカード情報のお客様情報を保持するデータベースサーバーより削除しております。
理由としては、当社の決済スキーム上、申込時に決済はしておらず、帰国後の返却を受け請求額確定後に決済をしておりました。そのためにお申込時に入力して頂いたクレジット情報全てを保持しており、その情報を基に帰国後に決済を行っておりました。
本来は、入金確認後にセキュリティコードを含むすべてのクレジットカード情報を削除しなければならなかったのですが、それがデータベース上に残ってしまっておりました。
これ,ものすごいな.aikeさんの5月30日の日記でも触れられているけど,そもそも業務設計が間違っているというのはおそらく正しいとおもわれる.
オレはそれについては,おそらく正しいだろうと感じているが,それに加えて(おそらく)決済システムからカード情報を削除する部分にバグがあったか,当該情報の削除については運用対処を行うつもりが出来てなかったかのいずれかではないか(もしくは両方)と考えてたりする.
いずれにしても,PCI DSS的には全然ダメダメな感じがする.
PCI DSS徹底解説(NTTデータ先端技術)中のPCI DSSの概要 −PCI DSSの12要件を読み解く−には,カード会員データとセンシティブ認証データの定義がある.
一応書いておくと,以下のような感じ.
- カード会員データ
- カード番号
- 有効期限
- カード会員名
- サービスコード
- センシティブ認証データ
- 全磁気ストライプ
- CVC2/CVV2/CID(セキュリティコード)
- PIN/PINブロック
で,システムでの扱いは,以下のようにするよう取り決められている.
- カード会員データは業務上必要ならば保管はOKだが,適切な保護が必要
- センシティブ認証データは,オーソリ(与信)処理後の保管は一切禁止
PCI DSSが本来目指した方向を考慮するならば,センシティブ認証データがシステムで必要とされるタイミングは,オーソリ前後のごく短時間である,という前提があって,「オーソリ後の保管は一切禁止」としか書かれないのでは?と推測する(オーソリ前に延々何日も保持するような運用はそもそもあってはならない).
そういうことを考えると,(PCI DSS云々以前の)論外な業務フローだったのではないか?という意見には素直に賛同を示す.
それ以前に,SQLインジェクションでぞろりと抜かれて自分らで気付けず,外部からの指摘で外部機関に調査を依頼してという時点で,自分らがなんの備えもしてなかった,ということを言ってるようなもの.そもそも試験もしていたのかがものすごく疑問.
あと,さすがにこんなこと考えてないよなと思いたいが,否定する材料がないのが「オーソリ前のセンシティブ認証データの保持」に関すること.まさか「オーソリ後の保管は一切禁止」だけど,「オーソリ前だったらどんだけ持っててもOK」とか考えてたんではあるまいな….もしこれが事実だとしたら,お願いだからトンチで出し抜いた的なことをこういうシステムでやるのはやめてほしい….
いずれにしても,「カード会員データの暗号化無」「センシティブ認証データの削除無」「Webアプリのセキュリティ上の考慮無」という,「セキュリティ三ないシステム」だったのではないか?という疑念はどこまでいっても払拭出来ない….