SQLインジェクション(エスキューエルインジェクション)とは
SQLインジェクションとは、入力欄から不正な命令を紛れ込ませ、データベースを勝手に操作してしまうサイバー攻撃のことです。本来は名前や検索語を打ち込む欄に、こっそりデータベースへの命令を書き込むことで、情報を盗み見たり、書き換えたりします。Webサイトでは古くからある、代表的な脆弱性のひとつです。
なぜ命令が実行されてしまうのか
攻撃が成り立つのは、システムが「ただのデータ」と「命令」をうまく区別できないときです。入力された文字を、安全策なしにそのままデータベースへの命令の一部として組み立ててしまうと、本来はデータのはずの文字列が、命令として実行されてしまいます。これにより、機密データの漏えいや改ざん、認証の回避といった深刻な被害につながりかねません。
AI時代の「プロンプトインジェクション」とそっくり
この攻撃の発想は、AIの世界にも引き継がれています。AIへの指示文(プロンプト)に、こっそり別の命令を紛れ込ませて誤作動させる「プロンプトインジェクション」は、SQLインジェクションのAI版といえる存在です。「データに混ぜた命令が、命令として実行されてしまう」という根っこは、新旧でそっくり。命令とデータの境目があいまいだと攻撃が通る、という構図は変わりません。
TopicAIの新しい脅威は、実は「古い攻撃」の子孫
AI時代に話題のプロンプトインジェクションは、いかにも目新しい脅威に見えます。けれども、その発想の原型は、何十年も前からあるSQLインジェクションにあります。どちらも「データのつもりの入力に、こっそり命令を忍ばせる」点が同じ。攻撃の手口は装いを変えても、根っこの弱点は地続きだという、セキュリティの定番の教訓がここにも表れています。
関連用語
SQLインジェクションに関するよくある質問
- SQLインジェクションはなぜ起きてしまうのですか?
- システムが「ただのデータ」と「命令」をうまく区別できないときに成り立ちます。入力された文字を安全策なしにそのままデータベースへの命令の一部として組み立てると、本来データのはずの文字列が命令として実行され、情報漏えいや改ざん、認証の回避につながりかねません。
- SQLインジェクションとプロンプトインジェクションは関係がありますか?
- 発想がそっくりです。AIへの指示文に別の命令を紛れ込ませて誤作動させるプロンプトインジェクションは、SQLインジェクションのAI版といえます。「データに混ぜた命令が、命令として実行されてしまう」という根っこは新旧で共通しています。
- なぜ古い攻撃なのにAIの世界でも重要なのですか?
- AI時代に話題のプロンプトインジェクションが、何十年も前からあるSQLインジェクションを原型とするからです。どちらも「データのつもりの入力に、こっそり命令を忍ばせる」点が同じで、攻撃の手口は装いを変えても根っこの弱点は地続きだ、というセキュリティの定番の教訓を示しています。