CSRF脆弱性が攻撃されることは、それがもたらす被害の内容によっては、不正アクセス禁止法が守ろうとしているものと同等のものが侵害される場合もある。たとえば、本人でなければ見ることのできないはずの情報が、CSRF脆弱性を突く罠を仕掛けた者に送信されるといった攻撃は、不正アクセス行為の典型的な侵害事例と同様の被害をもたらす。また、同法の目的である「アクセス制御機能により実現される電気通信に関する秩序の維持」(第1条)が損なわれるという点も共通する。
しかしながら、CSRF脆弱性を突く攻撃行為は、結果が同じてあっても手段が異なるために、不正アクセス禁止法による処罰は難しいのではないかと以前から思っていた。これについては、2005年7月3日の日記「クロスサイトリクエストフォージェリ(CSRF)対策がいまいち進まなかったのはなぜか」にも書いた。
問題提起が憚られるもうひとつの理由
(略)CSRFによる被害が出たとき、罠を仕掛けた攻撃者の行為は、日本の法律に照らして違法となるだろうか?
アクセスをするのは被害者自身によるものであるし、そのアクセス自体は制限された利用の制限を免れるものではないので、不正アクセス禁止法には触れないと思われる。(略)
刑法改正で予定されている「不正指令電磁的記録作成等の罪」ならば、こうした行為を罪に問えるかもしれない。これは俗に「ウイルス作成罪」と呼ばれてきたものであるが、改正案の条文は次のようになっており、いわゆるウイルスのみでなく、受動的攻撃全般をも指すようにも解釈できそうである。
人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせるべき不正な指令を与える電磁的記録
この法改正が必要とされていることからも、現行法で受動的攻撃のようなものをカバーしきれていないことがうかがえるところであり、この刑法改正は、 CSRF攻撃も抑止できるかもしれないという意味で歓迎されるところである*3が、去年もこの改正は見送られており、いまだその抑止効果は有効になっていない。
この状況で下手にCSRFの危険性を主張しはじめると、違法でなければ何をやってもよいという輩が、悪戯を繰り返して被害を出しかねないという懸念もあったのではなかろうか。
XSS脆弱性の場合は、罠によって他人に他所のドメインのページの画面上でスクリプトを実行させるところまでは、CSRF同様に罪に問えないと思われるが、それによって盗んだcookie(セッションID)を使って当該サイトにセッションハイジャックのアクセスをした時点で、不正アクセス禁止法3条2項2号違反となると思われるため、安心して啓発活動をすることができた。
そうした法律による保護が、CSRFに対してはまだできていないため、誰も問題提起せずに来てしまったのではなかろうか。
(略)荒らし行為では済まないような(つまり、情報漏洩など、取り返しのつかない結果をもたらす) CSRF脆弱性についてはいまこそ対策を進めるべきであろう。
たとえば、人が死ぬような罠を人を殺すつもりで仕掛けた者がいて、その罠を自ら踏むことで自分で自分を死に至らしめる人が出たとき、その罠を仕掛けた者は殺人罪に問われるかといえば、問われるのだろう。
刑法第199条
人を殺した者は、死刑又は無期若しくは五年以上の懲役に処する。
それに対し、情報が漏洩するような罠を情報を漏洩させるつもりで仕掛けた者がいて、その罠を自ら踏むことで自分で自分の情報を漏洩させる人が出たとき、その罠を仕掛けた者はどの罪に問われ得るか。
まず、情報を漏洩させること自体は違法とされていない。日本の法律には「情報窃盗罪」という規定はなく、不正アクセス禁止法や不正競争防止法などにより、一部の形態についてのみ処罰されるようになっている。そのため、上のような殺人罪との対比は意味がない。
では、不正アクセスを殺人と対比してみるとどうだろうか。
不正アクセスが生ずるような罠を、不正アクセスを生じさせるつもりで仕掛けた者がいて、その罠を自ら踏むことで自分で不正アクセスを生じさせる人が出たとき、その罠を仕掛けた者は不正アクセス禁止法違反の罪に問われるか。
ここでは、「人が死ぬ」←→「不正アクセスが生じる」と対比させている。殺人罪は、人が死ぬようにすることを罪としているわけだが、それに対し、不正アクセス禁止法は、はたして、「不正アクセスが生じるようにすることを禁止している」とみなせるだろうか?
不正アクセス禁止法は第3条1項で、「何人も、不正アクセス行為をしてはならない。」とし、同2項で「不正アクセス行為」を定義している。その定義によれば、不正アクセス行為とは、「他人の識別符号」や「制限を免れる情報又は指令」を「入力して電子計算機を作動させ」ることを要件としている。
ここで次の例を検討してみる。SQLインジェクション脆弱性のあるWebサイトがあり、以下のURLにアクセスするだけで、ウイルスを埋め込む改竄ができてしまう状態になっているとする。
http://www.example.com/virusencyclo/default.asp?name='〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
もちろん、そういう結果をもたらすことを知りながらこのURLで当該サイトにアクセスした者は、不正アクセス禁止法第3条2項2号(もしくは3号)違反で罪に問われるわけだが、では、自分で手を下さずに、このURLを、誰かがアクセスするであろうことを期待しながら、自分のblogに記載したり、掲示板に貼付けるなどして、同じ結果をもたらした場合はどうなんだろうか。
ここで、そのURLにアクセスした人が、何が起きるのかを知らずにアクセスしたのなら、それは不正アクセス行為の故意が認められないので、その人が罪に問われるものではない。したがって、その状況においては、罠を仕掛けた者について幇助犯や教唆犯という話にはならないのではないか。
不正アクセス禁止法第3条2項は、不正アクセス行為の定義として、「電気通信回線を通じて入力して電子計算機を作動させ」とあまりにも明確な要件を挙げているので、自分の手でアクセスした場合でなければ処罰できないように読めるのだが、どうなんだろうか。定番解説書である「逐条 不正アクセス行為の禁止等に関する法律」(立花書房)にもこのケースについての検討が書かれていない*1。私にはよくわからない。法律の専門家の方々の見解を伺いたい。(もっとも、上の例の場合は、電子計算機損壊等業務妨害罪の方で処罰できるのだろうけども。)
では次に、CSRF攻撃の場合にはどうか。
CSRF脆弱性を突いた攻撃というのは、その仕組み上、当該サイトへのアクセスは利用権者本人によるアクセスとなる。したがって、不正アクセス行為の定義にある、「当該アクセス制御機能により制限されている利用をし得る状態にさせる行為」の「制限されている利用」というのが、誰にとっての「制限されている」なのかという点が鍵となる。
行為の主体をアクセスした人とするなら、CSRFによるアクセスは利用権者本人によるものであるから、「制限されている利用をし得る状態にさせ」てはいないことになる。
行為の主体を罠を仕掛けた者とするなら、罠を仕掛けた者からすれば、「制限されている利用」をしていることになる(場合がある)。たとえば、他人の識別符号でサインインしなければ閲覧できないはずの個人情報を、CSRFの罠をblogや掲示板に書くことによって、そこにアクセスした人の当該情報を自分宛に送信させる行為は、「制限されてる利用」をしている。
しかし、まず第一に、上で検討したように、罠の設置によって他人にさせる行為が、はたして、「電気通信回線を通じて入力して電子計算機を作動させ」という要件を満たすのかが疑問であるから、罠の設置者が不正アクセス行為の行為主体となり得ないようにも思えるが、この点は上に書いたように法律の専門家に伺わなければわからない。
そして第二に、仮に、罠を踏ませる行為が「電気通信回線を通じて入力して電子計算機を作動させ」に該当するとしても、何を「入力して」いるのかが問題となる。上のSQLインジェクションの例では、「利用の制限を免れることができる情報又は指令」を用意したのは、罠の設置者であるから、罠の設置者が「電気通信回線を通じて入力して」いることとなり、不正アクセス行為と見なされ得るのに対し、CSRF攻撃の場合では、たとえば、回避しようとするアクセス制御機能がBasic認証なら、パスワードを送信させることになるのだから、「入力して作動させ」というのは「識別符号を入力して作動させ」のことだが、その識別符号は、行為主体である罠の設置者が用意したものではない。それなのに、罠の設置者が「識別符号を電気通信回線を通じて入力して」いると言えるのだろうか?
同様に、アクセス制御機能がセッションIDによるセッション追跡方式で実現されている場合でも、セッションIDが「利用の制限を免れることができる情報又は指令」に該当するとしても、それを用意したのは罠の設置者ではない。
このように、1999年8月に公布された不正アクセス禁止法は、定義をあまりにも明確にしすぎたために、同じ被害をもたらす悪質な行為であっても、CSRFという手法で自分の手を汚さないようにすることで、処罰を逃れられてしまっているように思う。
そこで、先日のウイルス作者逮捕報道の際にも話題になった、いわゆる「ウイルス罪」の法案(不正指令電磁的記録に関する罪を新設する刑法改正案)に期待するところである。
「ウイルス」と言うと、CSRFとは別物のように思われるかもしれないが、不正指令電磁的記録供用罪というのは、「人が電子計算機を使用するに際してその意図に反する動作をさせるべき不正な指令」を実行させる行為を処罰するものであるから、まさにCSRFの罠を踏ませる行為がこれに該当すると思う。
該当しないかもしれないとすれば、URLが「指令を与える電磁的記録」と言えるかどうかという点くらいではないだろうか。法制審議会の議事録によると、「指令を与える電磁的記録」とはプログラムファイルのことを想定しているようなので、URLがプログラムと言えるかということになる。まあ、技術者視点で言えば、プログラムと言って差し支えないんじゃないかと私は思う。
どんな単純なプログラムであれ、どんな目的であれ、人を騙して実行させる行為は悪いことであり、結果が悪質なものであれば処罰の対象となってしかるべきだと思う。Winny媒介型ウイルスが蔓延して悲惨な被害が続出し続けているのは、この法律に頼るしかないのに法案が国会で真面目に取り扱われていないためである。その間に、日本社会は、「ウイルスマンセー」とでも言わんばかりの風潮が広まり、誰もそれを嗜めない狂った文化が育ってしまった。匿名掲示板でその手のことが書かれるのはまあ致し方ないにしても、blog上で名乗りながら、「警察があんまりがんばってWinnyからウィルスがなくなってしまうと、安心してまたユーザーが増えてしまうのではないでしょうか?」などと不謹慎なことを堂々と言う人まで現れる始末だ。匿名掲示板ならまだしも、表で名乗りながらそうする人が出てくると、その空気に飲み込まれていく人が続出するという点できわめて厄介だ。
やはり、文化というものは法律によっても醸成されていくものであって、早くこの法律が成立、施行されることを願うばかりだ。
とはいえ、どんなに早くても何年か先になってしまう。現行法でどうにか悪質なCSRF攻撃を実行に移す輩を処罰できないものだろうか。
このままでは、いつ購入履歴を暴露されるかわからないという不安にかられ、安心してネットショッピングもままならない。まさに、不正アクセス禁止法の「アクセス制御機能により実現される電気通信に関する秩序の維持を図り、もって高度情報通信社会の健全な発展に寄与する」という目的が阻害されている状況である。定番解説本にも次のように書かれている。
本法の直接の目的の第二は、「アクセス制御機能により実現される電気通信に関する秩序の維持を図」ることである。「アクセス制御機能により実現される電気通信に関する秩序」とは、アクセス制御機能による利用権者の識別が正しく行われているとの信頼感によって実現される電気通信に関する秩序である。不正アクセス行為が横行すれば、アクセス制御機能により実現される電気通信に関する秩序が乱され、利用者の中に安心してネットワークを利用できないとの不信感を生み、ネットワーク相互の接続が抑制されるおそれが生じることとなることから、本条では、この点に着目し、「アクセス制御機能により実現される電気通信に関する秩序の維持」を本法の目的の第二として掲げたものである。
上で検討したように、CSRF攻撃に不正アクセス禁止法を適用するのは無理があるように私には感じられるが、どうにか適用できると解釈する余地も残っているようにも思える。
他の法令はどうだろうか。刑法第161条の2の「電磁的記録不正作出及び供用」の罪に問うことはできないだろうか。
刑法第161条の2
(電磁的記録不正作出及び供用)
第161条の2 人の事務処理を誤らせる目的で、その事務処理の用に供する権利、義務又は事実証明に関する電磁的記録を不正に作った者は、5年以下の懲役又は50万円以下の罰金に処する。
2 (略)
3 不正に作られた権利、義務又は事実証明に関する電磁的記録を、第1項の目的で、人の事務処理の用に供した者は、その電磁的記録を不正に作った者と同一の刑に処する。
4 前項の罪の未遂は、罰する。
まず、CSRFで実害を出そうとする行為が、「人の事務処理を誤らせる目的」であることは明白だろう。この場合、「人の事務処理」とは、当該CSRF脆弱性のあるWebサイトの運営者が電子計算機を用いて行っている事務処理のことである。
次に、その電磁的記録(URL)が、「その事務処理の用に供する権利、義務又は事実証明に関する」ものであると言えるかどうか。たとえば、住所変更やパスワード変更をさせるようなHTTPリクエストは、そのWebサイトが提供するサービスにおけるその人の権利や事実証明に「関する」ものと言えるのではないだろうか。それを他人が偽造して本人に送信させているのであれば、電磁的記録不正作出罪には当たると言えないだろうか。
しかも、不正アクセス禁止法ではアクセス行為の主体が問題となったのと違い、刑法第161条の2第3項では、「人の事務処理の用に供した者」とあり、どのような手段で「供した」かは限定していないので、自分の手で直接に供していなくても、他人の手を借りて供した場合でも該当するように読める。つまり、第3項の罪にも問えるのではないか。
実際、CSRFとは「cross-site request forgery」のことであり、英語の法律用語で「forgery」とは「文書偽造(罪)」のことを指すようだ。日本法の電磁的記録不正作出罪は、文書偽造罪の電子版と位置づけられている。第161条の2の電磁的記録は、私文書のアナロジーなので、申込書のような役割を果たすデータないしファイルも該当するのだと理解している。住所変更やパスワード変更をさせるCSRF攻撃における偽造されたHTTPリクエストは、技術的に見ても、住所変更やパスワード変更の申込書に当たるものであるから、やはり、CSRF攻撃をする行為は、電磁的記録不正作出及び供用罪に問われるように思えるがどうだろうか。同様に、本人でなければ閲覧できない情報をどこかに送信する機能があるときに、その機能を実行させるHTTPリクエストは、その機能を使うと申し出る申込書に当たるとみなせば、同様の理屈が成り立つように思える。ただ、その場合、「その事務処理の用に供する権利、義務又は事実証明に関する電磁的記録」なのかどうかがちょっとわからない。
また、「不正に作った」「不正に作られた」の「不正に」の意味がどういうことなのもわからなかった。
とりあえず、CSRFの罠を踏んで取り返しのつかない被害に遭った人は、警察に相談してみてはどうだろうか。
*1 法案立案当時(1990年代)は、これほどまでに簡単に他人に指定のアクセスをさせることができる技術が普及するとは、認識できていなかったのではないか。
高木先生のハマチをちゃんとテリヤキにするのは難しいのタイトルを見て、先日から氏が...
「ハマチをちゃんとテリヤキにするのは難しい」高木先生のとこ。 http://takagi-hiromitsu.jp/diary/20080315.html#p01 高木先生はこれを見るといいよ。 「新技発見!フライパン驚きの調理術」ためしてガッテン。 http://www3.nhk.or.jp/gatten/archive/2007q4/20071121...
私は法律に詳しくないのであまり自信を持って言えないのですが、殺人が例として出てきたときに思い出したことがあります。
「未必の故意」というのがありますよね。殺人などの場合を例としてよく説明されますが、CSRFの場合には当てはまらないのでしょうか。