インジェクション(Injection)とは何か | OWASP 2021

2021年に改訂されたOWASP Top 10:2021の中で、TOP3として挙げられたのが、「Injection」です。
日本語でも、そのまま「インジェクション」と訳されます

前回の改定時の2017年度版の、1位のインジェクションと7位のクロスサイトスクリプティングが、2021年度の「インジェクション」という項目でまとめられています。

順位は下がったものの、「94%のアプリケーションで、何らかのインジェクションに関する問題が確認されている」と言われるほど、現在も注意すべき脅威です。

インジェクションとは

プログラムの処理において、コードはデータか動作の指示(命令)かのどちらかを意味します。

インジェクション(Injection)はアプリケーションが入力値としてデータを受け取り、それを誤って、データではなく指示として処理してしまうことで発生します。

インジェクションの対策がなされていないアプリケーションでは、不正な入力・悪意のある入力によって意図しない動作をし、情報の機密性、完全性、可用性を侵害に繋がる可能性があります。

データベース内の情報への攻撃は、主にSQLでコーディングされるため「SQLインジェクション」と呼ばれます。

悪質なサイトへ誘導するスクリプトを仕掛けて、サイトに訪れるユーザーの個人情報などを得るクロスサイトスクリプティング(XSS)も、インジェクションの一種とされています。

対策

ユーザーの入力値について、想定されている形式で入力されているかの検証を、アプリケーション側とサーバー側で行います。インジェクションに利用されやすい特殊文字などは、エスケープ処理(特別な意味を持つ記号を普通の文字として解釈されるように処理)が必要です。

また、入力送信時に出るデータベース関連のエラーメッセージは詳細に表示しないことも対策に繋がります。