SDK スプーフィングとオープン vs. クローズドソース テクノロジー

Paul H. Müller

2019年8月7日

SDKスプーフィングは、モバイル広告市場にその影響を急速に拡大させているアドフラウド手法の一つです。オープンソースSDKを提供しているAdjustにも、SDKスプーフィングのセキュリティ対策について数多くのご質問が寄せられています。この記事では、私たちAdjustがどのようにデータセキュリティに取り組んでいるか、また、オープンソースと比較して、クローズドソースSDKが決してスプーフィング攻撃に強い訳ではない理由を説明します。

SDKスプーフィングについての詳細はこちら(英語のみ)をお読みください。ここではSDKスプーフィングがどう実行されるかについて簡単に説明します。

はじめに、不正業者は、アトリビューションSDKが実装されたデバイスが送信するデータと、そのデータを受信するアプリ計測会社のサーバーを調べます。サーバーに偽のデータを受信させ「騙す」には何が必要かを把握するためです。

成功した場合、不正業者はデバイス上で実際のアプリを一切作動させることなく、本物に似せたユーザーやアプリ内イベントを無数に作り出すことができます。

最近では、実在するデバイスIDを入手して、本物と見分けがつかないデータを偽造する不正業者も存在します。このような不正行為は、暗号化された署名を利用してアプリから送信されたデータを保護しない限り防ぐことができません。

Adjustでセキュリティを担当するアブダラが、SDKスプーフィングについてわかりやすく説明していますのでご参考ください(英語のみ)。

AdjustのSDKはオープンソースであることから、データリクエストを認証するためのコードを読み取って模倣しようと試みる不正業者に対し、Adjustはどんなセキュリティ対策を行なっているか疑問に思われる方もいらっしゃると思います。

AdjustのSDKがオープンソースである理由は、お客様がアプリの内部で何が起こっているかを知る権利があるというのが当社の信念だからです。それに加え、オープンソースであることで多くのお客様と協力し、市場に出回るSDKを向上して品質を高めることができます。実際に、アトリビューションSDKがオープンソースであるべき理由は数え切れないほどあります。その多くについてはこの記事で取り上げました。

AdjustのSDKセキュリティ対策は?

Adjustによるモバイル計測を行うには、お客様のアプリにAdjust SDKが実装されていることが必要ですが、SDKスプーフィング対策として別途にライブラリをダウンロードして、SDKに追加していただいております。セキュリティ確保のため、Adjustはこのライブラリが確認できないSDKからのデータを拒否しています。

ライブラリは、SDKから送信されるすべてのデータリクエストに対して、暗号化された署名を作成しデータに結び付けます。この署名が既知のスプーフィング攻撃からSDKを守り、機能も定期的にアップデートされています。ライブラリはそれぞれ異なるため、仮に1つのアプリがスプーフィングの攻撃を受けても、他のアプリに同じ手法が通用しません。さらに、ライブラリはAdjustのセキュリティチームによって継続的にアップデートされることから、セキュリティの網をかいくぐろうとする新たな攻撃もたちまち無効となります。

また、ライブラリのコードはランダムに生成され、特殊なプロセスでコンパイルされています。よって、攻撃を仕掛ける側はリバースエンジニアリングによってコードを読むことができません

他のSDKも多少は安全なの?

他社が提供しているアトリビューションSDKのほとんどはクローズドソースで、そのソースコードは一般公開されていません。ということは、中身を見ることができないクローズドソースSDKの方が安全性が高いのでしょうか?

答えはノーです。

Adjustは、市場に出回っているクローズドソースSDKに暗号化された署名が追加されていない場合の脆弱性を調査しました。残念ながら、調査したSDKのすべてにおいて、データリクエストの署名に使用される関数が非常に解読されやすい形式であったため、よって不正攻撃もされやすいことが判明しました。

実際に、一部のSDKでは、暗号化された署名関数を打ち破るのに数分しかかかりませんでした。つまり、SDKに対するプロテクションはあっという間に取り外されてしまうのです。これは非常に深刻です。なぜなら、攻撃を仕掛ける側がこの仕組みを解明した場合、署名を利用して本物そっくりな偽のデータを作ってしまうからです。

つまり、既存のクローズドソースSDKの不正対策は、簡単にスプーフィングされてしまうのです。

Adjust SDKに追加していただくカスタムライブラリは、アトリビューションSDKの全関数ではなく、SDKスプーフィング対策に必要なセット関数のみをカバーしています。つまり、 Adjustはコーディングやコンパイルなどのさまざまな方法で、セキュリティ対策を実行することが可能なのです。

最後に、オープンソースSDKのセキュリティが不完全であるというのは偽りであること、そして、クローズドソースのSDKは決してスプーフィングの攻撃を受けないとは言えないこと、この2点を強調しておきたいと思います。

Adjust の最新情報をお届けします