アルゴリアAPIキー、数々のハッキング脅威にさらされる

アルゴリア (Algolia)はウェブ検索を提供するSaaS型のホスト検索エンジンサービスです。簡単な会員登録をした上でアルゴリアAPIキーを発行し、ウェブサイトおよびモバイルアプリケーション内に連動すると速やかな検索を処理し、円滑に具現することができるという長所があります。なので、毎月何千に至るほどの会社のアプリケーションがアルゴリアを使用します。

このように多くのウェブに使われるアルゴリアAPIキーのセキュリティ問題が最近発見されました。シンガポールのセキュリティ会社CloudSEKで2022年11月21日公表した報告によると、ハードコーティングされた数百万のユーザーのアルゴリアAPIキーを奪取できるセキュリティ問題が発生したそうです。

AlgoliaのAPIは会社で音声、モバイルおよびウェブサイトの応用プログラムに検索、検索および勧奨事項を統合するのに使用されます。現在Lacoste、Stripe、Slack、MediumおよびZendeskを含む11,000個以上の会社で年間1兆5千億件の検索クエリーを管理するのに使用しています。

しかし、世界初のモバイル・アプリ用セキュリティ検索エンジンであるCloudSEKのBeVigilは、Algolia APIキーを流出した1,550個のアプリを職別しました。その中で数百万件のダウンロードが行われた32個のアプリには攻撃者が数百万のユーザーのデータを盗むために悪用できるハードコーティングされたキーが含まれています。

出所 : Hardcoded Algolia API Keys Could be Exploited by Threat Actors to Steal Millions of Users’ Data - CloudSEK

この分析の投稿では、アルゴリアAPIキーの流出により発生しうる攻撃に対する分析と漏えいされたAPIキーを検知する方法について扱います。


アルゴリアAPI キー の構成及び作動の方式


アルゴリアが適用されたウェブを運営する代表的な事例としては「Lacoste」、「Stripe」、「Slack」、「Medium」等があります。アルゴリアAPIが作動する方式はユーザーの入力値を各々の字・母音一つずつサーバーにリクエストして応答を受ける方式です。

そのとき、API認証にx-algolia-api-key、x-algolia-application-id キーが使われます。
アルゴリアのウェブサイトにあるアルゴリアAPIの作動方式についての説明

アルゴリアAPIキーは、アルゴリアのホームページにログインした後、Setting>API Keysメニューで確認ができ、APIキーは用途によって次の5つのAPIキーで提供されます。

  1. 管理者APIキー
  2. 検索専用APIキー
  3. モニタリングAPIキー
  4. 使用量APIキー
  5. アナリティクスAPIキー
アルゴリアAPIキーを確認できる設定メニューの画面

その中で「管理者APIキー」の権限がある場合、《検索専用のAPIキー、モニタリングAPIキー、使用量APIキー及びAnalytics APIキー》を全部使用できます。なので、攻撃者が管理者APIキーを奪取すると、次のような作業が可能になります。


アルゴリアの管理者APIキーを奪取してから攻撃者が行える作業の一覧

• 検索(search):検索作業を行えます。
• 索引探し(browse):探しの終点で全ての索引データを検索できます。
• レコード追加(addObject):インデックスにレコードを追加したり、アップデートできます。
• 記録削除(deleteObject):既存の記録を削除できます。
• 目録インデックス(listIndexes):全ての既存インデックスの目録を呼び出せます。
• インデックス削除(deleteIndex):インデックスを削除できます。
• インデックス設定呼び出し(settings):全てのインデックス設定を読み込めます。
• インデックス設定のセッティング(editSettings):全てのインデックス設定をアップデートできます。
• 分析APIの使用(analytics):Analytics APIでデータを検索できます。
• 推薦APIの使用(recommendation):推薦APIと相互作用を行えます。
• 使用APIの使用(usage):使用APIでデータを検索できます。
• アクセス・ログ(logs):ログを照会できます。
• 検索できない属性の呼び出し(seeUnretrievableAttributes):unretrievableAttributesレコードをリターンする全ての作業に対して検索できます。

