弁護士 野溝夏生

東京地判平成26・1・23判時2221-71(情報漏洩とセキュリティ対策)

事案の概要

本件は、原告(X)が、被告(Y)との間で、Xのウェブサイトにおける商品の受注システムの設計、保守等の委託契約を締結したところ、Yが製作したアプリケーションの脆弱性により前記ウェブサイトで商品の注文をした顧客のクレジットカード情報が流出し、Xによる顧客対応等が必要となったために被害を被ったと主張して、Yに対し、前記委託契約の債務不履行に基づき損害賠償として約1億1000万円の支払を求めた事案です。

時系列

H21.1.30 X・Y、業務委託基本契約等締結
H21.2.4 X=>Y、XのWebサイトの商品受注システムを発注
H21.4末頃 X・Y、業務委託基本契約等締結
H21.4頃 X、前記システム検収
H21.4.15 X、前記Webサイト稼働開始
H22.1頃 X=>Y、カード会社をXのシステムに送信して請求者情報を正確に管理できるよう前記システムの仕様変更を依頼
H22.1.29頃 X、前記システム検収
H22.5.1 X・Y、Webサイトメンテナンス契約締結
H23.4 前記システムのデータを保管していたレンタルサーバーに外部から不正アクセスがあり、顧客のクレジットカード情報を含む個人情報が流出

特徴

損害賠償額制限条項

X・Y間の業務委託基本契約には、次の条項がありました。

(損害金)
第25条 甲若しくは乙が本契約内容に違反した場合には、その違反により相手方が被る全ての損害を賠償するものとする。
(損害賠償)
第29条 乙が委託業務に関連して、乙又は乙の技術者の故意又は過失により、甲若しくは甲の顧客又はその他の第三者に損害を及ぼした時は、乙はその損害について、甲若しくは甲の顧客又はその他の第三者に対し賠償の責を負うものとする。
2 前項の場合、乙は個別契約に定める契約金額の範囲内において損害賠償を支払うものとする。

なお、Yは、同契約の次の条項を理由として、Xの請求は瑕疵担保責任に基づく請求であるから、損害賠償責任を負わない旨を主張していました。

(保証)
第26条 乙は、委託業務の完了の後その成果物に瑕疵が発見されたとき、乙の責任において無償で速やかに補修のうえ納入を行うものとする。
2 乙の保証期間は、特に定めるものを除き委託業務の完了の後1年間とする。ただし、乙の責に帰すべきものでない場合はこの限りではない。

裁判所の判断

カード等情報流出の原因について

かなり引用部分が長くなってしまっていますが、要約すると、結論は次のとおりです。

すなわち、前記システムにSQLインジェクションに対する脆弱性があった(エスケープ処理等が実施されていなかった)こと、アクセスログからもSQLインジェクション攻撃がなされていることが明らかであるほか、平成23年4月14日には5分間に海外IPアドレスから1500回近くに及びアクセスがあり、その際に外部との通信が成功したことが明らかとなっていること(HTTPレスポンスステータスコードで200が返されたということだと思われます。)、同日以降で過去にXのサイトで利用したことのあるカード情報が不正利用された件数が増加したこと等の事実に照らすと、同日においてSQLインジェクション攻撃は成功し、他に流出の原因も考えられないため、同日のSQLインジェクション攻撃によって、カード情報が流出したものであると認定されています。

 「前提事実のとおり、顧客のクレジットカード情報が暗号化されずに本件データベースに保存される設定となっていたこと、平成23年4月、本件サーバーに外部から不正アクセスがあり本件流出が発生したことに加えて、F(註:クレジットカード会社と思われるが、裁判例からは不明である。)及び株式会社Gが、同月20日、原告に対し、原告からクレジットカード情報が流出した疑いがあると判断して警告を行ったこと……からすれば、同日までに本件流出が発生したと認められる。
 そして、前記……のとおり、本件ウェブアプリケーションには、SQLインジェクションに対する脆弱性があること……、一般的な攻撃の流れとして、攻撃者はデータベース構造が分からないため、SQLインジェクション攻撃を悪用してデータベース構造の把握を行い、データベース情報を窃取するところ、ログ調査の結果平成22年12月7日から平成23年4月14日までSQLインジェクション攻撃が断続的に行われ,同年3月29日及び同年4月14日にPOSTメソッドによるSQLインジェクション攻撃がされ、同日午前10時31分から同36分までの5分間には海外IPアドレスから1508回に及ぶSQLインジェクション攻撃がされ、同日に外部との通信が成功したこと……、Fの会員で、過去に原告で利用したことがあるクレジットカード情報が不正利用された件数は、同月1日から同月11日まで及び同月13日は0件、同月12日に1件にすぎなかったが、同月14日から同月20日までは1 日に2件ないし10件に増加したこと……が認められ、これらの事実に照らすと、同月14日まで本件データベースの情報を窃取するためにSQLインジェクションによる事前調査が行われ、更に同日にSQLインジェクション攻撃が成功し、クレジットカード情報が読み取られたことが推認され、後記のとおり他に本件流出の原因が認められないことも考慮すれば、同日のSQLインジェクション攻撃により本件流出が発生したと認めることができる。」

