SCW アイコン
ヒーロー背景(区切りなし)
ブログ

コーダーズ・コンカー・セキュリティ OWASP トップ 10 API シリーズ-一括割り当て

マティアス・マドゥ博士
2020年10月21日 掲載
最終更新日: 2026年3月10日

大量割り当ての脆弱性が生まれたのは、最近のフレームワークの多くが、クライアントからの入力をコードの変数や内部のオブジェクトに自動的に束縛する関数の使用を開発者に推奨しているからです。これは、コードを単純化し、操作を高速化するために行われます。

攻撃者は、この手法を用いて、クライアントが決して更新してはならないオブジェクトのプロパティを強制的に変更することができます。通常、これは、ウェブサイトをダウンさせたり、企業秘密を盗んだりするのではなく、ユーザが自分自身に管理者権限を追加するような、ビジネス特有の問題につながります。また、攻撃者は、オブジェクト間の関係や、悪用しようとするアプリケーションのビジネスロジックについてもある程度把握していなければなりません。

しかし、いずれの場合も、巧妙で悪意のあるユーザーの手にかかれば、大量割り当ての脆弱性の危険性は低くなりません。

その前に、ゲーム性を持たせた課題をプレイしてみてはいかがでしょうか。

攻撃者はどのようにして大量割り当ての脆弱性を利用するのでしょうか?

OWASP が提示したシナリオ(私たちは少し修正しました)では、ライドシェアのアプリケーションを想定しています。このアプリケーショ ンには、大量割り当てを使用してコード内のオブジェクトにバインドされたさまざまなプロパティが含まれています。これらには、ユーザが変更できる許可関連のプロパティと、アプリケーションが内部でのみ設定すべきプロセス依存のプロパティがあります。どちらもオブジェクトにプロパティをバインドするために大量割り当てを使用しています。

このシナリオでは、多くのユーザー向けアプリケーションで一般的に行われているように、ライドシェアアプリケーションがユーザーにプロフィールの更新を許可しています。これは、PUTに送られたAPIコールを使用して行われ、次のJSONオブジェクトが返されます。

{"user_name":"SneakySnake", "age":17, "is_admin":false}

攻撃者(この場合はSneakySnake氏)は、プロパティとオブジェクトの関係を把握しているので、自分のプロフィールを更新する最初のリクエストを以下の文字列で再送信することができます。

{"user_name":"SneakySnake","age":24,, "is_admin":true}

エンドポイントは大量割り当てに対して脆弱なため、新しい入力を有効なものとして受け入れます。このハッカーは、自分のプロフィールに数年分を追加しただけでなく、自分に管理者権限を割り当てました。

マスアサインメントの脆弱性の解消

一部のフレームワークでは大量の代入機能が使えて便利かもしれませんが、APIの安全性を保ちたいのであれば、そのようなことは避けるべきです。代わりに、リクエストの値をオブジェクトに直接バインドするのではなく、パースします。また、縮小されたデータ転送オブジェクトを使用することで、オブジェクト自体に直接バインドするのとほぼ同じ利便性を得ることができますが、関連するリスクはありません。

さらなる予防策として、上記の例にある管理者権限のような機密性の高いプロパティを拒否して、APIコールでサーバーに受け入れられないようにすることもできます。さらに、すべてのプロパティをデフォルトで拒否し、ユーザーに更新や変更をさせたい特定の非センシティブなプロパティを許可するという方法もある。これらのいずれかを行うことで、APIをロックし、環境から大量割り当ての脆弱性を排除することができます。

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

リソースを表示
リソースを表示

大量代入の脆弱性は、多くの最新のフレームワークが、開発者がクライアントからの入力をコード変数や内部オブジェクトに自動的にバインドする関数の使用を奨励した結果生まれました。

もっと興味がありますか?

