なんかアパレル系の仕事してる友人が「うちで取り扱ってる服がインターネッツからでも購入できるようになったで!」ってtwitterに書いてたので見てみた。
よくある感じのECサイトで右上にはログインボタンがあった。
サイドカラムの下のほうになんでか知らんけど店長の写真(友人)が貼ってあって「絶対これいらんやろwwwっw」とか独り言言いながらゲラゲラ笑ってた。
でFormがあればとりあえず"><xmp>とか入れたりしたくなるのは必然でログインフォームやら問い合わせフォームやらで色々試してみたところ、案の定出力文字列がエスケープされてなかったりしてあらやだ脆弱性という感じ。
アパレルの会社が内製でECサイト作るとは考えにくいのできっと外注に出して作ってもらったんだろなーと思いつつ友人に報告した。友人はwebに詳しいほうではないので作ってもらったとこにこれこれこういうことだから直してって言えばいいよーって伝えた。
こういうことがあって少し考えた。今回はたまたま中の人に知り合いがいてそこそこ信用がある前提で脆弱性報告してこういう危険がありますよっていうのを理解してもらえたけど、もし脆弱性があってどっかから報告がきたとして「何言ってんだこいつ。意味わかんねー。」って思われて放置されるパターンって結構多いんじゃないかな。
ちゃんと文字列エスケープさえすれば防げるようなことでもやってない外注が世の中にはきっとわんさかいると思ってて(僕の偏見です)、あまり人目につかずひっそりと運営してるようなECサイトは悪意を持った人にとってはパラダイスなんじゃないかな。
外注に出して作ってもらうのはいいけど、それをちゃんとチェックできる人がいない状況ってのはかなりリスキーでITに詳しくない人がそこに対して問題意識を持つってこともほぼ無い気がするのでどうすればこういう問題を解決できるのか悩ましい。
ATMとかの暗証番号に生年月日を使うのはやめましょうレベルの教育はやってると思うけど、入力を受け付ける側のシステムをまずは疑いましょうみたいなことは全く話にもあがってないと思う。専門家じゃない人でも「あれ、このサイト文字列エスケープしてないぜwwwプークスクスwwww」ができるようになって一般的になれば(今のところ現実的じゃないと思うけど)リリースする側もリリース前に重点的にチェックするようになったりするんじゃないかな。今でもプレスリリースとか出す時は文言のチェック死ぬほどするでしょ?
結局は作る側の責任ってことになるんだろうけど、未然に防ぐために外注に出す企業も利用するユーザーも自分の身を守るための知識がある程度あったほうがいいよなーと思った次第。