他方で、原告は、サーバーへの不正ログイン等や、XSS(クロスサイトスクリプティング)を原因とするカード情報の流出も主張していましたが、これらは否定されています。

(ア) サーバーへのリモートログイン
 本件サーバーへのリモートログインID及びパスワードが第三者に流出したこと及び不正に使用されたことを裏付ける証拠はないから、サーバーへのリモートログインが本件流出の原因とは認められない。
(イ) 管理機能への不正ログイン
 弁論の全趣旨によれば、管理機能へのログインID及びパスワードが第三者に推知されやすいものであったこと(ログインIDが「admin」、パスワードが「password」)が認められ、……平成23年4月1日及び同月6日から同月7日に管理機能への不正ログインが行われたことは認められる……。しかし、管理機能にログインした状態でクレジットカード情報を閲覧することができること及び管理機能への上記不正ログイン後にクレジットカード情報が閲覧されたことを裏付ける証拠はないから,管理機能への不正ログインが本件流出の原因とは認められない。
(ウ) クロスサイトスクリプティング
 原告は、クロスサイトスクリプティングによって、本件ウェブサイト上に偽の頁が表示され、フィッシングサイトへ誘導し個人情報を入力させるなどして、個人情報が流出したか、又は顧客のブラウザ上で不正なスクリプトが実行され、ブラウザが保存しているCookie情報が漏洩し、Cookie情報に含まれている個人情報が流出した可能性があると主張するが、かかる事実を裏付ける証拠はないから、クロスサイトスクリプティングが本件流出の原因とは認められない。

なにやらいろいろと問題のあることが書かれているわけですが、とりわけXSSについても、これに対する脆弱性があったこと自体は認定されています。

「ユーザーからの入力値に対してエスケープ処理が行われずに、そのまま次画面に出力されていたため、利用者のウェブブラウザ上でスクリプトを実行することが可能であった。」

本件と直接関係があるわけではありませんので、まったくの脱線となりますが、「ID = "admin"、Password = "password"」だと、初期設定だということがほとんどかと思われます。
このような場合、仮に本来ログインすべきではない者にログインをされたとしても、不正アクセス禁止法の適用がなされない可能性がありますので、注意すべきと思われます。

債務不履行責任の有無について

SQLインジェクション対策を怠ったという債務不履行の主張について

まず、本件事案の下では、当時の技術水準に沿ったセキュリティ対策を施したプログラ厶を提供することが黙示的に合意されていた、と認定されています。
具体的には、個人情報の漏洩を防ぐために必要なセキュリティ対策を施すことは必要である旨が述べられています。

 「被告は、平成21年2月4日に本件システム発注契約を締結して本件システムの発注を受けたのであるから、その当時の技術水準に沿ったセキュリティ対策を施したプログラ厶を提供することが黙示的に合意されていたと認められる。そして、本件システムでは、金種指定詳細化以前にも、顧客の個人情報を本件データベースに保存する設定となっていたことからすれば、被告は、当該個人情報の漏洩を防ぐために必要なセキュリティ対策を施したプログラムを提供すべき債務を負っていたと解すべきである。」

そして、IPA(独立行政法人情報処理推進機構)が紹介するSQLインジェクション対策措置を実施するよう経産省が注意喚起していたことや、IPAが情報システムのセキュリティにかかる代表的な攻撃手法としてSQLインジェクションを挙げ、すべての変数にエスケープ処理等を行う等の対策が必要である旨を明示していた事実に照らすと、かかる対策を施したプログラムを提供する義務がYにはあったとしています。

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

なお、Yは、予見可能性がなかったために債務不履行責任を負わない旨を主張していましたが、裁判所は、SQLインジェクション対策が必要であることが指摘されており、SQLインジェクションによってDBから個人情報等が流出し得ることはYにも具体的に予見できたとして、Yの主張を退けています。

カード情報を保存せず、保存する場合には暗号化すべきだったのにこれを怠ったという債務不履行について

他方で、Xが主張していた、カード情報を保存しないようにするか、又は保存する場合であっても暗号化すべきだったのにもかかわらず、Yがこれを怠ったという主張については、裁判所はこれを退けています。
その理由について、裁判所は、確かに、IPAもDB内に格納されている重要データ等については暗号化することが望ましい旨明示していたものの、「望ましい」という指摘をしていたにすぎないし、負荷との兼ね合いもあるため、その旨の契約がない場合にも当然に暗号化等を行う義務があったとはいえないと判示しています。

