7payをめぐる脆弱性の懸念が解決しないまま、不正使用事件発覚から約3週間が経った。この間、実行犯とみられる複数の中国籍の容疑者が逮捕され、また外部ID連携の実装の不備から、セキュリティーの懸念を指摘する報道が続いている。
セブン&アイHDは7月中を目処に、今後の対応策などを公表する予定だ。
しかしここへきて、これまでとは異なる、別の問題が浮上してきた。
7payにも関連する、ECアプリ「オムニ7」の設計図にあたるソースコードが漏洩していた可能性がある。オムニ7アプリはセブン-イレブンアプリとは別アプリだが、ログインまわりの設計は非常に似通っているとみる専門家もいる。
事実であれば、アプリ開発の管理体制、アプリ自体やサービスのセキュリティーに関するリスクの有無についても、一層の警戒が必要になる可能性がある。
「オムニ7アプリ」のソースコードがGitHub上で公開されていた?
「7pay問題に関連すると思われる、プログラムのソースコードが漏洩している可能性があります」
7月上旬のある日、首都圏のIT企業につとめるプログラマーのユースケさんは、そう言ってソースコードの実物を取材班に見せた。
ユースケさんがこの問題に気づいたのは、7月16日の記事のタロウさんと同様にセブン-イレブンアプリの通信解析をしていたからだ。
外部ID連携に設計上の問題があるのでは、との指摘は、報道が始まる以前から一部のITエンジニアらの間で噂になっていた。
ユースケさんもそんなうちの一人だった。しかし、他の人と違ったのは通信解析を試す中で偶然、解析中に表示されたオムニ7の「APIサーバー」の名前を、GitHubで検索してみようと思ったことだった。GitHubは開発者の間で一般的に使われている開発支援サービスプラットフォームだ。
ユースケさんによると、このソースコードは、少なくとも7月10日ごろまではGitHub上に存在した。一目見て「今回の問題に関連する重要な情報だ」と感じたユースケさんは、事前にGitHubのスクリーンショットを残していた。
同ソースコードは、その週のうちに削除されている。このソースコードをアップロードしたと思われるのは、“iからはじまる7文字のアカウント”の人物だ。
ユースケさん自身はソースコードの内容詳細までは解析していない。
しかし、ざっと見たところ、iOS向けのソースコードで、コードの一部に開発会社らしき複数のメールアドレスが書かれていること、またフォルダー名などからオムニ7アプリの一部のように見える、ということにも気づいた。
削除直前の足跡から、このソースコードはGitHub上で2015年5月〜7月頃に公開されたもので、それ以来更新されることなく、削除される2019年7月10日付近まで公開状態が続いていた可能性が高い、とユースケさんは言う。
事実であるならば、セキュリティーの観点から無視できない管理上の不手際ということになる。
別のソースコードを日本の企業が削除した痕跡
ソースコード漏洩の懸念については、別の気になる動きもあった。
ユースケさんが発見したソースコード(便宜的にソースコードAと呼称)が削除されて以降も、同様にオムニ7のAPIサーバーの名前で検索すると別のリポジトリ(保存場所)がヒットする状況だった。そこには、消えたソースコードAより古い、開発初期と思われるソースコード(ソースコードBと呼称)の断片があった。
以下は7pay取材班が、7月19日時点で公開状態にあったことを確認した画面のスクリーンショットだ。またソースコードBに関連するアカウントには、ソースコードAのときと同様に“iからはじまる7文字のアカウント”も含まれる。
ソースコードBにはその後、興味深い動きが起こる。
GitHub上で日本企業が、アメリカのデジタルミレニアム著作権法(DMCA)にからんだ申し立てをし、運営から受理され、その後削除にいたったのだ。そのログも公開されている。日付は現地時間の7月18日。
申し立て内容の要点をまとめると、
- このソースコードの権利者は「Seven & i Net Media Co.,Ltd.」である
- オリジナルのソースコードは7月11日に削除。しかし、そこからフォーク(複製)されたソースコードを発見した(ソースコードBのこと)
- フォークされた「関連するソースコード」の権利者が我々であることは、以下「omniMbaas〜〜〜」で始まる一連の4つのソースコードの権利表記で証明できる
- DMCAテイクダウンの申請者はNTT DATA MSE社
というものになる。
11日に削除したオリジナルのソースコードが「ソースコードA」を指すのかは不明だが、日付からするとユースケさんが見つけたものである可能性は高い。
数週間前から元のソースコードの調査を進めていた
実は、7pay取材班は、DMCAの申し立てが発覚する以前の数週間前の段階から、本件について調査を進めていた。
DMCAの申し立てが発覚する以前に、取材班が独自入手したソースコードについて、国際大学GLOCOM客員研究員の楠正憲氏に分析を依頼していた。楠氏はアプリ開発やセキュリティーに詳しい識者だ。
楠氏は当時、断定は避けながらも、セブンネットショッピングと関係があるソースコードである可能性が高いと語った。楠氏のコメント公開は今回が初めてだ。
楠氏のTwitterアカウントより。セキュリティーや技術系の論客としても定評がある。
「(ソースコードには)iOSデバイスへのプッシュ通知に必要な電子証明書が含まれており、(これを根拠として)セブンネットショッピングと関係あるソースコードである可能性が高い。
BaaS(※)に接続するSDK(※)に含まれるヘッダーファイルからは、(すでにBI Japanが報道している)外部IDログインに関して指摘されているのと同様の脆弱性を発見した。
リソースファイルに直接、“外部IDログインに必要なシークレット”などが直書きされている。
これらのファイルが長い期間、GitHub上で公開されていたのだとしたら、かなりずさんな管理が行われていたことが推察される」(楠氏)
また、今回のDMCAの申し立ての発覚を受け、楠氏は次のように改めてコメントを寄せた。
「スマートフォンのアプリ開発では、インターネットに接続していることを前提とした開発環境が多く、昔のようにインターネットから隔離することで秘密保持するのは難しくなった。
特にiOSの場合Macintoshで開発することが一般的で、開発会社のMacintosh向けデータ漏洩対策は、Windowsと比べて出遅れているケースがある。秘密保持できている前提ではなく、漏れることも想定した上で監視する必要があるのではないか」(同)
SDKとは:Software Development Kitの略。ソフトウェア開発キットのこと。
セブン&アイHDの回答
7pay取材班は、7月23日14時46分時点でセブン&アイHD広報に事実関係の問い合わせをしているが、24日午前5時30分時点では、回答が得られていない。
アプリの設計図そのものにあたるソースコードの漏洩は、攻撃者に脆弱性の分析を容易にするおそれがあると同時に、さまざまなセキュリティーリスクを誘引する原因になる。
事実であれば、どういった経緯でこうした不手際が起こったのか。GitHubの保存場所に関係する2つのアカウントは、関係者のものなのか。
セブン&アイHD広報の回答が得られ次第、情報は順次アップデートする予定だ。
(文・7pay取材班)