RIPSとは2019-07-06■7payのセキュリティ審査って何をやってたんだろうかここ連日騒がれている7pay。パスワードリセットリンク送付先のメールアドレスに対して設計上の問題で脆弱性が発覚して大変な事態に発展しています。昨日の会見では社長のITリテラシ不足が露呈したり、サービス継続が表明されたりして、いわゆる「祭」の様相を呈しています。会見内で「セキュリティー審査を実施した」と明言がされました。https://www.asahi.com/articles/ASM745HHHM74ULFA01Y.htmlセキュリティー審査を実施していたにも関わらず、何故今回の問題が見逃されたのか。非常に稚拙な推測ですが個人的に考えられる可能性をまとめてみようかなと思います。セキュリティー審査とはその名の通り、サービスローンチ前に実施する、脆弱性や問題がないかの審査の事・・・だと解釈しました。「審査」というとISMS辺りを連想しちゃいますね。一般的には脆弱性診断とかセキュリティ検査とも呼ばれています。私はこちらの呼び方の方がしっくりきます。以後脆弱性診断と記載していきます。「実施した」とはいっても、どういった内容を実施したかはわかりません。いうと、以下のような項目があげられると思います。抜け漏れあると思うけど、大体どこのセキュリティベンダーでも上記のような項目を診断しているんじゃないかなあと思います。詳しくは各ベンダの診断内容のページを見てみると更に詳しく載っています。LAC、CyberDefence、NRIセキュア、ブロードバンドセキュリティ、スプラウトなど。今回の脆弱性診断が外部ベンダで実施されたのか、内部で実施されたのかはわかりません。以下、推測をつらつら書いていきます。外部ベンダ発注したが、コスト削減のために対象を削りまくった脆弱性診断はモノによりますが、診断内容をマシマシにするとエラい額が掛かります。Webサービス診断は見積もり方法が各社違ったり、ツールを使うか手動とするかによって金額も大きく変わってきます。数量計算もベンダによってまちまちです。ページ単位であったり、画面遷移単位であったり、SPAであればAPI単位であったり、複合での計算だったりします。お願いすれば見積もり時にステージング環境で動いているWebサービスをクロールして、各ページの評価を付けてくれるベンダもあります。規模と見積もり内容にもよりますが、100~200万といったところでしょうか。スマホアプリ診断は一本幾らという場合が多いような気がしますね。相場としては50万~100万程度でしょうか。プラットフォーム診断も内容によるとは思いますが、大体100万くらいかなあと思います。これ以外にWebSocketを使っていたり、別のサービスと連携していたりするとその辺りの通信も含まれてくるのでまた金額は上がる可能性もあります。Webサービス200万、スマホアプリ(iOS、Android)100万*2、プラットフォーム100万とすると、500万円掛かるわけですね。脆弱性診断をするだけでこれだけのお金が吹っ飛んでしまうわけです。これをそのまま発注するかと言われると、多分しないでしょう。セキュリティはお金が掛かる割にリターンが少なく、目に見える結果が必ず出てくるとも限りません。経営層は中々首を縦には振らないでしょう。会見でも明らかになったことですが、社長のITリテラシはあまり高そうにありません。なると脆弱性診断の稟議を通すのは中々容易ではなかった可能性もありそうです。7月1日に間に合わせたようなところもあるっぽい(?)ので、開発側に資金を全振りしていた可能性もあり、診断に費用を掛けられなかったのかもしれません。いずれにせよ、全く実施しないのはまずいし重要そうな部分だけピックアップして実施しましょうという話にはなるでしょう。削れるものをあげていってみましょう。iOS用スマホアプリは実施しなくても良いかもしれません。iOS上で動くアプリは確かサンドボックス構造になっているはずで、ローカルに何かしらのデータを持っていても外部からのアクセスは基本不可であるためです。そもそもスマホアプリ自体不要かもしれません。7payのサービスへのアクセス用インターフェイスとしてのアプリしか提供していないのであれば、取り扱うデータはほとんどないと考えられるためです。そのため、スマホアプリAndroidのみ、もしくは両方実施しなくても大きな問題は発生しないのではないかと思います。・・・この辺り私の勘違いというか、「最優先でやるべきだろjk」といった考えがあれば指摘ください。プラットフォームも、ベンダによりますが実施しなくとも良いとも思います。ベンダの説明でも、主にポートスキャンをして、空いているポートに対してtelnetで色々したりするといった説明がなされたと思います。Webサービスなら443と、空いていても80くらいしか外部には公開していないので、これは実施しないという選択をしても不思議ではないと思います。サーバのコンフィグも、DocumentRootがおかしいとか致命的な設定ミスをしていない限りは見てもらう必要はないでしょう。そもそも構築手順等はノウハウもあるでしょうし、わざわざ見てもらう必要性はほとんどないわけです。ワイドショーでは「不正は海外IPからで、国外からのアクセスを許可していた」事が取り上げられていましたが、例えプラットフォーム診断をしていても、この辺りは指摘されなかった可能性があります。実施していればもしかしたら備考レベルでの注意や、口頭で「国内のみに留めておいた方がいいかも」といったことは伝えられたかもしれませんが、「利便性」という観点から実行されることはなかったんじゃないかなと思います。Webサービスですが、ログイン・ログアウト処理は必須でしょう。パスワードリセットはどうでしょうか。ベンダに依頼するにあたってはここも診断対象としていたはずです。ところで今回の件では協力会社について様々な憶測が飛んでいますが、NRI説が結構人気みたいです。NRIにはNRIセキュアというセキュリティに特化した子会社が存在しています。脆弱性診断をするとなった場合、そこを使わないという手はあまり考えられません。そもそも発注時にそれを見越して診断費も開発の見積もりに含まれているのではないかと思います。セブン側が「脆弱性診断はこちら側で発注します」と言っていれば話は別です。NRIセキュアは診断費用が高いらしいので、コストダウンするために別ベンダに診断部分のみ発注する可能性はあります。別のベンダに発注したことで、抜け落ちた可能性はゼロではないかもしれません。NRIセキュアが実施する場合においても、「ここは抑えておいた方が良い」という機能毎やページ毎にランク付けした資料をセブン側に提出することと思われますが、どこを実施してどこを削るかの最終的な判断はセブンに委ねられます。考えられる事としてはパスワードリセットの処理を診断対象外としたことですが・・・そうする理由もわからないので、うーん・・・。して対象を削りまくることで100万程度、もしくはそれ以下まで診断費用を抑えることができます。特定のベンダと、ツールを用いた定期診断を実施してもらう契約をしていたこの可能性もあるのかなと思います。365というサービスは自動での定期診断が可能なようです。ライセンスやどういった動き方をするのかはいまいちわかりませんが、ベンダに逐次依頼する脆弱性診断よりかは安く済むはずです。自動診断となると設計上の不備やそれに伴う問題は検出できないはずです。ツールの手が届く範囲での、XSSやPoC、ヘッダの有無など、ごく一般的な脆弱性診断になると考えられます。手軽そうで安価っぽいなので、これで済ませていても不思議ではないです。セブン内部でツールを用いた診断を実施していた脆弱性診断ツールはOSSのものもあればベンダが販売していたり、SaaSで提供しているものもあります。ZAPやw3afがWebサービスの診断が可能です。phpcs-security-auditなど、ソースコードを解析し脆弱な箇所がないかを診断するものもあります。ちなみにWebサービスに対する診断を「DAST」、ソースコードに対する診断を「SAST」と言ったりします。有償のものとなると、DASTは先程のSecurityBlanket、AppScan、Nessus、Vex、VAddyが挙げられると思います。Securityなどでしょうか。上記のようなツールを用いて、セブン内で脆弱性診断を実施することでセキュリティの知見を高めたり、内部で完結させるための動きを取っていたかもしれません。いった動きは結構色んな組織で見受けられます。外部の手を借りずに診断ができれば、関係者間の調整も楽ですし、それと比べると費用も安く済みますからね。社内のエンジニアに任せる事になるため、片手間になってしまう可能性があります。ツールの使用方法についてのノウハウは溜まるかもしれませんが、それとセキュリティの知見が溜まるかどうかは別の問題としてあると思います。・・・とは言ってもセブンにはCSIRT部隊がちゃんとあるんですよね。して設置され、グループ企業に対してサービスを提供しています。組織内に専任要員を以て設置され、インシデント発生時の対応だけでなく、インシデント発生の未然防止にも注力しています。グループ内で発生するインシデントに対する未然防止のための調査・分析とリスク情報の共有、ならびにインシデント対応活動を行なっています。CSIRTが動いてセキュリティ関連のチェックをしていたのではないかと思います。「情報システム部門」とはありますが。どこかに所属しているんじゃないかと思われます。日本CSIRT協議会にも名を連ねているわけですし、CSIRTメンバーは専任要因ともありますし、セキュリティ関連の技術知識は十二分にあると思うんですよね。内部でツールを使って実施していたからといって、こんな重大な不備を見逃すというのはちょっと考え辛いなあ・・・と思います。会見内で言われた二段階認証も検討事項に上がらなかったのかなあ・・・と。今でも機能しているのであれば、の話ではありますが。これを書いている最中に気付いたのですが以下のようなリリースが出ていたんですね。https://www.7pay.co.jp/news/news_20190705_01.pdfこれを見ると内部のCSIRTが機能していなかったか、力不足と判断されたかどちらかになるのかな・・・と。実際はどうだかわかりませんけど・・・。診断を実施したがどこかで抜け落ちたこれも有り得る話かなあ・・・と。関係者が多いと情報共有にも一苦労です。開発やベンダやCSIRT部隊が情報共有したとしても、POが忘れていたとか、伝えたつもりが曖昧な表現で伝わっていなかったとか・・・。ベンダが実施して指摘事項として伝えていたけど、いつの間にやら抜け落ちていてそのままサービスイン・・・というのもシナリオとしては考えられますね。問題を認識していたが上申しなかった/できなかった7payは社内的にも一大プロジェクトだったはずで、スケジュールも決まっている場合、余計なことを物申すと手戻りや対応に時間を取られることになります。いった事を許さない空気が出来上がっていると、まあ中々上には上がってきづらいです。これも十分にありえる話ですかね。ないといいんですけど。セキュリティー審査自体が、情報セキュリティ基本方針と個人情報保護方針に沿った内容かどうかを確かめただけだったどうしても『審査』という言葉に引っかかっています。『検査』ならまだわかるんですが。そこで思ったのですが、情報セキュリティ基本方針と個人情報保護方針を元にしたチェックリストのようなものがセブン内にあって、それを埋めた・・・みたいなことを「セキュリティー審査」と言っていたりするのかなと思ってしまったんですね。いうことで、ISMSやPMS等で慣れ親しんだ単語である『審査』を使っただけかもしれません。そもそもそれで終わらせるなんて事ないでしょう。セブン程の企業が・・・。そもそもやってない大穴ですね。いやこれはないと思いますよ。あったら大問題じゃないですか・・・。いうわけで、なんとなく「こうだったりして・・・」みたいな事をつらつら書いてみました。いえばomni7で以下のお知らせが上がっていましたね。https://www.omni7.jp/general/static/info190705『定期的にパスワードを変更いただきますようお願い申し上げます。CSIRTはもしかしたらもう機能していないのかもしれないですね。わかりやすい対策を提示しろと言われたのかもしれません。それなら仕方ないんですけど。ついでに時間経ってるけど追記します。誰も見ないでしょうけど。「人のつくりしもの」だよ監査なんて取り揃えた書類通りになっているかどうかなので、監査受けているからセキュリティ的に大丈夫ってことじゃないよそんなに監査が万能なら監査できるくらいの人が作り出せば完璧になるはずだろちゃんと読んでいただけましたか?全文通して私の主張が「監査をしっかりやれば防げた」という意味と捉えられているのでしょうか。そんなに分かりづらい文章を書いた覚えもないのですが・・・。上でも記載していますが、私は今回の7payの「セキュリティ審査」は、「脆弱性や問題がないかの審査の事」、つまり「脆弱性診断」を指していると仮定して本エントリを書いています。いう意味で、ここで私が指している「審査」と貴方が指している「監査」は似て非なるものです。字面は少し似ていますがね。監査は貴方の記載する通り「ある事象・対象に関し、遵守すべき法令や社内規程などの規準に照らして、業務や成果物がそれらに則っているかどうかの証拠を収集し、その証拠に基づいて、監査対象の有効性を利害関係者に合理的に保証すること」です。