防衛省が5月17日に始めた、大規模接種センターの新型コロナワクチン接種予約システム。Twitterでは「架空の番号で予約できる」「接種期間外でも予約できる」など、仕様にさまざまな問題が指摘された。その中には「SQLインジェクション」という手法を使い、システムが使っているデータベースに不正アクセスできてしまう可能性がある、という指摘もあった。
SQLインジェクションとは、システムが想定しない「SQL文」を何らかの方法で実行させ、利用しているデータベースを不正に操作する手法を指す。SQL文は、データベースを操作するための命令文だ。
ネット上では、本当に試したかのように「SQLインジェクションが行えた」と報告する投稿もあった。一方で、こういった行為は不正アクセス禁止法に抵触するのではないか、という指摘も出ている。SQLインジェクションが可能かどうか試す行為は本当に犯罪に当たるのか。ネットセキュリティ専門会社のEGセキュアソリューションズで代表取締役を務める徳丸浩さんに聞いた。
【更新:2021年5月20日午後1時 当初見出しを「犯罪にならない」としていましたが、電子計算機損壊等業務妨害罪など別の罪に当たる可能性があるため、「不正アクセスにはならない」と変更しました。】
徳丸さんによれば、今回のワクチン予約システムにSQLインジェクションを行う行為が不正アクセス禁止法に抵触する可能性は低いという。ただし、状況によっては例外もあるとしている。
「不正アクセス禁止法はパスワードなどで保護されたサイトが対象。今回の予約システムにはこういった認証が設定されておらず、SQLインジェクションを試すだけなら対象外になるとみられる。ただし、データベースが別のシステムと連携しており、そちらがパスワードで保護されていた場合は、抵触する可能性もある」(徳丸さん)
Twitter上では架空の番号でも予約できるという指摘があったが、こういった行為も過度に行えば罪に問われる場合がある。例えば、架空の予約を数百件、数千件と行った結果、ワクチン接種現場での業務に悪影響を与えた場合、偽計業務妨害に当たる可能性があるという。
場合によっては犯罪になりうるSQLインジェクション。実際に行えてしまうと、システムやその提供者はどんなリスクを抱えることになるのか。
徳丸さんによれば、SQLインジェクションを行うことで、システムが利用するデータベース上の情報を不正に変更できるという。変更の仕方によっては、本来想定していないデータが追加される、データを削除される、情報が漏えいするといった事態が起こる場合もある。もし攻撃されたデータベースを他のシステムでも使っている場合、そのシステムに影響が出る可能性もあるという。
今回のワクチン予約システムは、生年月日や事前に配布された接種券番号など4つの数値を入力する仕組みだ。このシステムでは「UPSERT文」というSQL文を使って、これらの情報をデータベースに登録しているとみられる。
UPSERT文では、データベース上にすでに情報があれば更新し、なければ新規に登録する、という処理を行う。仮に予約システム上でSQLインジェクションが行える場合、この工程を不正に書き換えられる可能性があるという。変更の仕方によっては、情報漏えいにもつながりうるとしている。
ただし、本当に今回の予約システムでSQLインジェクションが行えるかどうかについては「そもそも、SQLインジェクションが行えるという話があくまでSNS上のうわさ。真偽が定かでなく、ガセネタの可能性が高い」(徳丸さん)としている。
Twitterではさまざまな問題が指摘されたワクチン予約システム。しかし徳丸さんは、仮に架空の番号で予約したとしても、接種現場では本人確認書類や接種券を見せないと予防接種ができない仕組みになっていることを指摘。いたずら以上にはならないことから、システムの仕様は状況に対して妥当なものだと分析する。
「急な話だったので、スピードを優先してシンプルなシステムを作ったとみられる。そもそも現状は緊急事態なので開発に何カ月も掛けるのはナンセンス。他人の情報が見えるといった話が出ている訳ではないので、確かに“イケてない”ところもあるが、国民の利益につながる判断をしたのでは」
Copyright © ITmedia, Inc. All Rights Reserved.
Special
PR