DigiCertが、現実の問題を解決するために、デジタルトラストの確立、管理、拡大をどのように支援しているかをご覧ください。
世界のIT・情報セキュリティリーダーたちが、デジタル技術の信頼性を欠いたセキュリティはセキュリティではないと考えている理由とは?
2023年8月15日よりCertCentralのサインインではユーザ名とパスワードのほかにワンタイムパスワード(OTP)もしくはクライアント証明書の二要素認証による提示が必要となりました。 設定等についてはこちらのKnowledgeを参照ください。
概要
大半のWebアプリケーションでは、データベースの問い合わせにSQLを用いています。SQL文をアプリケーションで組み立てる際に、外部からのデータをSQL文の一部としてはめ込むプログラム処理にバグがあると、本来「データ」であるはずの文字列がSQL文として認識される場合があります。これにより、SQL文を本来とは別の意味に改変してしまう技法がSQLインジェクション攻撃です。また、SQLインジェクション攻撃を許す状況をSQLインジェクション脆弱性と言います。 日本では2005年にSQLインジェクション攻撃による被害が初めて報告され、それ以来継続して大きな被害が出続けています。攻撃のイメージと影響
掲示板の投稿を登録したテーブルpostsがあり、以下のSQL文を実行しているとします。$idは外部から指定する変数で、掲示板の投稿IDです。SELECT body,subject FROM posts WHERE id='$id'
ここで、$id = "' union select id, password from users -- " と外部から指定された場合、生成されるSQL文は以下の通りです。SELECT body,subject FROM posts WHERE id='' union select id, password from users -- '
ここで、SQLのunionは、2つの検索結果を合わせて(和集合)検索結果とする演算子です。これにより、本来投稿内容のみを表示する問い合わせが、個人情報を表示する問い合わせに変化し、個人情報の漏洩に悪用されることになります。脆弱性による影響
この脆弱性による影響の例として下記がありますが、これらに限りません。SQLインジェクション攻撃を受けると、脆弱性のあるSQL文アクセスするデーブルとは無関係に、データベース内のすべての情報が漏洩する可能性がある点に注意が必要です。脆弱性の有無の確認方法
脆弱性検査ツールがない場合は、手動診断で脆弱性の有無を検証することもできます。この場合、独立行政法人情報処理推進機構(IPA)が公開している「安全なウェブサイトの作り方」別冊の「ウェブ健康診断仕様」に診断の方法が説明されており、参考になります。対策
SQLインジェクション脆弱性はアプリケーションのバグなので、アプリケーション改修による対策が基本です。SQL呼び出しの際に、文字列を連結してSQL文を組み立てるのではなく、プレースホルダという仕組みを利用して、SQLを呼び出すことを徹底することが大切です。
なお、デジサートの「クラウド型WAF」では、SQLインジェクション脆弱性をからウェブサイトが攻撃を受けるのを防ぐことができます。参考文献
安全なウェブサイトの作り方、安全なSQLの呼び出し方、ウェブ健康診断仕様(独立行政法人情報処理推進機構) https://www.ipa.go.jp/security/vuln/websecurity.html修正の上再掲しました。
© 2024 DigiCert, Inc. All rights reserved.
リーガルリポジトリ Webtrust 監査 利用条件 プライバシーポリシー アクセシビリティ Cookie 設定 プライバシーリクエストフォーム