「上記告示等は、いずれも上記対策を講じることが『望ましい』と指摘するものにすぎないし、上記IPAの文書においては,データベース内のデータ全てに対して暗号化の処理を行うとサーバー自体の負荷になることがあるので、特定のカラムだけを暗号化するなどの考慮が必要であるとも指摘されている……ように、暗号化の設定内容等は暗号化の程度によって異なり、それによって被告の作業量や代金も増減すると考えられることに照らすと、契約で特別に合意していなくとも、当然に、被告がクレジットカード情報を本件サーバー及びログに保存せず、若しくは保存しても削除する設定とし、又はクレジットカード情報を暗号化して保存すべき債務を負っていたとは認められない。」

その他の債務不履行について

Xは、SQLインジェクション対策がなされていないこと等について、Yの説明義務違反も主張していましたが、いずれも裁判所は認められないとしています。

損害について

各契約条項の関係性について

上述のとおり、前記基本契約には、第25条と第29条とで、その関係性が一見してわからないような条項が置かれていました。
裁判例は、第25条は機密保持に関する章に含まれていた一方、第29条は損害賠償等に関する章に含まれていたことから、Yによる情報流出等が生じた場合に関しては、第25条は第29条の例外を定めたものであると判示しました。

 「以上の規定を合理的に解釈すれば、本件基本契約は、29条2項で、被告の原告に対する損害賠償金額を原則として個別契約に定める契約金額の範囲内とし、25条は、29条2項の例外として、被告が対象情報を第三者に開示又は漏洩した場合の損害賠償金額については制限しないことを定めたものと解するのが相当である。」

損害賠償額制限条項について

となると、本件でも損害賠償額制限条項の適用が問題となってきます。実際、Xは、Yに重過失がある場合には、同条項の適用はない旨を主張していました。
特段ここで判示部分を引用はしませんが、裁判所は、これにつき、瑕疵担保責任の免責について定めた572条や640条を参照しつつ、故意又は重過失がある場合には、同条項は適用されないと判示しました。

なお、裁判所は、基本契約第26条にかかるYの主張につき、損害賠償請求権の期間制限を定めたものではないとして、Yの主張を採用していません。

Yの重過失について

裁判所は、Yがプログラムに関するその専門的知見を活用した事業の一環として前記システムを受注し、Xもこれを前提に発注を行ったこと、それによるYの注意義務の程度は比較的高度であること、SQLインジェクション対策が必要であることが指摘されており、その対策に多大な労力や費用がかかるとは認められないことからすれば、SQLインジェクション対策を行わなかったことにつき、Yには重過失があると判示しました。

 「被告は、情報処理システムの企画、ホームページの制作、業務システムの開発等を行う会社として、プログラムに関する専門的知見を活用した事業を展開し、その事業の一環として本件ウェブアプリケーションを提供しており、原告もその専門的知見を信頼して本件システム発注契約を締結したと推認でき、被告に求められる注意義務の程度は比較的高度なものと認められるところ、前記のとおり、SQLインジェクション対策がされていなければ、第三者がSQLインジェクション攻撃を行うことで本件データベースから個人情報が流出する事態が生じ得ることは被告において予見が可能であり、かつ、経済産業省及びIPAが、ウェブアプリケーションに対する代表的な攻撃手法としてSQLインジェクション攻撃を挙げ、バインド機構の使用又はSQL文を構成する全ての変数に対するエスケープ処理を行うこと等のSQLインジェクション対策をするように注意喚起をしていたことからすれば、その事態が生じ得ることを予見することは容易であったといえる。また、バインド機構の使用又はエスケープ処理を行うことで、本件流出という結果が回避できたところ、本件ウェブアプリケーションの全体にバインド機構の使用又はエスケープ処理を行うことに多大な労力や費用がかかることをうかがわせる証拠はなく、本件流出という結果を回避することは容易であったといえる。
 そうすると、被告には重過失が認められるというべきである。」

まとめ

素朴な感想としても、専門的知見を有する業者が、エスケープ等のSQLインジェクション対策やXSS対策を行っていなかったことには問題があったように思われます。
セキュリティ対策については、コストや実用性との兼ね合いもありますから、どこまでやるかという問題は生じるところではありますが、この裁判例からすると、「当時の技術水準に沿ったセキュリティ対策を施したプログラ厶を提供すること」を要求されている可能性があると考えられます。

なお、具体的に何が損害として認められたかについては省略しますが、裁判所は、Xの請求を、約2260万円の限度で認容しました。
これには、Xにおいて、クレジットカード情報がDBにあり、これをDB上で保持しないほうがよいことを知り、かつ、そのことをYにも指摘されながら、特段対策を指示しなかったという、Xの過失が考慮されたことも反映されています(3割の減額要素とされています。)。

まずはお気軽にお問い合わせください。

03-3580-7110

受付: 09:30~18:30 / 土日祝を除く