#143. NoSQLインジェクション

iはInjectionの頭文字

NoSQLで連想するのはAWS DynamoDBくらいのものです。しかも稼働しているのを見たことはありません。NoSQLの特徴はJSON形式で保存されるということです。以前、JSONの構造を解体する記事を発行しました。

SQLインジェクションは良く知られています。IPA試験の午前問題で、どのような攻撃であるのか、SQL文法を関係させた出題がかつて有りましたが、最近は無くなったように思います。

SQLインジェクションの説明はどれか。
(あ)Webアプリケーションに問題があるとき,データベースに悪意のある問合せや操作を行う命令文を入力して,データベースのデータを改ざんしたり不正に取得したりする攻撃
(い)悪意のあるスクリプトを埋め込んだWebページを訪問者に閲覧させて,別のWebサイトで,その訪問者が意図しない操作を行わせる攻撃
(う)市販されているDBMSの脆弱性を利用することによって,宿主となるデータベースサーバを探して自己伝染を繰り返し,インターネットのトラフィックを急増させる攻撃
(え)訪問者の入力データをそのまま画面に表示するWebサイトに対して,悪意のあるスクリプトを埋め込んだ入力データを送ることによって,訪問者のブラウザで実行させる攻撃

【NoSQLインジェクション攻撃とは】
Tenableの説明を見ましたが、もうひとつ分かりにくいです。サニタイジングせよというが、具体例がないのです。
クラメソのブログで解説がありました。
「完璧なサニタイズ処理を自前で実装するのはハードルが高いので、クエリストリングをバリデーションして、不正なリクエストにはさっさとエラーを返してしまいましょう。」
ただのSQL文法(ただしOracle Bronzeレベル)なら理解もできようが、NoSQLではそもそも理解がむずかしいようです。

今後、NoSQLが普及すると当該NoSQLインジェクション攻撃が増えるやもしれません。