マティアス・マドゥ博士は、セキュリティ専門家、研究者、CTO、セキュア・コード・ウォリアーの共同創設者です。マティアスはゲント大学で静的解析ソリューションを中心としたアプリケーションセキュリティの博士号を取得しました。その後、米国のFortifyに入社し、開発者が安全なコードを書くのを手助けせずに、コードの問題を検出するだけでは不十分であることに気づきました。これがきっかけで、開発者を支援し、セキュリティの負担を軽減し、顧客の期待を超える製品を開発するようになりました。Team Awesomeの一員としてデスクにいない時は、RSAカンファレンス、BlackHat、DefConなどのカンファレンスでプレゼンテーションを行うステージでのプレゼンテーションを楽しんでいます。

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする文化を築くお手伝いをします。アプリケーションセキュリティマネージャー、開発者、CISO、またはセキュリティ関係者であるかに関わらず、安全でないコードに関連するリスクを軽減するお手伝いをします。

デモを予約
シェア:
リンクトインのブランドソーシャルx ロゴ
著者
マティアス・マドゥ博士
2020年10月21日発行

マティアス・マドゥ博士は、セキュリティ専門家、研究者、CTO、セキュア・コード・ウォリアーの共同創設者です。マティアスはゲント大学で静的解析ソリューションを中心としたアプリケーションセキュリティの博士号を取得しました。その後、米国のFortifyに入社し、開発者が安全なコードを書くのを手助けせずに、コードの問題を検出するだけでは不十分であることに気づきました。これがきっかけで、開発者を支援し、セキュリティの負担を軽減し、顧客の期待を超える製品を開発するようになりました。Team Awesomeの一員としてデスクにいない時は、RSAカンファレンス、BlackHat、DefConなどのカンファレンスでプレゼンテーションを行うステージでのプレゼンテーションを楽しんでいます。

マティアスは、15年以上のソフトウェアセキュリティの実務経験を持つ研究者および開発者です。フォーティファイ・ソフトウェアや自身の会社であるセンセイ・セキュリティなどの企業向けにソリューションを開発してきました。マティアスはキャリアを通じて、複数のアプリケーションセキュリティ研究プロジェクトを主導し、それが商用製品につながり、10件以上の特許を取得しています。デスクから離れている時には、上級アプリケーション・セキュリティ・トレーニング・コースの講師を務め、RSA Conference、Black Hat、DefCon、BSIMM、OWASP AppSec、BruConなどのグローバルカンファレンスで定期的に講演を行っています。

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

シェア:
リンクトインのブランドソーシャルx ロゴ

大量割り当ての脆弱性が生まれたのは、最近のフレームワークの多くが、クライアントからの入力をコードの変数や内部のオブジェクトに自動的に束縛する関数の使用を開発者に推奨しているからです。これは、コードを単純化し、操作を高速化するために行われます。

攻撃者は、この手法を用いて、クライアントが決して更新してはならないオブジェクトのプロパティを強制的に変更することができます。通常、これは、ウェブサイトをダウンさせたり、企業秘密を盗んだりするのではなく、ユーザが自分自身に管理者権限を追加するような、ビジネス特有の問題につながります。また、攻撃者は、オブジェクト間の関係や、悪用しようとするアプリケーションのビジネスロジックについてもある程度把握していなければなりません。

しかし、いずれの場合も、巧妙で悪意のあるユーザーの手にかかれば、大量割り当ての脆弱性の危険性は低くなりません。

その前に、ゲーム性を持たせた課題をプレイしてみてはいかがでしょうか。

攻撃者はどのようにして大量割り当ての脆弱性を利用するのでしょうか?

OWASP が提示したシナリオ(私たちは少し修正しました)では、ライドシェアのアプリケーションを想定しています。このアプリケーショ ンには、大量割り当てを使用してコード内のオブジェクトにバインドされたさまざまなプロパティが含まれています。これらには、ユーザが変更できる許可関連のプロパティと、アプリケーションが内部でのみ設定すべきプロセス依存のプロパティがあります。どちらもオブジェクトにプロパティをバインドするために大量割り当てを使用しています。

