APIキー 一つで起こる個人情報漏れ、そして造作
クレデンシャル(Credential)とは?
クレデンシャル(Credential)の辞書上の意味は‘資格証明’で、通常では特定の人がその資格を持っているかを証明する手法を表します。あらゆる身分証と証明書などが Credentialに含まれます。しかし、クラウド環境や Facebook、Twitter、Line などのように Access Key ID/Secret Key を持って、ソーシャル認証に使われる Oauth でもクレデンシャルという用語を使用します。最近、クレデンシャルは認証に関するキーだけではなく、クラウド内部の VPC 網の IP 情報などを包括的に称するに用いられます。
Criminal IP IT資産検索で Access Key情報を探す
IT資産検索であらゆる認証に関する情報(Access Key ID、Secret Access Key)キーワードを検索すると、度々 Credential 情報が漏洩されているケースを見られます。特に、Oauth 認証や RESTfull API Credential 情報が漏洩されているリスクも少なくないです。
- Access Key ID:一般ウェブサイトの ID のようなもの。略して Access Key(アクセスキー)と呼ぶ。
- Secret Access Key:一般ウェブサイトのパスワードのようなもの。略して Secret Key(シークレットキー)と呼ぶ。
例えば、アマゾンクラウドで使用する Access Key のタイプは下のように構成されます。
アマゾン クラウドで利用する Access Key タイプ[/caption]
また、バケット ページ検索で認証に関する情報を見つけられます。バケット(Bucket)とは貯蔵庫を表すもので、クラウドサービスでのバケットは主にストレージ(Storage)を意味します。このバケットにアクセスできる場合はファイルサーバーへ入り込んで公開されていないファイルを抜き取ることもできる問題があります。まずは、下のように、読み取りモードができる Bucket キーワードを検索してみました。
“READ_BUCKET_NAME”
上の検索フィルターで検索した結果の中で、“NAVERCloud VOD Service TBD” というサイトが24ヶ所検索されます。おそらく、Naver Cloud ユーザーのためのバケット アップロード デモ ページだと考えられます。ここで問題になる点は、HTML テキストにファイル アップロード テストで使われるデモ用の Endpoint ドメイン アドレスと Access Key ID、Access Secret Key が漏洩されていることです。このように隠られているべきの Secret Key までフロントエンドに漏洩されているサイトがかなり多いです。
HTML Body の中に、Access Credential 情報が漏洩される
Criminal IP IT資産検索でウェブ・アプリケーションDjangoのデバッグモードのサイトを探す
PHP ベースのララベル フレームワーク(Laravel Framework)や Python 言語で開発されたジャンゴ(Django)ウェブ アプリケーション フレームワークはすべて利便性のために、デバッグ モード(Debug Mode)を提供します。ジャンゴ(Django)で開発されたウェブ サイトに Debug モードが活性化されたら、エラーが起こる際、エラー メッセージに敏感な情報を漏洩する問題が発生しますが、これはジャンゴとララベルのフレームワーク両方に同じく発生する症状です。
Criminal IP IT資産検索の検索フィルターはジャンゴのデバッグ モードが活性化されているサイトを検索でき、その検索フィルターは下のようです。
“DisallowedHost at“(Djangoのフレームワーク)
デバッグ モードが活性化されたジャンゴのウェブ サイトは
エラー メッセージに敏感な情報を漏洩する
ジャンゴのウェブ アプリケーションで漏洩される HTTP リクエストヘッダ 情報には今まで話した APIキー だけではなく、その上に認証に関する Admin アカウント及びパスワード情報、データベースのアカウント情報も含まれています。
Adminアカウント及びパスワードなどの敏感な情報が漏洩されたジャンゴのウェブサイト
ジャンゴ以外のプラットホームとしてララベル(Laravel)を対象に検索でき、ララベルのデバッグ モードが活性化されているサイトを検索するには下の検索フィルターを参考できます。
title: "Whoops! There was an error"
title: "Whoops! There was an error" の検索結果
検索されたサイトはすべてララベル デバッグ モードが活性化されている IPアドレスで、ここにアクセスすると、エラー メッセージへ APPキー情報、DBアカウント及びパスワード情報が漏洩されます。
全ての APIキー がテキストファイル状態で漏洩されている場合
IT資産検索で ‘APIKEY.txt’ を検索すると、面白いことを見つけられます。
APIKey.txt
APIKey.txt 検索で発見されたウェブサイト
このサイトへアクセスすると、下のように表し、ここだけを見ると、何の目的のサイトかわかりにくいです。しかし、ウェブ サイトのソースをみると、話は変わります。
APIKey.txt 検索で発見されたウェブサイトのアクセス画面
ウェブサイトのソースコードをみると、このサイトは firebase のデータベースを使用していることがわかります。そして、firebase Configuration に firebase SDK を使用する際、発行された API Key、AuthDomain、AppID 情報が漏洩されています。
API Key 情報などの重要情報が漏洩されているページのソースコード
その他にも中国の RESTfull API に見られるサイトも見つかり、管理者(Admin)の Access Token ハッシュ値が漏洩されていました。
管理者(Admin)の Access Token ハッシュ値が漏洩された中国のサイト
Criminal IP の検索結果には度々 Credential 情報が含まれている HTML ファイルが発見されるが、この HTML ファイルは主にテストまたは、間違いで残られた場合が多いです。
下のイメージはアマゾン クラウド サービス(AWS)の IAM メーターデータが含まれている HTML ファイルや DynamoDB AWS Key がある HTML ファイルを発見した場合です。
1) HTML ファイル IAM メーターベースの内容で、その中にはユーザーアカウント(User Account)に関する情報が含まれている
アマゾンクラウド(AWS)IAM Metadata 内にユーザー情報が含まれている
HTML ファイルが発見された場合
2) アマゾン クラウド サービス(AWS)の代表的な NoSQL サーバーの一つである DynamoDB で生成された HTML ファイルに Access Key ID と Secret Key などの Credential 情報が漏洩される
“DynamoDB Admin”
結論
クラウドネイティブ技術を用いて開発チームの生産性は驚くほど向上しています。しかし、生産性にフォーカスを合わせすぎて、セキュリティは後回しされているのではないかという懸念の声が高まっています。クラウド ネイティブ技術で最も多く使用されている APIキー がこのように漏洩されている姿はこのような声を裏付けます。
データベースが漏洩されている姿はただ、個人情報の漏洩だけではなく、“書き込み” 権限がある場合、データベースを造作することもできます。過去にはデータベースの ID/パスワードのようなアカウント管理にはセキュリティにフォーカスが合わせられていたが、クラウド時代の現在は APIキー でも “書き込み” 権限がある場合が存在し、 APIキー 一つで個人情報漏れまたは、造作までもできます。
速く進化するクラウド関連の技術に、果たして、エンジニアたちはセキュリティに関する部分にも同様についていっているかを綿密にチェックする必要があります。クラウド時代はこのように小さくて単純な設定エラーのような間違いで重要な情報がネットにさらされ、これによる個人とビジネス両方へ大きな被害を及ぼす大事故につながられることを心に刻むべきです。
データの提供
- Criminal IP
▶ https://www.criminalip.io/ja