Coders Conquer Security OWASP Top 10 API Series - Excessive Data Exposure

2020年9月23日発行
マティアス・マドゥ博士著
ケーススタディ

Coders Conquer Security OWASP Top 10 API Series - Excessive Data Exposure

2020年9月23日発行
マティアス・マドゥ博士著
リソースを見る
リソースを見る

過剰なデータ露出の脆弱性は、OWASP のリストに掲載されている他の API 問題とは異なり、非常に特殊な種類のデータが関係している点が特徴です。この脆弱性の背後にある実際の仕組みは他の問題と似ていますが、この場合の「過度のデータ露出」は、法的に保護されたデータや非常にセンシティブなデータを含むと定義されています。これには、よくPIIと呼ばれる、個人を特定できる情報が含まれます。また、PCI(Payment Card Industry)情報が含まれる場合もあります。さらに、欧州の一般データ保護規則(GDPR)や米国の医療保険の相互運用性と説明責任に関する法律(HIPAA)などのプライバシー法の対象となる情報も、過剰なデータ露出に含まれます。

ご想像のとおり、これは大きな懸念材料であり、精通した開発者は可能な限りこれらのバグをつぶす方法を学ぶ必要があります。もし、あなたがデータ漏洩対策に取り組む準備ができているなら、ゲーム化されたチャレンジに参加してみてください。

あなたのスコアは何点でしたか?読んでみてください。

過剰なデータ露出の例としてはどのようなものがありますか?

過剰なデータ公開が発生する主な理由の一つは、開発者やコーダーがアプリケーションで使用するデータの種類を十分に把握していないことです。そのため、開発者は、すべてのオブジェクトのプロパティがエンドユーザーに公開されるような汎用的な処理を行う傾向があります。

また、開発者は、フロントエンドコンポーネントがユーザーに情報を表示する前にデータのフィルタリングを行うことを想定していることがあります。一般的なデータであれば、これが問題になることはほとんどありません。しかし、例えば、セッションIDの一部として法的に保護されたデータや機密データをユーザに公開すると、セキュリティと法的な観点から大きな問題になります。

OWASPレポートでは、機密データが誤って共有されやすい例として、警備員が施設内の特定のIoTベースのカメラへのアクセス権を与えられた場合を想定しています。おそらく、それらのカメラは密閉された安全なエリアを監視しており、一方で、人を映し出す他のカメラは、より高い権限を持つ警備員や監督者に制限されているはずです。

警備員に許可されたカメラへのアクセス権を与えるために、開発者は以下のようなAPIコールを使用することができます。

/api/sites/111/cameras

それを受けて、アプリは警備員が見ることのできるカメラの詳細を以下の形式で送信します。

{ "id":"xxx","live_access_token":"xxxxbbbbb","building_id":"yyy"}

表面的には問題なく機能しているように見えます。アプリのグラフィカル・ユーザー・インターフェースを使用している警備員は、自分が見ることを許可されたカメラのフィードだけを見ることができます。問題は、一般的なコードを使用しているため、実際のAPIレスポンスには、施設内のすべてのカメラの全リストが含まれていることです。ネットワークを盗聴してそのデータを取得したり、警備員のアカウントを侵害したりすると、ネットワーク上のすべてのカメラの位置と名称を知ることができます。そして、そのデータに制限なくアクセスすることができるのです。

過剰なデータ露出をなくす

データの過剰な露出を防ぐ最大の鍵は、データとそれを取り巻く保護機能を理解することです。汎用的なAPIを作成し、ユーザーに表示する前にデータを選別することをクライアントに任せることは、多くの予防可能なセキュリティ侵害につながる危険な選択です。

関連するデータ保護を理解することに加えて、汎用APIを使ってユーザーにすべてを送信するプロセスを止めることも重要です。例えば、to_json()やto_string()のようなコードは避けなければなりません。代わりに、コードは許可されたユーザーに返す必要のあるプロパティを特に選び、その情報だけを送信するべきです。