このシナリオでは、多くのユーザー向けアプリケーションで一般的に行われているように、ライドシェアアプリケーションがユーザーにプロフィールの更新を許可しています。これは、PUTに送られたAPIコールを使用して行われ、次のJSONオブジェクトが返されます。

{"user_name":"SneakySnake", "age":17, "is_admin":false}

攻撃者(この場合はSneakySnake氏)は、プロパティとオブジェクトの関係を把握しているので、自分のプロフィールを更新する最初のリクエストを以下の文字列で再送信することができます。

{"user_name":"SneakySnake","age":24,, "is_admin":true}

エンドポイントは大量割り当てに対して脆弱なため、新しい入力を有効なものとして受け入れます。このハッカーは、自分のプロフィールに数年分を追加しただけでなく、自分に管理者権限を割り当てました。

マスアサインメントの脆弱性の解消

一部のフレームワークでは大量の代入機能が使えて便利かもしれませんが、APIの安全性を保ちたいのであれば、そのようなことは避けるべきです。代わりに、リクエストの値をオブジェクトに直接バインドするのではなく、パースします。また、縮小されたデータ転送オブジェクトを使用することで、オブジェクト自体に直接バインドするのとほぼ同じ利便性を得ることができますが、関連するリスクはありません。

さらなる予防策として、上記の例にある管理者権限のような機密性の高いプロパティを拒否して、APIコールでサーバーに受け入れられないようにすることもできます。さらに、すべてのプロパティをデフォルトで拒否し、ユーザーに更新や変更をさせたい特定の非センシティブなプロパティを許可するという方法もある。これらのいずれかを行うことで、APIをロックし、環境から大量割り当ての脆弱性を排除することができます。

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

リソースを表示
リソースを表示

レポートをダウンロードするには、以下のフォームに記入してください

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

送信
SCW成功アイコン
SCWエラーアイコン
フォームを送信するには、「アナリティクス」クッキーを有効にしてください。設定が完了したら、再度無効にしても構いません。

大量割り当ての脆弱性が生まれたのは、最近のフレームワークの多くが、クライアントからの入力をコードの変数や内部のオブジェクトに自動的に束縛する関数の使用を開発者に推奨しているからです。これは、コードを単純化し、操作を高速化するために行われます。

攻撃者は、この手法を用いて、クライアントが決して更新してはならないオブジェクトのプロパティを強制的に変更することができます。通常、これは、ウェブサイトをダウンさせたり、企業秘密を盗んだりするのではなく、ユーザが自分自身に管理者権限を追加するような、ビジネス特有の問題につながります。また、攻撃者は、オブジェクト間の関係や、悪用しようとするアプリケーションのビジネスロジックについてもある程度把握していなければなりません。

しかし、いずれの場合も、巧妙で悪意のあるユーザーの手にかかれば、大量割り当ての脆弱性の危険性は低くなりません。

その前に、ゲーム性を持たせた課題をプレイしてみてはいかがでしょうか。

攻撃者はどのようにして大量割り当ての脆弱性を利用するのでしょうか?

OWASP が提示したシナリオ(私たちは少し修正しました)では、ライドシェアのアプリケーションを想定しています。このアプリケーショ ンには、大量割り当てを使用してコード内のオブジェクトにバインドされたさまざまなプロパティが含まれています。これらには、ユーザが変更できる許可関連のプロパティと、アプリケーションが内部でのみ設定すべきプロセス依存のプロパティがあります。どちらもオブジェクトにプロパティをバインドするために大量割り当てを使用しています。

このシナリオでは、多くのユーザー向けアプリケーションで一般的に行われているように、ライドシェアアプリケーションがユーザーにプロフィールの更新を許可しています。これは、PUTに送られたAPIコールを使用して行われ、次のJSONオブジェクトが返されます。

{"user_name":"SneakySnake", "age":17, "is_admin":false}

