米スタンフォード大学、カリフォルニア大学デービス校、デルフト工科大学の研究者らは、Web上の約1000万サイトを調査し、本来秘匿すべきAPI認証情報が広範に露出している実態を論文で報告した。主要サービスの有効な認証情報が、誰でも取得できる状態で確認されたという。
事案の詳細
研究者らが発表した論文「Keys on Doormats: Exposed API Credentials on the Web」は、Web上の約1000万サイト(各サイトのトップページ)を対象に、APIを利用する際の認証情報が公開状態になっていないかを調べた研究報告である。
調査では、ブラウザで実際に読み込まれた通信データを調べる動的解析を実施した。その結果、AWS、Stripe、GitHub、OpenAIなど14のサービス提供者に属する有効なAPI認証情報1748件が、5693ドメイン(9804サイト)で誰でも取得できる状態にあることが判明した。
露出していた認証情報には、世界的にシステム上重要な金融機関(G-SIB)や重要インフラ関連組織、警察や裁判所に関連するシステムなど公的機関に関わるものも含まれていた。
影響と背景
API認証情報の漏えいは、たった1つであってもデータ窃取、プライバシー侵害、評判の毀損(きそん)につながり得る。認証情報が有効な場合、クラウドや決済など外部サービスへの不正アクセスに利用される可能性がある。
対策・今後の展望
研究チームは、露出が広範に起きる背景として、ソースコードの検査に頼る運用上の限界を指摘する。今回見つかった露出の84%はJavaScriptファイル内にあり、そのうち62%は本番用のファイルを組み立てるビルド工程で自動生成されたファイル(バンドル)に含まれていたという。開発ツールで環境変数の設定を誤ると、裏側で隠すべき認証情報までがビルド時に公開用ファイルへ自動的に埋め込まれ、ソースコードの検査だけでは検知できないとしている。
研究チームの分析では、認証情報は平均約12カ月にわたって露出していた。研究チームが対象組織へ通知した後、約2週間で露出件数は半減した(1405件から706件)。ただし、これは公開ファイルからの削除によるもので、認証情報そのものの無効化が進んだのは約26%(1175件から865件)にとどまった。
対策
同種の事案では、公開してよいはずのフロントエンド資産(ブラウザが取得するファイル)に、誤って秘密情報が混入する形で起きやすい。とくにビルドや配備の工程で自動生成される成果物は、人の目での確認や静的な検査だけでは見落としが生じ得る。
例えるならAPI認証情報は「鍵付きの部屋に入るための合鍵」のようなものだ。つまりWebページにその合鍵が置かれていれば、誰でも拾って使える可能性がある。たった1つの鍵でも、外部サービスやクラウドに不正に触れられる入口になり得る。
まず自社サイトで配信しているJavaScriptなど、ブラウザに渡しているファイルを開き、鍵やパスワードのような文字列が紛れていないか確認する。次にビルド設定の環境変数が「公開用」と「秘密用」で混ざらないよう担当者に点検を依頼し、見つかった認証情報は削除だけでなく無効化まで行う手順を共有する。
参照: 1000万のWebサイトで「生きたAPIキー」が大量に“丸見え”状態? 大手銀行やインフラの鍵も 米スタンフォード大などが調査