保護されたデータが誤って過剰に共有されていないことを確認する方法として、組織は、セキュリティの追加レイヤーとして、スキーマベースのレスポンス検証メカニズムの実装を検討する必要があります。スキーマベースのレスポンス検証メカニズムでは、エラー報告のルールを含め、すべてのAPIメソッドから返されるデータを定義し、強制する必要があります。

最後に、PIIやPCIを含むと分類されるデータや、GDPRやHIPAAなどの規制で保護されている情報は、強力な暗号化を用いて保護する必要があります。これにより、過剰なデータ露出の脆弱性の一部としてデータの場所が漏れることがあっても、悪意のあるユーザーや脅威のあるアクターの手に渡ったとしても、データを保護するための優れた二次的な防御策が用意されています。

以下のブログページをご覧ください。 Secure Code Warriorブログページでは、この脆弱性に関するより詳しい情報や、他のセキュリティ上の欠陥の被害から組織や顧客を守る方法についてご紹介しています。また、Secure Code Warrior トレーニングプラットフォームのデモをお試しいただくことで、サイバーセキュリティに関するすべてのスキルを磨き上げ、最新の状態に保つことができます。

リソースを見る
リソースを見る

著者

マティアス・マドゥ博士

マティアスは、15年以上のソフトウェアセキュリティの実務経験を持つ研究者・開発者です。フォーティファイ・ソフトウェア社や自身の会社(Sensei Security)などでソリューションを開発してきました。キャリアの中で、Matiasは、商用製品につながる複数のアプリケーションセキュリティ研究プロジェクトを主導し、10件以上の特許を取得しています。また、RSAカンファレンス、Black Hat、DefCon、BSIMM、OWASP AppSec、BruConなどの世界的なカンファレンスで定期的に講演を行っているほか、高度なアプリケーションセキュリティトレーニング(courses )の講師も務めています。

Matiasはゲント大学でコンピュータ工学の博士号を取得し、アプリケーションの内部構造を隠すためのプログラム難読化によるアプリケーションセキュリティを研究しました。

もっと知りたい?

セキュアコーディングに関する最新の知見をブログでご紹介しています。

当社の豊富なリソースライブラリは、安全なコーディングアップスキルに対する人間的なアプローチを強化することを目的としています。

ブログを見る
もっと知りたい?

開発者主導のセキュリティに関する最新の研究成果を入手する

ホワイトペーパーからウェビナーまで、開発者主導のセキュアコーディングを始めるために役立つリソースが満載のリソースライブラリです。今すぐご覧ください。

リソース・ハブ

Coders Conquer Security OWASP Top 10 API Series - Excessive Data Exposure

2020年9月23日発行
マティアス・マドゥ博士著

過剰なデータ露出の脆弱性は、OWASP のリストに掲載されている他の API 問題とは異なり、非常に特殊な種類のデータが関係している点が特徴です。この脆弱性の背後にある実際の仕組みは他の問題と似ていますが、この場合の「過度のデータ露出」は、法的に保護されたデータや非常にセンシティブなデータを含むと定義されています。これには、よくPIIと呼ばれる、個人を特定できる情報が含まれます。また、PCI(Payment Card Industry)情報が含まれる場合もあります。さらに、欧州の一般データ保護規則(GDPR)や米国の医療保険の相互運用性と説明責任に関する法律(HIPAA)などのプライバシー法の対象となる情報も、過剰なデータ露出に含まれます。

ご想像のとおり、これは大きな懸念材料であり、精通した開発者は可能な限りこれらのバグをつぶす方法を学ぶ必要があります。もし、あなたがデータ漏洩対策に取り組む準備ができているなら、ゲーム化されたチャレンジに参加してみてください。

あなたのスコアは何点でしたか?読んでみてください。

過剰なデータ露出の例としてはどのようなものがありますか?

