こんにちは、あのぶるです。
最近、大きいサービスのセキュリティ問題が立て続けに話題になっていますね。
今回は、そのような他者の作ったシステムに関するセキュリティ問題を見聞きしたときの正しい振る舞いについて考えていきたいと思います。

まず、大前提として。
自分が関わっていないシステムに対して、その管理者に頼まれない限り不具合探しやセキュリティの脆弱性を突こうとするのは絶対にやめましょう
このような話をすると「自分は善意でシステムの問題を見つけているんだ」という反論が出ることがあります。しかしそれは倫理的観点で言えば玄関の鍵がかかってないからと言って他人の家に無断で上がり込んで掃除を始めるのと同レベルで問題のある行為ですし、もちろん法律で禁止され罰則も定められている行為です。

仮に管理者に頼まれた上での調査だとしても、少なくともシステムを破壊しかねないような操作を稼働中の本番環境に対して行うことはまずありません。脆弱性診断を行うときはそのシステムが載るインフラベンダーへ事前申請が必要なこともあります。正しい手続きを踏んで実施するときでさえ慎重になるものなのです。

また、自分としては通常の操作をしたつもりでも偶然システムの脆弱性や不具合を見つけてしまうことがあります。でもそれをSNSで「〇〇のサービスにこんな手順で操作したらこんなことが出来た」などと公表するのも避けてください。悪意のある人をそのサービスに呼ぶだけで何も良いことはありません。もし手間が取れるなら、サービスの問い合わせフォームがあればそこから報告するか、IPAにも報告窓口が設置されていますのでそれを利用するのが正攻法です。

もちろん義務ではありませんし、報告をしたからと言って基本的に明確なメリットはありません。
一般ユーザーからのバグ報告に対して報奨金制度を導入している企業・サービスもありますが、逆に言うとそれだけセキュリティ対策への意識が高い企業であることを示すので、おそらくそのようなサービスで不具合を見つけるのはかなり稀であると思います。
いずれにせよ報告をしないことを選んだのであれば、どうかその事実はあなたの心の中だけにとどめておいてください。愚痴をこぼしたいときも、せめてサービスや再現手順が特定できないように気を配るようにしてください。思っていた操作が出来ずテンションが下がる気持ちは分かりますが……

一方で、「どんな脆弱性がどのような問題を招くか、知識がなければ防ぐことは難しい」というのもまた事実です。セキュリティ分野を専門にする場合はもちろんですが、実際に手を動かしてみて理解したいということもあると思います。そのような勉強の一環として脆弱性診断の手順を試したい場合は専用の学習ツールを使いましょう。
例えばWebアプリケーションの脆弱性を学ぶのであれば、OWASPで公開されているWebGoatというツールがあります。リンク先は英語ですが、ツールの名称で検索すると日本語の解説ページも見つかるはずです。

学習上の注意点として、この手のツールはその目的上重大なセキュリティ脆弱性を複数持っています。公開サーバにシステムを載せるようなことはせず、自分の手元のマシン上で環境を構築し、必ず外部からはシステムにアクセスできない状態で使用してください
もし悪意のある人に見つかった場合、侵入された自分のサーバを経由して他人のサーバにまで被害が及ぶ可能性もあります。十分に気を付けて利用しましょう。
このようなツールでの学習は、安全にシステムを組むために何を気を付けるべきか考えるときにきっと訳に立つはずです。先に述べた通り取り扱いに注意は必要ですが、ぜひ体験してみて欲しいなと思っています。

それでは、システムに対しても礼儀正しい振る舞いを心がけていきましょう!


The following two tabs change content below.

あのぶる

Software Engineer
杜の都で育ち、赤べこの街でコンピュータのいろはを学んだソフトウェアエンジニア。今はスマホゲームのためのWebAPIを作るお仕事をしています。最近はすっかりガルパンおじさん化。