NoSQLインジェクションについて説明していきます。
■概要
NoSQLインジェクションは、アプリケーションがユーザー入力を信頼してNoSQLデータベース(例:MongoDB、CouchDB、Elasticsearch、Redisなど)へのクエリにそのまま組み込むことで発生する脆弱性です。
SQLインジェクションと同じ本質(外部入力がクエリ構造を破壊して予期しない処理を起こす)ですが、ペイロードや脆弱性点はNoSQL固有の構文や機能(JSON構造、演算子、サーバー側JSなど)に依存します。
■想定される被害
NoSQLインジェクションによって、以下のような被害にあう可能性があります。
どのような被害を受ける可能性があるかあらかじめ把握しておき、攻撃を受けないように対策を検討することが必要です。
・認証バイパス
・データ漏洩
・データ操作
・権限昇格
■対策
NoSQLインジェクションの対策として挙げられるものは以下のようなものとなります。
・クライアント入力をクエリ構造として直接使わない。
・入力検証を行い、受け付けるフィールド名・型を明示的に固定する。