
2026/03/14 7:52
オープンソースドキュメントサイトで、39 個の Algolia 管理キーが漏洩していることを発見しました。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
この記事は、Algolia の DocSearch プログラムに広く蔓延するセキュリティ欠陥を暴露しています。多数のオープンソースプロジェクトが誤ってフルパーミッション API キーを公開サイトに掲載し、即座に脅威を生み出しました。
- 主なインシデント:最初に報告された侵害は 10 月に vuejs.org で発生し、サイトがフルアクセスの管理者キーで動作していました。Vue はその漏洩を認め、レポーターを Security Hall of Fame に追加し、キーをローテーションしました。
- 問題の範囲:調査により、影響を受けた 39 件すべての DocSearch デプロイメントがフロントエンド構成で管理者レベルのキーを使用していたことが判明しました(35 件は数千件の
ファイルをスクレイピングし、約15 000 のドキュメントサイトをクロールした結果、4 件は GitHub 履歴分析で発見されました)。docsearch-config - 漏洩した権限:リークされたキーは検索、addObject、deleteObject、deleteIndex、editSettings、listIndexes、browse、analytics、logs、および NLU アクセスを含む広範な操作を許可しました。
- 高プロファイルの被害者:Home Assistant(約85 k GitHub スター)、KEDA(CNCF プロジェクト)、vcluster(10万件以上のインデックスレコード)などが露出対象でした。
- 根本原因:開発者は意図した検索専用キーではなく、書き込みまたは管理者キーを公開フロントエンド構成に誤って埋め込んでしまいました。
- ユーザーと企業へのリスク:攻撃者は任意のレコードを追加・変更・削除し、インデックス全体を削除したり、ランキング設定を変更したり、すべてのインデックス済みコンテンツをエクスポートしたり、悪意あるリンクで検索結果を汚染したり、フィッシングリダイレクトを開始したり、検索機能を完全に停止させる可能性があります。企業は評判損失と運用障害に直面しました。SUSE/Rancher は公開後 2 日以内にキーを取り消し、Home Assistant は修復を開始していましたが、報告時点では元のキーをアクティブなままでした。
- 著者のアウトリーチ:著者は数週間前に Algolia に漏洩したすべてのキーの完全リストをメールで送付しましたが、返答はありませんでした。残りのすべてのキーは現在も有効です。
- 手法:約3 500 のアーカイブ済み
ファイルをスクレイピングし、15 000 近いドキュメントサイトで正規表現による埋め込みクレデンシャルのクロール、GitHub コード検索、および TruffleHog を 500 以上のリポジトリに対して実施しました。docsearch-config - 将来展望と修復推奨:誤設定されたキーは39 件を超えている可能性があります。DocSearch を運用している場合、フロントエンド構成に埋め込まれたキーが 検索専用 キーであることを確認し、公開サイト上で書き込み/管理者キーの使用を避けてください。
このインシデントは、Algolia の DocSearch プログラムにおいて開発者が意図せずフルアクセスキーをスケールして露出させるという体系的な問題を浮き彫りにし、オープンソースエコシステム全体でより厳格なキー管理実践の必要性を強調しています。
本文
2023年10月に発覚したVue.jsのAlgolia管理APIキー漏洩
2023年10月、私は vuejs.org において公開されていた Algolia 管理 API キーを報告しました。
そのキーは
addObject・deleteObject・deleteIndex・editSettings などのフル権限を持っていました。Vue は問題を認め、私を「Security Hall of Fame」に追加し、キーローテーションを実施しました。
これで終わるはずでしたが、こう思わせられました:もし Vue.js がこのような問題に直面しているなら、他の DocSearch サイトも同じ状況にあるのでしょうか? 結果、多数存在することが判明しました。
Algolia DocSearch の仕組み
Algolia の DocSearch はオープンソースドキュメント向けの無料検索サービスです。
サイトをクロールし、インデックス化して、フロントエンドに埋め込むための API キーを発行します。このキーは 検索専用(search‑only) であるべきですが、一部サイトでは管理権限まで付与されたキーが使われています。
私が調査した内容
キー取得手段
ほとんどのキーはフロントエンドからスクレイピングして取得しました。
Algolia は公開(現在はアーカイブ)リポジトリ docsearch‑configs を保守し、DocSearch プログラムに登録されている 3,500 件を超えるサイトの設定が格納されています。このリストを起点に約 15,000 のドキュメントサイトから埋め込まれた認証情報を収集しました。
(以下はサンプルコード)
APP_RE = re.compile(r'["\']([A-Z0-9]{10})["\']') KEY_RE = re.compile(r'["\']([\da-f]{32})["\']') def extract(text, app_ids, api_keys): if not ALGOLIA_RE.search(text): return for a in APP_RE.findall(text): if valid_app(a): app_ids.add(a) api_keys.update(KEY_RE.findall(text))
さらに、GitHub のコード検索で DocSearch 設定ファイルに埋め込まれたキーを探し、500 以上のドキュメントリポジトリをクローンして TruffleHog を実行。コミット時に追加されて後から削除されたキーも検出しました。
結果
| 指標 | 内容 |
|---|---|
| 管理キーの数 | 39(うち 35 はフロントエンドスクレイピングのみで取得) |
| 検索対象リポジトリ | 約 15,000 |
| キーが有効だった時期 | 発見時点で全て有効 |
影響を受けたプロジェクト
| プロジェクト名 | インパクト |
|---|---|
| Home Assistant | GitHub スター 85,000 超、数百万のアクティブインストール |
| KEDA | CNCF プロジェクト、実運用 Kubernetes クラスターで使用 |
| vcluster | Kubernetes 関連プロダクト。最も大きな検索インデックス(100,000 件超)を持つ |
キーが許可する操作
ほぼ全ての 39 個のキーは同一権限セットを共有しています:
search, addObject, deleteObject, deleteIndex, editSettings, listIndexes, browse。さらに数個は分析・ログ閲覧・NLU 機能まで拡張されたアクセス権を持っています。
実際にキーを手にした者は以下のような行為が可能です:
- 任意の検索インデックスレコードを追加、変更、削除
- インデックス全体を削除
- インデックス設定・ランキング構成を変更
- 全てのインデックスコンテンツを閲覧・エクスポート
これにより、プロジェクトの検索結果を悪意あるリンクで汚染したり、ユーザーをフィッシングページへ誘導したり、またはインデックス全体を消滅させてサイト検索機能を完全に無効化することも可能です。
開示と対応
- SUSE/Rancher は 2 日以内に報告を受理し、キーをローテーションしました。現在は完全に廃止済みです。
- Home Assistant も応答し修復作業を開始しましたが、元のキーはまだ有効です。
私は影響を受けた全キーのリストをまとめ、数週間前に Algolia に直接送付しましたが、未だ返答はありません。今日現在、残りの全キーは依然として有効です。
根本原因
これは単なる 39 件の個別ミスではなく、**DocSearch が「検索専用」キーを提供しているにも関わらず、多くのサイトが自前のクローラーで取得した書き込みや管理キーをフロントエンド設定に使用してしまう」という構造的問題です。Algolia の公式ドキュメントでもこの落とし穴について警告していますが、実際にはスケールで発生しています。
推奨対策
DocSearch を利用している場合は、フロントエンド設定に埋め込まれているキーを必ず確認してください。
検索専用(search‑only) キーになっているかどうかをチェックし、そうでない場合は直ちにローテーションと再発行を実施します。
私は 39 件の管理キーを数本のスクリプトで検出できましたが、実際にはもっと多い可能性があります。
安全対策として定期的なキー監査と権限最小化を徹底してください。