攻撃者(この場合はSneakySnake氏)は、プロパティとオブジェクトの関係を把握しているので、自分のプロフィールを更新する最初のリクエストを以下の文字列で再送信することができます。

{"user_name":"SneakySnake","age":24,, "is_admin":true}

エンドポイントは大量割り当てに対して脆弱なため、新しい入力を有効なものとして受け入れます。このハッカーは、自分のプロフィールに数年分を追加しただけでなく、自分に管理者権限を割り当てました。

マスアサインメントの脆弱性の解消

一部のフレームワークでは大量の代入機能が使えて便利かもしれませんが、APIの安全性を保ちたいのであれば、そのようなことは避けるべきです。代わりに、リクエストの値をオブジェクトに直接バインドするのではなく、パースします。また、縮小されたデータ転送オブジェクトを使用することで、オブジェクト自体に直接バインドするのとほぼ同じ利便性を得ることができますが、関連するリスクはありません。

さらなる予防策として、上記の例にある管理者権限のような機密性の高いプロパティを拒否して、APIコールでサーバーに受け入れられないようにすることもできます。さらに、すべてのプロパティをデフォルトで拒否し、ユーザーに更新や変更をさせたい特定の非センシティブなプロパティを許可するという方法もある。これらのいずれかを行うことで、APIをロックし、環境から大量割り当ての脆弱性を排除することができます。

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

オンラインセミナーを見る
始めよう
もっと詳しく

以下のリンクをクリックして、このリソースのPDFをダウンロードしてください。

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする文化を築くお手伝いをします。アプリケーションセキュリティマネージャー、開発者、CISO、またはセキュリティ関係者であるかに関わらず、安全でないコードに関連するリスクを軽減するお手伝いをします。

レポートを表示デモを予約
PDFをダウンロード
リソースを表示
シェア:
リンクトインのブランドソーシャルx ロゴ
もっと興味がありますか?

シェア:
リンクトインのブランドソーシャルx ロゴ
著者
マティアス・マドゥ博士
2020年10月21日発行

マティアス・マドゥ博士は、セキュリティ専門家、研究者、CTO、セキュア・コード・ウォリアーの共同創設者です。マティアスはゲント大学で静的解析ソリューションを中心としたアプリケーションセキュリティの博士号を取得しました。その後、米国のFortifyに入社し、開発者が安全なコードを書くのを手助けせずに、コードの問題を検出するだけでは不十分であることに気づきました。これがきっかけで、開発者を支援し、セキュリティの負担を軽減し、顧客の期待を超える製品を開発するようになりました。Team Awesomeの一員としてデスクにいない時は、RSAカンファレンス、BlackHat、DefConなどのカンファレンスでプレゼンテーションを行うステージでのプレゼンテーションを楽しんでいます。

マティアスは、15年以上のソフトウェアセキュリティの実務経験を持つ研究者および開発者です。フォーティファイ・ソフトウェアや自身の会社であるセンセイ・セキュリティなどの企業向けにソリューションを開発してきました。マティアスはキャリアを通じて、複数のアプリケーションセキュリティ研究プロジェクトを主導し、それが商用製品につながり、10件以上の特許を取得しています。デスクから離れている時には、上級アプリケーション・セキュリティ・トレーニング・コースの講師を務め、RSA Conference、Black Hat、DefCon、BSIMM、OWASP AppSec、BruConなどのグローバルカンファレンスで定期的に講演を行っています。

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

シェア:
リンクトインのブランドソーシャルx ロゴ

大量割り当ての脆弱性が生まれたのは、最近のフレームワークの多くが、クライアントからの入力をコードの変数や内部のオブジェクトに自動的に束縛する関数の使用を開発者に推奨しているからです。これは、コードを単純化し、操作を高速化するために行われます。

攻撃者は、この手法を用いて、クライアントが決して更新してはならないオブジェクトのプロパティを強制的に変更することができます。通常、これは、ウェブサイトをダウンさせたり、企業秘密を盗んだりするのではなく、ユーザが自分自身に管理者権限を追加するような、ビジネス特有の問題につながります。また、攻撃者は、オブジェクト間の関係や、悪用しようとするアプリケーションのビジネスロジックについてもある程度把握していなければなりません。