過剰なデータ公開が発生する主な理由の一つは、開発者やコーダーがアプリケーションで使用するデータの種類を十分に把握していないことです。そのため、開発者は、すべてのオブジェクトのプロパティがエンドユーザーに公開されるような汎用的な処理を行う傾向があります。

また、開発者は、フロントエンドコンポーネントがユーザーに情報を表示する前にデータのフィルタリングを行うことを想定していることがあります。一般的なデータであれば、これが問題になることはほとんどありません。しかし、例えば、セッションIDの一部として法的に保護されたデータや機密データをユーザに公開すると、セキュリティと法的な観点から大きな問題になります。

OWASPレポートでは、機密データが誤って共有されやすい例として、警備員が施設内の特定のIoTベースのカメラへのアクセス権を与えられた場合を想定しています。おそらく、それらのカメラは密閉された安全なエリアを監視しており、一方で、人を映し出す他のカメラは、より高い権限を持つ警備員や監督者に制限されているはずです。

警備員に許可されたカメラへのアクセス権を与えるために、開発者は以下のようなAPIコールを使用することができます。

/api/sites/111/cameras

それを受けて、アプリは警備員が見ることのできるカメラの詳細を以下の形式で送信します。

{ "id":"xxx","live_access_token":"xxxxbbbbb","building_id":"yyy"}

表面的には問題なく機能しているように見えます。アプリのグラフィカル・ユーザー・インターフェースを使用している警備員は、自分が見ることを許可されたカメラのフィードだけを見ることができます。問題は、一般的なコードを使用しているため、実際のAPIレスポンスには、施設内のすべてのカメラの全リストが含まれていることです。ネットワークを盗聴してそのデータを取得したり、警備員のアカウントを侵害したりすると、ネットワーク上のすべてのカメラの位置と名称を知ることができます。そして、そのデータに制限なくアクセスすることができるのです。

過剰なデータ露出をなくす

データの過剰な露出を防ぐ最大の鍵は、データとそれを取り巻く保護機能を理解することです。汎用的なAPIを作成し、ユーザーに表示する前にデータを選別することをクライアントに任せることは、多くの予防可能なセキュリティ侵害につながる危険な選択です。

関連するデータ保護を理解することに加えて、汎用APIを使ってユーザーにすべてを送信するプロセスを止めることも重要です。例えば、to_json()やto_string()のようなコードは避けなければなりません。代わりに、コードは許可されたユーザーに返す必要のあるプロパティを特に選び、その情報だけを送信するべきです。

保護されたデータが誤って過剰に共有されていないことを確認する方法として、組織は、セキュリティの追加レイヤーとして、スキーマベースのレスポンス検証メカニズムの実装を検討する必要があります。スキーマベースのレスポンス検証メカニズムでは、エラー報告のルールを含め、すべてのAPIメソッドから返されるデータを定義し、強制する必要があります。

最後に、PIIやPCIを含むと分類されるデータや、GDPRやHIPAAなどの規制で保護されている情報は、強力な暗号化を用いて保護する必要があります。これにより、過剰なデータ露出の脆弱性の一部としてデータの場所が漏れることがあっても、悪意のあるユーザーや脅威のあるアクターの手に渡ったとしても、データを保護するための優れた二次的な防御策が用意されています。

以下のブログページをご覧ください。 Secure Code Warriorブログページでは、この脆弱性に関するより詳しい情報や、他のセキュリティ上の欠陥の被害から組織や顧客を守る方法についてご紹介しています。また、Secure Code Warrior トレーニングプラットフォームのデモをお試しいただくことで、サイバーセキュリティに関するすべてのスキルを磨き上げ、最新の状態に保つことができます。

弊社製品や関連するセキュアコーディングのトピックに関する情報をお送りする許可をお願いします。当社は、お客様の個人情報を細心の注意を払って取り扱い、マーケティング目的で他社に販売することは決してありません。

フォームを送信するには、「Analytics」のCookieを有効にしてください。完了したら、再度無効にしてください。