コード漏洩の35%で「秘密鍵」も丸見え…Google Workspaceアドオンのリスク
公開日
Google Workspaceは、メールやドキュメント作成の効率化ツールとして世界中で30億人以上のユーザーに利用されており、サードパーティ製の「アドオン」によって機能を拡張できる点が大きな魅力です。しかし、この便利なエコシステムの裏側にある、アドオンの開発・運用(DevOps)プロセスそのものに、これまで見過ごされてきた深刻なセキュリティホールが存在することが明らかになりました。
本記事では、クイーンズランド大学などの研究チームが執筆し、ソフトウェア工学の国際会議ICSE ‘26で発表される論文「Understanding DevOps Security of Google Workspace Apps」の内容に基づき、Google Workspaceのアドオンに潜むDevOpsレベルの脆弱性と、5,300件のアドオンを対象とした実態調査の結果について解説します。
アドオンのDevOpsモデルと攻撃の起点
これまでのアドオンに関するセキュリティ研究は、主に「ユーザーがどのデータを許可するか」という権限管理に焦点を当てていました。しかし、今回の研究は視点を変え、 「開発者がどのようにアドオンを作成・配信・運用しているか」 というDevOpsの仕組み自体を調査しています。
研究チームは静的解析と動的解析を組み合わせた手法により、アドオンのDevOpsプロセスを解明しました。その結果、攻撃者が通常のユーザーとしてアドオンを利用する過程で、ネットワークトラフィックから「プロジェクトID」を特定できる場合があることが判明しました。このプロジェクトIDが悪用されると、開発者用のインターフェースへ不正にアクセスされる可能性があります。
以下の図は、研究で特定された攻撃の全体像を示しています。
図表1:アドオンDevOpsモデルにおける3つの漏洩の攻撃フロー
通常、アドオンのコードや開発権限は厳重に保護されるべきですが、図の左下や右側に示されているように、特定のURLパラメータを操作することで、認証をすり抜けてアクセス可能になるケースが確認されました。
特定された3つの主要な脆弱性
研究チームは、アドオンのDevOpsライフサイクルにおいて、以下の3つの重大な脆弱性(漏洩)を特定しています。
1. ソースコードの漏洩(Code Leakage)
最も基礎的かつ広範な問題です。攻撃者が抽出したプロジェクトIDを用いてURLを構築することで、本来は開発者とプラットフォームしか閲覧できないはずのアドオンのサーバーサイドコードにアクセスできてしまう現象です。これにより、ビジネスロジックや内部構造が完全に露呈します。
2. 開発・デプロイ権限の漏洩(Permission Leakage)
ソースコードへのアクセスが可能になった場合、さらに深刻な権限漏洩につながることがあります。具体的には、開発者権限やデプロイ権限へのリンクが露出しているケースです。もしこれらの権限が奪取されれば、攻撃者は開発者になりすまして悪意のあるコードを混入させたり、不正なバージョンをユーザー全体に配信したりすることが可能になります。
3. 秘密鍵の漏洩(Secret Key Leakage)
ソースコードが漏洩することで発生する二次被害の中で、特に危険なのが秘密鍵の漏洩です。35.1%のアドオンが、外部サービスに接続するための認証情報を、コード内にハードコーディングしていました。
5,300件の大規模調査が示す実態
研究チームは、Google Workspaceのマーケットプレイスで公開されている公式アドオン5,300件を対象に、上記の脆弱性が実際にどれほど存在するかを調査しました。その結果、全体の約5.2%にあたる274件のアドオンで、ソースコードが外部からアクセス可能な状態であることが判明しました。
以下の表は、ソースコード漏洩が確認されたアドオンを、ユーザー数規模ごとに分類したものです。
| ユーザーベース | アドオン総数 | コード漏洩数 (%) | 権限漏洩数 (%) | 秘密鍵漏洩数 (%) |
|---|---|---|---|---|
| 100未満 | 1006 | 147 (14.61%) | 22 (2.18%) | 53 (5.26%) |
| 100 - 1,000 | 797 | 55 (6.90%) | 17 (2.13%) | 20 (2.51%) |
| 1,000 - 10,000 | 1142 | 38 (3.33%) | 4 (0.35%) | 15 (1.31%) |
| 10,000 - 100,000 | 1182 | 23 (1.94%) | 4 (0.34%) | 7 (0.59%) |
| 100,000以上 | 1173 | 11 (0.94%) | 1 (0.09%) | 1 (0.09%) |
図表2:漏洩が見つかったアドオンのユーザーベース分布
特筆すべきは、ユーザー数が10万人を超えるような広く普及しているアドオンであっても、11件でソースコード漏洩が、そのうち1件では秘密鍵や開発権限の漏洩までもが確認された点です。
被害の潜在的規模:脆弱なアドオンが握る権限
さらに、これらの脆弱性を持つアドオンが、ユーザーに対してどのような権限を要求しているかを確認することで、潜在的な被害の規模が見えてきます。
以下のグラフは、脆弱性が確認されたアドオンが要求している権限の分布を示しています。
図表3:脆弱性のあるアドオンにおける要求権限
グラフのバー(コード漏洩・権限漏洩あり)に注目すると、「メール」の権限を要求しているケースが最も多く、累計343件のアドオンにのぼることがわかります。次いで「外部サービスへの接続」、「スプレッドシート」、 「ドライブ」 と続きます。
これは、もし攻撃者が脆弱性を突いてアドオンを制御したり、開発者になりすましたりした場合、ユーザーのメール内容の盗聴、スプレッドシートやドライブ内の機密情報の抜き出し、外部へのデータ送信といった深刻な被害が発生し得ることを意味します。単にアドオンのプログラムが見えてしまうだけでなく、ユーザーのプライバシーの根幹に関わるデータが危険に晒されている実態が浮き彫りになりました。
秘密鍵漏洩の深刻さと具体例
ソースコード漏洩が確認された274件のアドオンのうち、約35%にあたる96件で、外部サービスへアクセスするための秘密鍵がコード内にハードコーディングされていました。
実際に漏洩が確認された秘密鍵の例として、以下のようなものが挙げられています。
| 名前 | 特定された漏洩情報の種類 |
|---|---|
| ApiKey | 一般的なAPIキー |
| AwsApiKey | AWS(Amazon Web Services)へのアクセスキー |
| ClientSecret | OAuth認証などに使われるクライアントシークレット |
| StripeToken | 決済サービスStripeのトークン |
| PrivateKey | 秘密鍵などのプライベートキー |
| UserPwd | データベース等のユーザーパスワード |
図表4:漏洩した秘密鍵の例(一部抜粋)
特に深刻なケースでは、Stripe(決済サービス)のトークンや、PayPalの加盟店シークレットキーが含まれていました。これらが悪用されれば、開発者に金銭的な損失が発生するだけでなく、顧客データの流出や改ざんといった重大なインシデントに直結します。
また、研究チームによる個別の分析では、14万人以上のユーザーを持つアドオン「Highlight」においてソースコードが漏洩し、そこからスプレッドシートへのアクセス権限を持つ開発者キーが特定されました。これにより、攻撃者が開発者になりすましてユーザーの機密リソースを盗み出せる状態であったことが報告されています。
結論
本調査により、Google Workspaceのアドオンエコシステムにおいて、DevOpsプロセスにおけるセキュリティ対策が不十分であることが浮き彫りになりました。特に、プロジェクトIDが容易に特定され、そこからソースコードや重要な認証情報が芋づる式に漏洩してしまう現状は、開発者とユーザー双方にとって看過できないリスクです。
アドオン開発者は、現状のプラットフォーム仕様において脆弱性が存在する可能性を認識し、自衛策を徹底することが強く求められます。具体的には、秘密鍵をソースコードにハードコーディングせず、Google Cloud Secret Managerなどの安全な管理ツールへ移行すること、そして、たとえコードが閲覧されたとしても実害が出ないよう、外部サービス接続時の認証設計を見直す必要があります。
Webサービスや社内のセキュリティにお困りですか? 弊社のサービス は、開発チームが抱える課題を解決し、生産性と幸福度を向上させるための様々なソリューションを提供しています。ぜひお気軽にご相談ください!
参考資料: