7章SQLインジェクションの検出

新井 悠

7.1 SQLインジェクションの概要

本章は日本語版オリジナルの記事である。私たちが日常的に利用しているショッピングサイトなどは、データベースと連携したWebアプリケーションであることがほとんどだ。その多くが、利用者の入力をもとにSQL文を組み立て、商品検索などを可能としていることだろう。このとき、Webアプリケーション側でのSQL文の組み立て方法に問題がある場合、それを悪用してデータベースの不正利用を招く可能性がある。事実、たとえばAkamai社のセキュリティレポート「2020年インターネットの現状/セキュリティ:金融サービス——敵対的乗っ取り攻撃」によると†1、2017年12月から2019年の11月までの24ヵ月間に観測された、Webアプリケーションを狙う攻撃のうち、72%以上がSQLインジェクションの試みであったという。こうした脆弱性を悪用するSQLインジェクション攻撃は、2005年頃から日本でも被害が報告されるようになった。そこから14年経った本書の執筆時点においても、日本国内においていまだに同種の脆弱性を悪用され、被害が発生しているという実態がある。

[†1] 「2020年インターネットの現状/セキュリティ:金融サービス——敵対的乗っ取り攻撃」https://www.akamai.com/jp/ja/resources/our-thinking/state-of-the-internet-report/global-state-of-the-internet-security-ddos-attack-reports.jsp

もちろん、SQL文の組み立てをすべてプレースホルダで実装する、といった対策をとれば、SQLインジェクションに対する根本的な解決をはかることができる。一方で、今どのような攻撃が流行しているのかといった現状把握を行うためにSQLインジェクションを検出することも重要と考えられる。この章では、SQLインジェクションの検出器を開発することで、そうした攻撃の検出や対処を行うための手がかりとする。なお、本書ではSQLインジェクションに関する詳細な説明は行わない。それらについて詳細に知りたい場合は、通称「徳丸本 ...

Get セキュリティエンジニアのための機械学習 ―AI技術によるサイバーセキュリティ対策入門 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.