クレジットカード情報流出事件についての個人的見解

最近、某サイトでクレジットカード情報流出の事件がありましたが、その情報を見た感想を述べたいと思います。

原因

原因は、JavaScriptライブラリ「slick」に埋め込まれた不正コードだそうです。
slickは、Webサイトでスライドショーを作るライブラリです。
そのコードの末端あたりに、難読化されたコードが追加されていたようです。

追加されたコードにより、フォームに入力されたクレジットカードの情報が、入力時点で悪意のあるサーバーに送信されていたようです。
もちろん、slick自体には何の罪もありませんので、そこは誤解しないようお願いします。

ちなみにクロスサイトスクリプティング(XSS)ではという声もありますが、XSSはエスケープ処理されていないフォームで、さらには値までそのまま出力される不用心なフォームが必要です。
そのフォームにJavaScriptコードを投稿し、出力された内容を誰かに踏ませる事により成立します。
主に、エスケープ処理されていない初心者が作った掲示板ぐらいでしか、この手口は使えないでしょう。
なので、XSSではありません。

どうやって改ざんされたのか

今回はslickというライブラリのファイルに、追加で悪意のあるコードが記述されていた事にあります。
なら、どうやってそのファイルを編集したかです。

まず、サーバーやFTP、CMSのログインIDとパスワードが漏れたか、簡単なパスワードだったので突破されてしまったかでしょう。

もうひとつは制作の依頼を受けた人の中にコードを仕込んだ人がいる可能性があるという事です。

slickとSwiper

サイトにはslickとSwiperが同時に実装されていたという話です。

Swiperは、slick同様にスライドショーのライブラリです。
些細な問題かもしれませんが、同じ用途のライブラリを実装するなんて、普通はしません。
ページごとに別々の人に依頼をしたのか、片方を流用する力量のない人が担当したのでしょう。

ちなみに私は、スライド実行時にDOM要素の構造を変更しないSwiperを選択しますが。

まともな制作会社は存在しないのか

こういう事件が起こるたび、私は思うのです。
まともな制作会社に依頼したり、自社でWeb部門を設立するなりしないのかと。

今はITエンジニアと言えば何かとフリーランスの時代で、企業もコスト削減に人を雇うよりもフリーランスに依頼する方を選んでしまいがちです。
ですが、クレジットカードを扱うECサイトのような規模の大きい案件を、フリーランスに依頼するのは、さすがに荷が重すぎるでしょう。

仮にフリーランスへ依頼したのではなく、制作会社に依頼したのであれば、それはそれで、まともな制作会社は存在しないのかと。
slickとSwiperを同時実装している時点で、技術レベルはお察しです。

ましてやSES業者に依頼するのは論外です。
大規模案件なら、それをしてしまいがちですが、どこの所属かもわからない人間がやってくるのです。
特に、各エンジニアの「面談」が行われている時点で気付いてください。
直接雇用か紹介予定派遣以外での人選行為は違法であるという事を。

こういうサイトの管理は、自社でWeb戦略部門を持ってでも管理しておくべきですし、または信頼の置ける制作会社と契約して管理してもらうべきです。
作ってもらったら終わりで済ませてしまうと、それこそ攻撃者の餌食です。

フリーランスの人と契約をして管理してもらうというのもあるかもしれませんが、フリーランスの人もそれだけで生活に十分な収入を得る事は出来ないので、他の案件との掛け持ちをするのも当然です。
その企業だけに全力を出せというのも無理な話です。
そして実際に、このようなセキュリティ事故が起きたら、それに対処できる程の能力まで、1人の個人事業主が持ち合わせているのかも疑問です。

また、こういうのも何ですが、制作者自身が悪意のあるコードを仕込むという事もあり得るのです。
制作者の人を批判したくはないのですが、その可能性も決してゼロではないので、信頼のおける人を雇うか、信頼のおける制作会社と契約する必要があるのです。

人を雇う、制作会社と契約するのはコストではない

何度でも言いますが、Webサイトは、人を直接雇って管理させたり、制作会社と契約して管理をしてもらったりするべきです。

たかがWebサイト、どこかのフリーランスに発注すればいいだろうなどと思っているから、Webサイトをハッキングされ、大切なドメインもスパム認定されたり、最悪クレジットカードの情報を流出させ、自社の信頼どころか、大勢の顧客に甚大な被害をもたらす結果になるのです。

自社で人を雇うのであれば、単に人を雇うのではなく、Web戦略部門を立ち上げるぐらいの決心がなければいけません。
また、案件が終われば契約を終了するのではなく、部署ごと人を成長させていく必要があります。

他人が作ったシステムは、そう簡単に改修できるものではありません。
ましてや、ソースコードから仕様や目的を特定するのは不可能に近いです。
だからこそ、人を入れ替えるのではなく、同じ人が管理をし、また新しい人が管理できるよう教育していく必要があります。

人を雇ったり、専門の制作会社と契約する事をコストだと思う企業は、膨大な情報も、悪意のある意志も入り混じるWebの業界に手を出すべきではありません。

この記事が気に入ったらサポートをしてみませんか?