NoSQL インジェクション
NoSQL インジェクション とは何ですか?
NoSQL インジェクションNoSQL データベースの演算子・JSON・クエリ DSL を改ざんし、ロジックを回避したりデータを抽出したりするインジェクション攻撃。
NoSQL インジェクションは、信頼できない入力からドキュメント指向・キーバリュー型データベース(MongoDB、CouchDB、Elasticsearch など)のクエリを組み立てるアプリケーションを悪用します。攻撃者は SQL 構文ではなく、JSON 構造、$ne や $gt などの演算子、あるいはクエリ言語の断片を操作し、認証情報なしのログイン、任意ドキュメントの取得、エンジンが対応している場合はサーバーサイド JavaScript の評価を引き起こします。ブラインド型は真偽値や時間差で情報を漏洩させます。対策は、厳密なスキーマ検証、想定するプリミティブ型へのキャスト、文字列を期待する箇所でのオブジェクト型ペイロードの拒否、明示的な演算子を用いるドライバのクエリビルダーの利用、データベースアカウントへの最小権限付与です。
● 例
- 01
MongoDB のログインエンドポイントに {"username": "admin", "password": {"$ne": null}} を送り、パスワードハッシュ比較を回避する。
- 02
$where 句に JavaScript 式を注入し、脆弱なエンドポイントからドキュメントを列挙する。
● よくある質問
NoSQL インジェクション とは何ですか?
NoSQL データベースの演算子・JSON・クエリ DSL を改ざんし、ロジックを回避したりデータを抽出したりするインジェクション攻撃。 サイバーセキュリティの 攻撃と脅威 カテゴリに属します。
NoSQL インジェクション とはどういう意味ですか?
NoSQL データベースの演算子・JSON・クエリ DSL を改ざんし、ロジックを回避したりデータを抽出したりするインジェクション攻撃。
NoSQL インジェクション からどのように防御しますか?
NoSQL インジェクション に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
NoSQL インジェクション の別名は何ですか?
一般的な別名: NoSQLi。