セキュリティ

情報セキュリティ対策

IPAが無料で使える情報セキュリティ対策学習ツールを公開している。主に中小企業で働く方を対象に情報セキュリティの基本対策を学習できる。以下のリンクから利用可能。

WEBサイトを作る際のセキュリティ対策

WEBサイトやWEBアプリケーションを作る際には、経産省とIPAが注意喚起したセキュリティ対策措置を施す必要がある。セキュリティ対策措置を施さなかった場合、「専門家として当然果たすべき注意義務」を怠ったとして損害賠償請求された事例もあるため注意されたい。Webアプリケーションのセキュリティについては、IPAが公開しているWebサイトや体系的にまとまっている書籍で学習するのがおすすめ。

Webサイトの脆弱性はすでに見つかっているものだけでも数多く存在するが、実際に問題になる脆弱性の多くは、数種類のものに集中している。その中でも特に問題になることの多い、XSSやSQLインジェクションなどの脆弱性はしっかりと抑えておく必要がある。

IPAが四半期ごとに「脆弱性関連情報の届出状況」のレポートを出してくれているので、こちらも合わせて参照されたい。

セキュリティは非常に複雑で専門性が高いため、エンジニアとして基礎的な知識と対策は身につけた上で、難しい部分は専門家に依頼するのが望ましい。だが、脆弱性が見つかった際の影響が小さい場合や専門家に依頼する前段として、OWASP ZAPなどの無料の脆弱性診断ツールを用いて自分で脆弱性診断できる技術も必要になってくる。なお、脆弱性診断ツールを実行するだけではなく、検出された脆弱性が本当か手動で確認できること、その結果を踏まえてコードを改修できることが大切である。

フレームワークや外部のライブラリ

DjangoやRuby on RailsなどのWebフレームワークでは、実装の途中で基本的な脆弱性が組み込まれないように設計されている。ただし、すべての脆弱性を防ぐことはできず、利便性の観点から脆弱性を埋め込みやすいメソッドが存在する場合もある。例えば、ReactのdangerouslySetInnerHTMLはXSSを埋め込みやすく、どんな使い方をすると脆弱性を埋め込んでしまうのか理解した上で利用する必要がある。

サニタイズのように自分で実装できそうなセキュリティ対策でも、場面によって抜け漏れが生じる可能性が高いため、信頼できるライブラリを利用した方が良い。

フレームワークを含む外部のライブラリは非常に便利だが、その分それらのライブラリが持っている脆弱性が狙われる可能性がある。脆弱性は日々公表されているため、定期的に利用しているライブラリのバージョンに脆弱性がないか確認する必要がある。pythonならpip-auditなどのライブラリを用いると、簡単に脆弱性チェックを実施できる。脆弱性が見つかった場合はライブラリを新しいバージョンにアップデートするか、それができない場合は別の手段で実装し直す必要がある。

なお、テストなど開発環境でしか利用しないライブラリでは、Webサイトの安全性に直接影響することはないが、不正コードの実行による機密情報の流出や、ビルド処理の改ざんによる脆弱性の埋め込みなどは起こり得るため注意は怠れない。

【付録】フィッシング詐欺への注意喚起

最近、金融機関や企業などを装った偽のメールやサイトによるフィッシング詐欺が多発している。フィッシング詐欺とは、偽サイトに誘導して個人情報や口座情報、クレジットカード番号などの入力を促し、盗み取る犯罪である。被害に遭うと、不正送金や不正利用、アカウントの乗っ取りなどの可能性があるため、以下の点などを十分に確認されたい。

  • 送られてきたメールやメッセージが本物かどうか(送信元の送信者名やメールアドレス、送信先、タイトル、本文)を確認する。怪しいメールについては、添付ファイルを開いたり、リンクをクリックしない。
  • URLを確認し、リンクを不用意にクリックしない。特にIDやパスワード、クレジットカード番号などの入力を求められた場合、URLを再確認し、疑わしい場合は正しいサイトのURLを直接Webブラウザに入力するか、ブックマークなど信頼できるソースからアクセスする。
  • 偽サイトのURLは本物のサイトと全く関係のない文字列の場合もあるが、良く似た文字列で瞬時に区別できないようなものを使っている場合もある。例えば、本物のサイトのドメイン名が"example.com"である場合、以下のような偽サイトのURLが考えられる。

  • <サービス名>.com.example.com(サブドメインを利用)
  • <会社名>.example.com(サブドメインを利用)
  • exanple.com(スペルミスを狙ったもの)
  • exmple.com(一文字削除したもの)
  • example.jp(トップレベルドメインが異なるもの)
  • 万が一被害に遭ってしまった場合には、口座の凍結など迅速に対処する必要がある。インターネットを安全に利用するために、フィッシング詐欺への対策を心がけよう。



    著者画像

    ゆうき

    2018/04からITエンジニアとして活動、2021/11から独立。主な使用言語はPython, TypeScript, SAS, etc.