2019年7月1日にサービス開始して間も無く、不正利用が明らかになったことで世間を騒がせている決済サービス「7pay(セブンペイ)」。また新たなニュースが飛び交っており、なんとオムニ7アプリのソースコードが流出していたことが明らかになりました。
7pay(セブンペイ)の不正利用事件とは?
7payで発生した一連の不正利用事件については、以前に記事で紹介しました。
しかし、残念ながら悲報は続きます。
オムニ7アプリのソースコードがGitHub上で公開されていた!!
セブン&アイ・ホールディングスから提供されているスマートフォンアプリ「オムニ7アプリ」とみられるソースコードが2019年7月中旬までGitHubで誰でも見られる状態だったということです。オムニ7アプリといえば7payの本サービス利用のための専用アプリケーションで、セブン&アイ・ホールディングスが満を持して世の中に送り出したものでした。現在は公開が停止されているものの、事実上のソースコード流出といえます。
GitHubといえばシステムの肝でなるプログラムのソースコードを管理するためのクラウド型のアプリケーションです。一般的に、システム開発会社では、gitと呼ばれるソースコードのバージョンを管理するための仕組みが必要となります。本来プログラムという超重要情報は適切に管理することが求められます。GitHubはgitを行うことが可能で便利なのですが、設定を誤ると誰でも見れてしまうなど注意が必要です。
システムにとってプログラムとは、例えてみれば秘密の伝承書あるいは宝の地図とも言えるでしょう。まして7payのように決済サービスのシステムともなれば、解析することでセキュリティの欠陥を見つけて悪用することも可能となります。
このようにオムニ7アプリにとって肝となるソースコードは、なぜ流出するに至ったのでしょうか。
ソースコード流出は偶然見つかった
今回のソースコード流出を発見したのは、首都圏のIT企業に勤めている会社員の方です。発見者は、payでの不正利用の原因ともなった「セブン-イレブンアプリ」の通信解析をたまたま行なっていたようです。
世間での報道に先立ち、「外部ID連携に設計上の問題がある」という問題点はITエンジニアの界隈で噂になっていました。発見者の方は、偶然、解析中に表示されたオムニ7の「APIサーバー」の名前でGitHubの検索を試みたとのことです。
ソースコードの中身の全てまでは保存していなかったため、これがオムニ7アプリそのものだと断言することはできません。しかし、iOS向けのソースコードとなっていること、コードの一部に開発会社らしきメールアドレスが記述されていること、作られているフォルダの名前などを総合的に見てみると、少なくてもオムニ7アプリの一部の機能であるといえます。
このソースコードは、少なくとも7月10日ごろまではGitHub上で誰でも見れる状態となっていました。ファイルの更新時刻を見てみると、このソースコードはGitHub上で2015年5月〜7月頃に公開されたはじめたもので、それ以降は更新されることなく、削除される2019年7月10日付近まで公開状態が続いていた可能性が高いようです。
企業はソースコード流出に気づいていた?
今回のソースコード漏洩については、大変興味深い動きがあったことも明らかになっています。むしろ、この動きこそが、今回の流出は注目するに値する重大な事象であるということを印象づけます。
発見者が見つけられたソースコード(便宜的にソースコード①とします)が削除されて以降も、同様にオムニ7のAPIサーバーの名前で検索すると、別のリポジトリ(保存場所)がヒットする状況となっていました。そこには消されたソースコード①よりもさらに古い、開発の初期段階にあると思われるソースコード(ソースコード②としましょう)も置かれていました。ソースコード①と同様、ソースコード②も“iからはじまるアカウント”を使用していることが確認できます。
ソースコード②については、日本企業がアメリカのデジタルミレニアム著作権法(DMCA)に基づく申し立てを行い、その後削除に至っています。
英語で記載された申し立て内容として、以下の内容が書かれています。
- このソースコードの権利者は「Seven & i Net Media Co.,Ltd.」である
- オリジナルのソースコードは7月11日に削除されたが、そこから複製されたソースコード(ソースコード②にあたる)が見つかった
- 複製された「関連するソースコード」の権利者が我々であることは、「omniMbaas」から始まる一連の4つのソースコードの権利表記で証明できる
- DMCAに基づく申請者はNTT DATA MSE社である
株式会社NTT DATA MSE社は天下のNTTデータのグループ会社にあたります。元々はパナソニックグループの企業でしたが、2008年秋頃にNTTデータの資本が最多となり、実質的にNTTデータの傘下となりました。
漏出したソースコードにはセキュリティの肝となる「外部IDを使ったログインに必要なトークンの直書き」も含まれており、この状況を例えてみれば「名前を名乗れば誰でも合鍵を作れる貸金庫」あるいは「扉の前に合鍵がぶらさがっている貸金庫」とでもいえましょう。
ソースコード流出の経緯
今回の流出はGitHubの公開リポジトリにソースコードが置かれていたことで発生しました。GitHubにはプライベートレポジトリ(一般には公開されない)や、お金を払えばエンタープライズとして非公開のレポジトリを利用することで安全にソースコードを管理することも可能です。また、日本のシステム開発会社では社内に専用サーバを立て、ソースコードを管理することが一般的です。にもかかわらず、なぜ今回のような流出が起きてしまったのでしょうか。
根本的には、開発を下請けに依頼する業界構造が原因だと考えます。NTT DATA MSE社ほどの企業であれば、それまでの開発経験からソースコードを安全に管理する方法を確立していることでしょう。しかし、日本のシステム開発では、さらに外部へ開発を委託したり、別の企業から人員を集めたりしています。その結果、NTT DATA MSE社が直接認知していないところでGitHubを用いたソースコード管理が行なわれ、公開レポジトリが使われてしまったのではないでしょうか。
現在のところ、今回の事象に関して公式発表はまだ行なわれおらず、今後の情報開示を待ちたいと思います。