脆弱性が作り込まれる原因はここにあった! 管理者・責任者が絶対に知っておくべきこと

シェア ツイート

セキュリティ診断員である私ですが、たまにこのようなことを聞かれます。

「Webの製品やサービスを運営していますが、セキュリティ被害に遭いますか?」

そう聞かれたら「Yes」と断言することはできませんが、だからといって何も対策をしなくて良いわけではありません。例えば、セキュリティ被害の原因となる脆弱性を「セキュリティ診断」で見つけて、必要な対策をすることもできますが、これには時間もお金もかかるのが現実です。

「セキュリティ知識を備えて開発し、自分たちでツールを使って診断すればいいんじゃないの?」

管理者や責任者であれば、一度はそのような考えにたどり着くのではないかと思います。そのような方にぜひ知っていただきたいのが「脆弱性が作り込まれる原因」です。

どうしてSQLインジェクションが生まれるのか

三大脆弱性の1つである有名な「SQLインジェクション」を例に解説します。

SQLインジェクションとは、

「外部から送信されたSQL文により、Webアプリケーションのデータベースを不正に操作され、攻撃されてしまう状態のこと(脆弱性)。またはその攻撃」

です。

この原因は、端的に言えばクライアントであるWebブラウザから送られた文字列を、そのままSQL文の一部として利用してしまうことです。これを防ぐには、クライアントから入力された文字列をエスケープ処理したり、プレースホルダの機能を利用したりすれば良いだけ。実に簡単なことです。

「じゃあそのように開発すればいいじゃないか」

そんな声が聞こえてきそうですが、そうもいきません。多くの開発者にとって、開発とは「要件に基づき機能を実現させる」ことが主目的。つまり、開発している製品やサービスのユーザーとなる方が、機能を滞りなく利用できることが、開発者にとってのゴールなのです。

処理性能を上げるためにプレースホルダを利用することはあっても、SQLインジェクションを防ぐためにプレースホルダを利用するケースは少ないと、「元開発者」でもある私は思います。

なぜなら、そもそも開発者の方と私たちセキュリティに関わる人間では観点が異なるためです。

開発者とセキュリティ診断員の観点はどう違う?

開発者の方は、ユーザーがいかに快適に利用できるか、そのためのUI/UXを考えることが多いと思います。そして、開発者が考えるユーザーは「良い人」であり、機能要件以外の行動なんてしないということが前提になっているのではないでしょうか。

一方、私たちセキュリティ診断員などセキュリティに携わる人間は「悪い人」のことを考えます。「ユーザー以外の悪い人」や「ユーザーの中でも悪いことを考える人」のことを常日頃から考えています。

例えば、スマートタグ。大切なものに直接つけることで紛失を防ぐスマートタグには、タグの位置情報をスマホで追跡できるものがあります。

この便利な機能を悪用し、他人のバッグにスマートタグを忍ばせ、居場所を特定するストーキング被害のニュースを耳にすることもあります。ですが、スマートタグの開発者は、決してストーキングのために設計したわけではありません。本来の目的である「物を無くしたときに探すことができる」という使い方をする「良い人」を想像してこの機能を開発しているはずですよね。

スマートタグに限った話ではありませんが、どんなものでも「悪い人」によって、開発者が思い描いたこととは違う使い方をされることで、被害が生まれてしまうのです。

餅は餅屋に、セキュリティ診断はセキュリティ診断会社に

開発者が「悪い人」のことを考えて開発をするよりも、「良い人」のことを考え、より使いやすくなるように開発をする方が望ましいことは、言うまでもないと思います。

開発者が「良い人」のことを考えて開発し、それを「悪い人」のことを考えてセキュリティ診断員が診断をする。これで、使いやすくセキュリティにも強い製品やサービスの出来上がりです。

開発エンジニア、セキュリティ診断エンジニア、どちらも同じITエンジニアではありますが、システム開発はシステム開発会社に、セキュリティ診断はセキュリティ診断会社に任せるのが良いでしょう。

Webセキュリティ診断にご興味がございましたら、ぜひ当社の提供するハイブリッドセキュリティ診断「ABURIDA」をご覧ください。

ABURIDAのトップページへ

あなたのWebサイトも、脅威に対する「安心」を手に入れませんか?

シェア ツイート

カテゴリー

キーワード

人気の記事