ダイコク@三重県ブロガーです。
先日、インターネット界を震撼させる出来事が発生しました。「不正アクセスによってクレジットカード情報72万件が流出」
その原因はオープンソースコードのバグ(穴)を突かれたことによる不正アクセス。
プログラマでもあるダイコクにとってはこの記事の内容は恐ろしすぎる。そして凡ミス(というか、仕様不備かな?)によってさらなる悲劇をもたらした。それなのになぜ「危険要因が含まれるオープンソースを利用し続けるのか?」について解説しようと思う
今回の出来事を一旦振り返ってみる。
今回の出来事の詳細は以下の記事を参照。
要約すると
- Apache Struts2の脆弱性を突かれた不正アクセスが発生
- 被害サイト1:東京都税クレジットカード支払サイト
- 被害サイト2:独立行政法人住宅金融支援機構の団体信用生命保険特約料のクレジットカード支払いサイト
- およそ70万件の情報流出の可能性
- クレジットカード番号は暗号化処理されている
- 住宅金融支援機構のサイトではルールでデータ保持してはいけないセキュリティコードも保持していたことが判明(これも流出した可能性)
というトラブルが発生したんです。聞いているだけで超怖い。
とりあえず、要約の最後に記載したのは「運営しているGMO-PGがけしからん」で結論付けるとして(プログラムが下請けが作ったのかどうか?分かりませんが最終的には依頼元の受け入れテスト不足が原因として)その他の今回発生した脆弱性に関しては「ある意味仕方ない」と思ってしまうのです。
今回の情報流出の出来事が仕方ないと思える理由
今回の情報流出はある意味「仕方ない」と思える理由がいくつかある。
まずは時系列で出来事を整理してみると、恐ろしく手際が良いことがわかる。
- 2017/3/6にApache Struts2の脆弱性が公開。パッチ(脆弱性を防ぐプログラム)の配布を開始(英語サイト)
- 2017/3/7に脆弱性を悪用した攻撃が増加傾向にあるとセキュリティ会社がアナウンス
- 2017/3/8にIPA(情報処理推進機構)が脆弱性対策のアナウンス
- 2017/3/9にGMO-PGが自社プログラムの精査・不正アクセスが確認される
- その後の調査で不正プログラムが仕掛けられたのは2017/3/8未明と判明
公式アナウンスから「わずか2日」で被害にあったことが分かったんです。しかも英語サイトでのアナウンス。しかも普段はみないであろうサイトで。
実質的に日本におけるセキュリティ情報等を提供するIPAがアナウンスした時には既に手遅れだった訳です。
これ、自社で発生したら防げますか?結構難しいと思うんですよね。
パッチを当てるだけにしても、社内で動作検証してからじゃないと導入できないルールのところもあるだろうし・・・社内検証で1日消費とかザラにある。
Apache Struts2はオープンソースのフレームワーク(横文字ばっかり)
そもそも「Apache Struts2」とはなんぞや?って所を説明すると、Webプログラムでよく利用されている「Java言語」で利用するフレームワークです。フレームワークっていうのは簡単に言えば「パーツ群」
本来、1〜10まで自分でプログラミングしなければいけない所をイメージ的には7くらいまでフレームワークが作ってくれる。あとはフレームワークのルールに従ってプログラミングすればWebプログラムが出来るっていう代物。
Struts2というフレームワークは業界標準(デファクトスタンダート)的なところがあります。JavaでWebプログラムと言えばStruts2をフレームワークとして利用する。これがオープンソースとして無料提供されているのです。
オープンソースというのは「プログラムの全容が世界中に公開されている」ソースコードのこと。中がどのようにプログラミングされていて動いているのか?を世界中に公開しているのです。
それでもオープンソースを使い続ける理由
簡単に言えば今回のように脆弱性が発見されてアナウンスされるとオープンソース故に「ソースコードを解析して脆弱性を突いて不正侵入するプログラム」を悪い人達は作り、世界中にアタックをかけるのです。
ある意味、オープンソースだから出来る悪さでもあります。
「じゃあ、オープンソースなんて使わなければいいじゃん?」って素人目では考えてしまうのですが、そうではない。
オープンソースというのは「悪い人たち」だけではなく「善良な人たち」の目にもさらされている。この人達が脆弱性を見つけてくれるだけでなく、それを防ぐ方法まで考えてくれるというのが大きなポイント。
仮にオープンソースであるものを使わずに作ったサイトを作ったとしたら、そのサイトの脆弱性は誰が分かりますか?開発者が退職していたら?下手したらだれも知らない。
ハッカーがサイトの脆弱性を発見して仮に不正プログラムを置いたとしたらそれこそ誰も解明できない。システムが役目を終えるまで不正プログラムが稼働することだってある。
だからオープンソースという概念は大切なのです。
議論は「侵入される」ことよりも「データを守ること」の方が大切
昨今、「不正アクセスにより侵入された」という報道もチラホラ見ますが、これは今回のケースのような防ぐことが非常に難しいケースもあると思う。
だから、「不正アクセスされない」ことも大切ですが、「不正アクセスされても問題ない」システム作りが大切になってくる。
データを一箇所に集めて保管しておくのではなく、分けて保管してみたり、暗号化してみたり、一定時間が過ぎると見れなくなる仕組みにしてみたり・・・
これから発展が期待されているIoTなんて今とは比べ物にならないくらいのデータを扱うようになる。それらのデータを適正に管理・守っていくスキルが必要になってきますね。
情報セキュリティ白書2016 | ||||
|