しかし、いずれの場合も、巧妙で悪意のあるユーザーの手にかかれば、大量割り当ての脆弱性の危険性は低くなりません。

その前に、ゲーム性を持たせた課題をプレイしてみてはいかがでしょうか。

攻撃者はどのようにして大量割り当ての脆弱性を利用するのでしょうか?

OWASP が提示したシナリオ(私たちは少し修正しました)では、ライドシェアのアプリケーションを想定しています。このアプリケーショ ンには、大量割り当てを使用してコード内のオブジェクトにバインドされたさまざまなプロパティが含まれています。これらには、ユーザが変更できる許可関連のプロパティと、アプリケーションが内部でのみ設定すべきプロセス依存のプロパティがあります。どちらもオブジェクトにプロパティをバインドするために大量割り当てを使用しています。

このシナリオでは、多くのユーザー向けアプリケーションで一般的に行われているように、ライドシェアアプリケーションがユーザーにプロフィールの更新を許可しています。これは、PUTに送られたAPIコールを使用して行われ、次のJSONオブジェクトが返されます。

{"user_name":"SneakySnake", "age":17, "is_admin":false}

攻撃者(この場合はSneakySnake氏)は、プロパティとオブジェクトの関係を把握しているので、自分のプロフィールを更新する最初のリクエストを以下の文字列で再送信することができます。

{"user_name":"SneakySnake","age":24,, "is_admin":true}

エンドポイントは大量割り当てに対して脆弱なため、新しい入力を有効なものとして受け入れます。このハッカーは、自分のプロフィールに数年分を追加しただけでなく、自分に管理者権限を割り当てました。

マスアサインメントの脆弱性の解消

一部のフレームワークでは大量の代入機能が使えて便利かもしれませんが、APIの安全性を保ちたいのであれば、そのようなことは避けるべきです。代わりに、リクエストの値をオブジェクトに直接バインドするのではなく、パースします。また、縮小されたデータ転送オブジェクトを使用することで、オブジェクト自体に直接バインドするのとほぼ同じ利便性を得ることができますが、関連するリスクはありません。

さらなる予防策として、上記の例にある管理者権限のような機密性の高いプロパティを拒否して、APIコールでサーバーに受け入れられないようにすることもできます。さらに、すべてのプロパティをデフォルトで拒否し、ユーザーに更新や変更をさせたい特定の非センシティブなプロパティを許可するという方法もある。これらのいずれかを行うことで、APIをロックし、環境から大量割り当ての脆弱性を排除することができます。

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

目次

PDFをダウンロード
リソースを表示
もっと興味がありますか?

マティアス・マドゥ博士は、セキュリティ専門家、研究者、CTO、セキュア・コード・ウォリアーの共同創設者です。マティアスはゲント大学で静的解析ソリューションを中心としたアプリケーションセキュリティの博士号を取得しました。その後、米国のFortifyに入社し、開発者が安全なコードを書くのを手助けせずに、コードの問題を検出するだけでは不十分であることに気づきました。これがきっかけで、開発者を支援し、セキュリティの負担を軽減し、顧客の期待を超える製品を開発するようになりました。Team Awesomeの一員としてデスクにいない時は、RSAカンファレンス、BlackHat、DefConなどのカンファレンスでプレゼンテーションを行うステージでのプレゼンテーションを楽しんでいます。

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする文化を築くお手伝いをします。アプリケーションセキュリティマネージャー、開発者、CISO、またはセキュリティ関係者であるかに関わらず、安全でないコードに関連するリスクを軽減するお手伝いをします。

デモを予約[ダウンロード]
シェア:
リンクトインのブランドソーシャルx ロゴ
リソースハブ

始めるためのリソース

その他の投稿
リソースハブ

始めるためのリソース

その他の投稿