LCNC-SEC-06: インジェクション処理の不備

リスク評価 *

普及度
検出難易度
悪用難易度
技術的影響

2

2

2

2

要旨

ローコード/ノーコード開発プラットフォームを使用して構築されたリソースは直接入力したり、さまざまなサービスからユーザーが提供したコンテンツを取得するなど、いろいろな方法でユーザーが提供したデータを取り込みます。 このようなデータにはアプリケーション、オートメーション、コネクション、ワークフロー、ボット、インテグレーションにリスクをもたらす可能性がある悪意のあるペイロードが含まれていることがあります。

ビジネスユーザーへの説明

ユーザーがシステムにデータを入力する際、そのデータは「保存または処理されるデータ」ではなく「実行されるコード」として解釈されることがあります。

説明

ローコード/ノーコードアプリケーションは直接入力したり、さまざまなサービスからユーザーが提供したコンテンツを取得するなど、いろいろな方法でユーザーが提供したデータを取り込みます。 アプリケーションはユーザーの入力に基づいて動的にデータを問い合わせることが多いため、インジェクションベースの攻撃の重大なリスクにさらされています。 さらに、アプリケーションはデータベースへの問い合わせ、ドキュメントの解析など、さまざまな方法でユーザーが提供したコンテンツを使用できるため、インジェクションベースの攻撃から保護するには、特定のアプリケーションとそのユーザーデータの使用を考慮する必要があります。

攻撃シナリオの例

シナリオ #1

ある開発者は RSS フィードへの新しいパブリケーションが作成されるたびにトリガーして SQL データベースに保存するオートメーションを設定しました。 このフィードをコントロールする攻撃者はこのフローを使用して、重要なレコードを削除するコマンドをデータベースに注入してしまいます。

シナリオ #2

ある開発者はユーザーがフォームに入力できるアプリケーションを作成しました。 このアプリはフォームデータを CSV ファイルとしてエンコードし、共有ドライブに保存します。 プラットフォームは SQL インジェクション攻撃に対してフォームの入力をサニタイズするものの、セキュリティチームはデータを入力するさまざまなものをすべて考慮してラベル付けする必要があります。これには、Office マクロ攻撃など、何かが見逃される可能性があります。 攻撃者はこれを利用して、CSV ファイルに書き込まれるマクロを入力します。 ユーザーは CSV ファイルを開いてユーザーフォームに分解すると、そのマクロが実行されます。

攻撃と悪用のシナリオの例 - ビジネスユーザー

シナリオ #1

あるユーザーは E コマースストアのオンラインフィードバックフォームを作成しました。悪意のあるユーザーはデータベースコマンドの知識を使用してフォームを埋めて、ある商品の価格を $1,000 から $1 に更新します。それからそのハッカーは $1,000 の商品を $1 で購入し、会社に $999 の損害を与えます。

シナリオ #2

あるユーザーは新規ユーザー用の登録フォームを作成しました。悪意のあるユーザーはデータベースコマンドの知識を使用してユーザーフィールドに特定の入力を作成し、データベースからすべてのユーザーを削除します。保留中の注文を持つユーザーが注文のステータスを確認しようとすると、自分のアカウントが存在しないと告げられます。

防止方法

  • アプリケーションでその入力に対して実行される操作を考慮して、ユーザー入力をサニタイズする。

  • SQL でのデータベース連携にはクエリのパラメータ化、ストアドプロシージャ、エスケープも使用する。

  • サニタイズされていないユーザー入力のリスクについてビジネスユーザーに教育する。プラットフォームはこの問題を自然に解消することはできません。

参考資料

Last updated