システム開発訴訟等のITトラブル、コーディングもできる弁護士に。本件は、原告(X)が、被告(Y)との間で、Xのウェブサイトにおける商品の受注システムの設計、保守等の委託契約を締結したところ、Yが製作したアプリケーションの脆弱性により前記ウェブサイトで商品の注文をした顧客のクレジットカード情報が流出し、Xによる顧客対応等が必要となったために被害を被ったと主張して、Yに対し、前記委託契約の債務不履行に基づき損害賠償として約1億1000万円の支払を求めた事案です。X・Y間の業務委託基本契約には、次の条項がありました。甲若しくは乙が本契約内容に違反した場合には、その違反により相手方が被る全ての損害を賠償するものとする。乙が委託業務に関連して、乙又は乙の技術者の故意又は過失により、甲若しくは甲の顧客又はその他の第三者に損害を及ぼした時は、乙はその損害について、甲若しくは甲の顧客又はその他の第三者に対し賠償の責を負うものとする。前項の場合、乙は個別契約に定める契約金額の範囲内において損害賠償を支払うものとする。Yは、同契約の次の条項を理由として、Xの請求は瑕疵担保責任に基づく請求であるから、損害賠償責任を負わない旨を主張していました。乙は、委託業務の完了の後その成果物に瑕疵が発見されたとき、乙の責任において無償で速やかに補修のうえ納入を行うものとする。乙の保証期間は、特に定めるものを除き委託業務の完了の後1年間とする。乙の責に帰すべきものでない場合はこの限りではない。裁判所の判断カード等情報流出の原因についてかなり引用部分が長くなってしまっていますが、要約すると、結論は次のとおりです。前記システムにSQLインジェクションに対する脆弱性があった(エスケープ処理等が実施されていなかった)こと、アクセスログからもSQLインジェクション攻撃がなされていることが明らかであるほか、平成23年4月14日には5分間に海外IPアドレスから1500回近くに及びアクセスがあり、その際に外部との通信が成功したことが明らかとなっていること(HTTPレスポンスステータスコードで200が返されたということだと思われます。)、同日以降で過去にXのサイトで利用したことのあるカード情報が不正利用された件数が増加したこと等の事実に照らすと、同日においてSQLインジェクション攻撃は成功し、他に流出の原因も考えられないため、同日のSQLインジェクション攻撃によって、カード情報が流出したものであると認定されています。「前提事実のとおり、顧客のクレジットカード情報が暗号化されずに本件データベースに保存される設定となっていたこと、平成23年4月、本件サーバーに外部から不正アクセスがあり本件流出が発生したことに加えて、F(註:クレジットカード会社と思われるが、裁判例からは不明である。)及び株式会社Gが、同月20日、原告に対し、原告からクレジットカード情報が流出した疑いがあると判断して警告を行ったこと......からすれば、同日までに本件流出が発生したと認められる。日に2件ないし10件に増加したこと......が認められ、これらの事実に照らすと、同月14日まで本件データベースの情報を窃取するためにSQLインジェクションによる事前調査が行われ、更に同日にSQLインジェクション攻撃が成功し、クレジットカード情報が読み取られたことが推認され、後記のとおり他に本件流出の原因が認められないことも考慮すれば、同日のSQLインジェクション攻撃により本件流出が発生したと認めることができる。他方で、原告は、サーバーへの不正ログイン等や、XSS(クロスサイトスクリプティング)を原因とするカード情報の流出も主張していましたが、これらは否定されています。サーバーへのリモートログイン本件サーバーへのリモートログインID及びパスワードが第三者に流出したこと及び不正に使用されたことを裏付ける証拠はないから、サーバーへのリモートログインが本件流出の原因とは認められない。管理機能への不正ログイン弁論の全趣旨によれば、管理機能へのログインID及びパスワードが第三者に推知されやすいものであったこと(ログインIDが「admin」、パスワードが「password」)が認められ、......平成23年4月1日及び同月6日から同月7日に管理機能への不正ログインが行われたことは認められる......。管理機能にログインした状態でクレジットカード情報を閲覧することができること及び管理機能への上記不正ログイン後にクレジットカード情報が閲覧されたことを裏付ける証拠はないから,管理機能への不正ログインが本件流出の原因とは認められない。クロスサイトスクリプティング原告は、クロスサイトスクリプティングによって、本件ウェブサイト上に偽の頁が表示され、フィッシングサイトへ誘導し個人情報を入力させるなどして、個人情報が流出したか、又は顧客のブラウザ上で不正なスクリプトが実行され、ブラウザが保存しているCookie情報が漏洩し、Cookie情報に含まれている個人情報が流出した可能性があると主張するが、かかる事実を裏付ける証拠はないから、クロスサイトスクリプティングが本件流出の原因とは認められない。なにやらいろいろと問題のあることが書かれているわけですが、とりわけXSSについても、これに対する脆弱性があったこと自体は認定されています。「ユーザーからの入力値に対してエスケープ処理が行われずに、そのまま次画面に出力されていたため、利用者のウェブブラウザ上でスクリプトを実行することが可能であった。"password"」だと、初期設定だということがほとんどかと思われます。このような場合、仮に本来ログインすべきではない者にログインをされたとしても、不正アクセス禁止法の適用がなされない可能性がありますので、注意すべきと思われます。債務不履行責任の有無についてSQLインジェクション対策を怠ったという債務不履行の主張についてまず、本件事案の下では、当時の技術水準に沿ったセキュリティ対策を施したプログラ厶を提供することが黙示的に合意されていた、と認定されています。具体的には、個人情報の漏洩を防ぐために必要なセキュリティ対策を施すことは必要である旨が述べられています。「被告は、平成21年2月4日に本件システム発注契約を締結して本件システムの発注を受けたのであるから、その当時の技術水準に沿ったセキュリティ対策を施したプログラ厶を提供することが黙示的に合意されていたと認められる。顧客の個人情報を本件データベースに保存する設定となっていたことからすれば、被告は、当該個人情報の漏洩を防ぐために必要なセキュリティ対策を施したプログラムを提供すべき債務を負っていたと解すべきである。)が紹介するSQLインジェクション対策措置を実施するよう経産省が注意喚起していたことや、IPAが情報システムのセキュリティにかかる代表的な攻撃手法としてSQLインジェクションを挙げ、すべての変数にエスケープ処理等を行う等の対策が必要である旨を明示していた事実に照らすと、かかる対策を施したプログラムを提供する義務がYにはあったとしています。(以下「IPA」という。情報システムのセキュリティ対策~脅威と対策」と題する文書において、ウェブアプリケーションに対する代表的な攻撃手法として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条の例外を定めたものであると判示しました。適用が問題となってきます。実際、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割の減額要素とされています。FAX:03-3580-7115。