このように、管理者APIキーは全ての作業が可能であるため、最高管理者のみが取り扱えなければなりません。
アルゴリアの管理者APIキーの権限設定についての重要な案内文


アルゴリアAPI キー が漏えいされたアプリケーションをOSINT検索エンジンで探す方法


CloudSEKの公表内容によると、アルゴリアのAPI自体が脆弱なわけではなく、APIを使用する個人または企業が誤用して流出が発生するそうです。

アルゴリアAPIキーが漏えいされているアプリケーションはOSINTセキュリティ検索エンジンCriminal IPで次の2つのクエリーにより、簡単に検索することができます。

合計973個のAPIキーが漏えいされたアルゴリアサーバーのIPアドレスが検索されます。


Search Query: x-algolia-api-key status_code: 200
Search Query: x-algolia-application-id status_code: 200
Criminal IP検索エンジンでAPIキーが漏えいされたアルゴリアのサーバー検索、
973件のIPアドレスが検索される

検索されたサイトにアクセスし、デベロッパーツールのネットワークを照会すると、リアルタイムユーザーの入力値に対する応答でAPIが動作することと共にalgolia agent、api key、api idの値が漏えいされていることが確認できます。
アルゴリアAPIのIDとキーが漏えいされている
アルゴリアが適用されたウェブサーバーのペイロード

漏えいされたアルゴリアAPIキーの権限を確認する方法


ただし、今度のインシデントはAPIキーの値が漏えいされたということだけで脆弱だとは言えません。APIキーに対する権限がコントロールされていない場合のみ実質的な攻撃が可能になるためです。

APIキーに対する権限のコントロール有無を確認する方法は次のとおりです。

コマンド・プロンプトに次の内容に漏えいされたアルゴリアAPIキーの値とIDを適用して入力します。
curl -X GET -H "X-Algolia-API-Key: {API-KEY}" -H "X-Algolia-Application-Id: {Application-ID}" "https://{Application-ID}.algolia.net/1/logs"

権限がコントロールされている場合、次のようなメッセージが出力されます。
{"message":"Invalid Application-ID or API key","status":403}

権限がコントロールされていない場合には、次のようなLog形式で権限ごとにコントロールに対する応答が出力されます。
{"message":"Method not allowed with this API key","status":403}root@xxxxxxxxxx:~7b5137" -H "X-Algolia-Application-Id: {Application_ID" "https://{Application_ID.algolia.net/1/logs"
{"logs":[{"timestamp":"2022-11-25T09:22:06Z","method":"GET","answer_code":"403","query_body":"","answer":"\n{\n  \"message\": \"Method not allowed with this API key\",\n  \"status\": 403\n}\n","url":"/1/logs","ip":"x.x.x.x","query_headers":"Host: {Application_ID.algolia.net\nUser-Agent: curl/7.47.0\nAccept: */*\nX-Algolia-API-Key: a321****************************\nX-Algolia-Application-Id: {Application_ID\n","sha1":"xxxxxxxxxxxxxxxxxxxxxxx","processing_time_ms":"1"},{"timestamp":"2022-11-25T09:21:06Z","method":"GET","answer_code":"403","query_body":"","answer":"\n{\n  \"message\": \"Method not allowed with this API key\",\n  \"status\": 403\n}\n","url":"/1/logs","ip":"x.x.x.x","query_headers":"Host: {Application_ID.algolia.net\nUser-Agent: curl/7.83.1\nAccept: */*\nX-Algolia-API-Key: a321****************************\n

APIキー流出などの脆弱性を迅速に点検するためには、法人ユーザーの場合はCriminal IP RMR、個人ユーザーの場合はCriminal IP検索エンジンあるいはAPIを活用して攻撃対象領域を管理することがお勧めです。

【公式】Criminal IP Japanブログ

サイバー脅威インテリジェンス検索エンジンCriminal IPが収集・分析したあらゆるサイバーセキュリティ・脆弱性情報、サイバー攻撃対策やCriminal IPの検索コツなどをお届けします。

0コメント

  • 1000 / 1000