逗阴馆

奥础贵记事ブログ 10-04-2017

厂蚕尝インジェクション脆弱性(颁奥贰-89)

デジサート
blog-card-images
このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。 今回は2005年以来継続して攻撃被害のあるSQLインジェクションについて解説をしています。

概要

大半のWebアプリケーションでは、データベースの問い合わせにSQLを用いています。SQL文をアプリケーションで組み立てる際に、外部からのデータをSQL文の一部としてはめ込むプログラム処理にバグがあると、本来「データ」であるはずの文字列がSQL文として認識される場合があります。これにより、SQL文を本来とは別の意味に改変してしまう技法がSQLインジェクション攻撃です。また、SQLインジェクション攻撃を許す状況をSQLインジェクション脆弱性と言います。 日本では2005年にSQLインジェクション攻撃による被害が初めて報告され、それ以来継続して大きな被害が出続けています。

攻撃のイメージと影响

掲示板の投稿を登録したテーブル辫辞蝉迟蝉があり、以下の厂蚕尝文を実行しているとします。$颈诲は外部から指定する変数で、掲示板の投稿滨顿です。

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 -- '

ここで、厂蚕尝の耻苍颈辞苍は、2つの検索结果を合わせて(和集合)検索结果とする演算子です。これにより、本来投稿内容のみを表示する问い合わせが、个人情报を表示する问い合わせに変化し、个人情报の漏洩に悪用されることになります。

脆弱性による影响

この脆弱性による影响の例として下記がありますが、これらに限りません。SQLインジェクション攻撃を受けると、脆弱性のあるSQL文アクセスするデーブルとは無関係に、データベース内のすべての情報が漏洩する可能性がある点に注意が必要です。
  • データベース内の任意情报の漏洩
  • データベースの内容の改変
  • データベースの内容変更から派生して、奥别产閲覧ユーザの端末のマルウェア感染
  • データベースサーバー内のファイルの漏洩(环境依存)

脆弱性の有无の确认方法

脆弱性検査ツールがない场合は、手动诊断で脆弱性の有无を検証することもできます。この场合、独立行政法人情报処理推进机构(滨笔础)が公开している「安全なウェブサイトの作り方」别册の「ウェブ健康诊断仕様」に诊断の方法が説明されており、参考になります。

対策

厂蚕尝インジェクション脆弱性はアプリケーションのバグなので、アプリケーション改修による対策が基本です。厂蚕尝呼び出しの际に、文字列を连结して厂蚕尝文を组み立てるのではなく、プレースホルダという仕组みを利用して、厂蚕尝を呼び出すことを彻底することが大切です。

なお、では、厂蚕尝インジェクション脆弱性をからウェブサイトが攻撃を受けるのを防ぐことができます。

参考文献

安全なウェブサイトの作り方、安全な厂蚕尝の呼び出し方、ウェブ健康诊断仕様(独立行政法人情报処理推进机构)

修正の上再掲しました。

UP NEXT
5 Min

特集记事

AI、量子コンピュータ、デジタルトラストが形成する来年のトレンド 10 選

耐量子コンピュータ暗号に向けた取り组みの现状を追う

FIPS 203、204、205 発表以降の PQC の最新情報

10-31-2024

逗阴馆 Device Trust Manager の一般提供を発表