名古屋の弁護士のブログ

守秘義務に反しないよう、受任事件とは関係ないことについて雑記するブログです。

契約締結当時広く知られていたSQLインジェクション対策を施さなかったことが債務不履行とされた事例

東京地判平成26年1月23日

【事案の概要】

本件は,原告が,被告との間で,原告のウェブサイトにおける商品の受注システムの設計,保守等の委託契約を締結したところ,被告が製作したアプリケーションが脆弱であったことにより上記ウェブサイトで商品の注文をした顧客のクレジットカード情報が流失し,原告による顧客対応等が必要となったために損害を被ったと主張して,被告に対し,上記委託契約の債務不履行に基づき損害賠償金1億0913万5528円及びこれに対する訴状送達の日の翌日である平成23年10月15日から支払済みまで商事法定利率年6分の割合による遅延損害金の支払を求める事案である。

【判旨】

 前提事実のとおり,被告は,平成21年2月4日に本件システム発注契約を締結して本件システムの発注を受けたのであるから,その当時の技術水準に沿ったセキュリティ対策を施したプログラ厶を提供することが黙示的に合意されていたと認められる。そして,本件システムでは,金種指定詳細化以前にも,顧客の個人情報を本件データベースに保存する設定となっていたことからすれば,被告は,当該個人情報の漏洩を防ぐために必要なセキュリティ対策を施したプログラムを提供すべき債務を負っていたと解すべきである。
 そこで検討するに,証拠(甲14,25,29)によれば,経済産業省は,平成18年2月20日,「個人情報保護法に基づく個人データの安全管理措置の徹底に係る注意喚起」と題する文書において,SQLインジェクション攻撃によってデータベース内の大量の個人データが流出する事案が相次いで発生していることから,独立行政法人情報処理推進機構(以下「IPA」という。)が紹介するSQLインジェクション対策の措置を重点的に実施することを求める旨の注意喚起をしていたこと,IPAは,平成19年4月,「大企業・中堅企業の情報システムのセキュリティ対策~脅威と対策」と題する文書において,ウェブアプリケーションに対する代表的な攻撃手法としてSQLインジェクション攻撃を挙げ,SQL文の組み立てにバインド機構を使用し,又はSQL文を構成する全ての変数に対しエスケープ処理を行うこと等により,SQLインジェクション対策をすることが必要である旨を明示していたことが認められ,これらの事実に照らすと,被告は,平成21年2月4日の本件システム発注契約締結時点において,本件データベースから顧客の個人情報が漏洩することを防止するために,SQLインジェクション対策として,バインド機構の使用又はエスケープ処理を施したプログラムを提供すべき債務を負っていたということができる。
 そうすると,本件ウェブアプリケーションにおいて,バインド機構の使用及びエスケープ処理のいずれも行われていなかった部分があることは前記2のとおりであるから,被告は上記債務を履行しなかったのであり,債務不履行1の責任を負うと認められる。

頻繁に取り上げられる著名な裁判例です。

本件契約が締結された平成21年当時において、SQLインジェクション対策として、SQL文の組み立てにバインド機構を使用し、又はSQL文を構成する全ての変数に対しエスケープ処理を行うことが必要であることが広く指摘されていました。

そのため、本判決は、被告が「SQLインジェクション対策として,バインド機構の使用又はエスケープ処理を施したプログラムを提供すべき債務を負っていた」とし、「本件ウェブアプリケーションにおいて,バインド機構の使用及びエスケープ処理のいずれも行われていなかった部分があ」ったことから被告は債務不履行責任を負うと判断しました。

なお、本判決は、「原告のシステム担当者が,顧客のクレジットカード情報のデータがデータベースにあり,セキュリティ上はクレジットカード情報を保持しない方が良いことを認識し,被告から本件システム改修の提案を受けていながら,何ら対策を講じずにこれを放置したことは,本件流出によるクレジットカード情報の漏洩の一因となったことは明らかであるから,原告に損害が認められるとしても,上記原告の過失を考慮し,3割の過失相殺をするのが相当である」として過失相殺を認定しています。