Peingや宅ふぁいる便のセキュリティ問題から考えるシステム開発の難しさ


IT関連のセキュリティ問題は定期的にニュースとなって世間の話題となります。最近でも2つの大きなセキュリティ問題が話題となっています。

そのうちの一つは質問箱サービスのPeingでユーザーのTwitterトークンが丸見えになっているというもの。これよりPeingをTwitter連携させていると勝手にツイートを投稿されてしまう可能性があるなどのセキュリティ問題があります。

もう一つはファイル送信サービスの宅ふぁいる便で不正アクセスによるユーザー情報が流出したというもの。これにより宅ふぁいる便と同じID・パスワードを使っていると他サービスでアカウントが乗っ取られるリスクがあります。

上記2つのサービスでなぜこの問題が発生してしまったのかについては続報を待ちたいと思いますが、弊社も含めましてどの企業にとってもセキュリティ問題は他人事ではないでしょう。油断していれば(油断していなくても)次は我が身の可能性は常にあります。

システム開発に携わる身としまして、システムを運用する企業が考えておかなければならないことをまとめてみました。

今回のセキュリティ問題はあまりにもずさんだったと言わざるを得ない

システム開発は人間が行うものですからミスはつきものです。人間が作るものである以上はバグをゼロにすることは不可能です。もちろんバグが多すぎることは問題ですが、バグを完全にゼロにしろという要求は論理的に考えても理不尽な要求です。

では今回のPeingと宅ふぁいる便の問題はどうだったかというと、一般的な普通の開発能力のある専門企業が開発していれば発生することはまずあり得ないレベルの問題でした。

PeingではTwitterと連携するためのトークンが流出してしまっていたわけですが、これはパスワードが他から見えてしまっているみたいなものですし、家の鍵をオープンにしてみんなに配ってしまったようなものです。

通常の能力を持ったシステム開発を専門とするエンジニアであれば、このような重量な情報を外部に晒してしまうような実装をすることはありませんし、万が一そういう実装をしてしまったとしても、普通であれば開発途中のレビューや試験で必ずチェックして検出しますので、開発完了時までこのような状態で開発が進んでしまうことは考えられません。

宅ファイル便では情報が漏洩してしまったことが直接の問題ですが、パスワードが暗号化もハッシュ化もされていない状態だったことで更に事態が深刻になりました。パスワードをハッシュ化する程度のことは新人のエンジニアでも普通に行うような基礎の基礎です。設計段階の話ですし、万が一平文のままパスワードをデータベースに保存していたらレビューを通過できません。

普通のシステムではパスワードやクレジットカード番号等の重要な情報は暗号化やハッシュ化してデータが保存されてますので、万が一情報が流出してしまったとしても人間が読み取れない状態になっています。情報が流出してしまったとしてもそのデータを悪用されにくいようにそのような対策を行います。

しかし今回は流出したパスワードが暗号化もハッシュ化もされていない、普通に人間が見て読み取れる状態となっていました。そのため、流出したメールアドレスとパスワードを使って、全く別のサービスに総当たりでログインされてしまう可能性があります。同じメールアドレスとパスワードを使いまわしていて二段階認証も使っていない人は他サービスのアカウントを乗っ取られてしまうリスクがあります。

システムは見かけ上で動いていればOKでは決してない

当たり前ですがシステム開発は見かけ上動いていれば良いわけではありません。一見すると普通に動いているように見えても、裏側で深刻な問題が発生していると今回のようなセキュリティ問題にもなりかねません。

システム開発や運用を軽視している会社だと、見かけ上動いていればOKとしてしまうような会社もあるかもしれませんが、そういうことをしているといつか取り返しのつかない事態になってしまうかもしれません。

弊社では他社が開発したシステムの保守移管を承ることもたくさんあるのですが、初期解析の時に今回の宅ふぁいる便ようにパスワードが平文で保存されてしまっているようなずさんなシステムを見かけることは時々あります。

WordPressのような便利で優秀なシステムもありますが、こういったものもしっかりとセキュリティ対策しておかなければ乗っ取りなどの問題が発生するリスクは十分にあります。素人が何の知識もなしに運用するには中々ハードルは高いでしょう。

セキュリティ対策でやらなければならないことは本当に色々あります。アプリケーションだけではなく、サーバーのセキュリティアップデートも定期的に行うべきですが、この辺りの対策を行っていない企業は結構あります。

こうした対応は素人が表側から見ただけではわからないので、 自社のシステムが本当に大丈夫か不安を感じるようであれば、一度専門の会社に依頼して見てもらった方が良いでしょう。

「とりあえず動くもの」を作る会社はたくさんある

弊社では他社が開発したシステムの保守移管を承ることも多いのでよくわかるのですが、システム開発をサービスとして提供しておきながら「とりあえず動くもの」を作って提供してしまうような会社も世の中にはたくさんあります。

安いからという理由だけでどんなスキルや実績があるかもわからないフリーランスの人に依頼してる企業は本当に大丈夫でしょうか。クラウドソーシングのようなところには新人に毛が生えたようなレベルのフリーランスもたくさんいます。

最近は「3ヶ月でフリーランスになれる」みたいな無責任なことを言うプログラミングスクールも見かけますね。確かにフリーランスには誰でもなれますから嘘ではないかもしれませんが、そういう能力も実績も不十分なフリーランスに自社の重要なシステム開発の依頼をしてしまうことのリスクはきちんと考えておいた方が良いです。

法人でもシステム開発が得意ではない会社はたくさんあります。SES企業は実質派遣会社みたいなものなので、自分達だけで一つのシステムを問題なく構築していくノウハウのない会社はたくさんあります。デザイン会社だとシステムのことはよくわからないという会社も普通にあります。

自社では開発せずに、システム開発の仕事を下請けに丸投げする会社もたくさんあります。そういう会社に発注する場合、下請け企業の品質はしっかり保証されているでしょうか。

自社のシステムを社内で開発している会社の中にも「システムなんてインターンに作らせておけばいい」みたいなことを平気で言う経営者も残念ながらあります。インターンそのものがダメというわけではありませんが、そのようなシステムを軽視するスタンスで本当にきちんとしたシステムを構築できるのかは甚だ疑問です。

取り返しのつかないことになる前に、信頼できる相手にシステムの構築や保守を依頼すべき

システムを内製するにしても外注するにしても、外注先が法人であってもフリーランスであっても、システム開発を依頼する相手が本当に信頼できる相手であるかどうかは慎重に見極めてください。

システム開発に対する十分なノウハウや実績のない相手に依頼してしまえば、見かけ上は動いているシステムを作れたとしても、知らないうちに今回のPeingや宅ふぁいる便のような問題を抱えてしまうことにもなりかねません。

システムの開発や運用をあまく見るべきではありません。ましてや価格「だけ」で依頼先を判断すべきではありません。取り返しの付かないことになる前に、信頼に足る相手に相談されることを強くおすすめします。