重大な脆弱性「SQLインジェクション」が発生する背景
こちらのnoteは、セキュリティ専門家松野によるニュース解説ラジオ「今日の10分セキュリティラジオ」1月17日の放送内容を一部抜粋しご紹介します
・今回の解説ニュース
・SQLインジェクションへの対策、2つのアプローチ
・なぜ対策があってもSQLインジェクションの被害が減らないのか?
今回の解説ニュース
SQLインジェクションの攻撃により、Webサイトから一部のメールアドレスが漏洩したということです。SQLインジェクションの対策や、脆弱性が減らない現状の背景について説明します。
今回のインシデントは、Webサーバのプログラムの一部の脆弱性を突いて、会員のメールアドレスが外部に流出している可能性が判明したということです。原因として、SQLインジェクションの脆弱性が挙げられています。
対策として、攻撃のあったプログラムを停止し、再度の攻撃を受けないよう対応を実施したということです。また、対象の顧客に対し、個別にメールを送付し、個人情報保護委員会と警察署へ報告を行っています。再発防止策として、外部専門機関による脆弱性診断を実施し、サーバシステム、Webサイトのセキュリティを強化したということです。
SQLインジェクションへの対策、2つのアプローチ
SQLインジェクションの対策として、ソースコードを修正する方法と、アプリケーションの外側で修正する方法があります。それぞれについて説明します。
まず、ソースコードを修正する方法として、SQLインジェクションが発生している箇所を特定して、適切な書き方に修正します。具体的には、SQL文を動的に組み立てている箇所に文字列連結を使っていることが考えられますので、代わりにプレースホルダを使いましょう。プレースホルダとは、外部から入力される値を受け取る場所です。SQL文で外部から入力される値をプレースホルダで受け取ることにより、機械的な処理によってSQL文が組み立てられるため、SQLインジェクションの脆弱性を解消することができます。
また、アプリケーションの外側で修正する方法として、WAFを導入することが挙げられます。WAFとは、Web Application Firewallの略で、外部からWebアプリケーションに対する攻撃を防ぐセキュリティ対策です。Webサイトの代わりに外部からの通信を受け取り、SQLインジェクションなどの攻撃とみなされた通信を遮断します。ただし、WAFですべての攻撃を防ぐことができるわけではありませんので、ソースコードを修正して脆弱性を根本的に解消することを原則としましょう。
その他のトピック
なぜ対策があってもSQLインジェクションの被害が減らないのか?(全文はこちら)