SSTによる安全なWebサイト運営のためのセキュリティ情報

エンジニアブログ
  • shareSNSでシェア
  • Facebookでシェアする
  • Xでシェアする
  • Pocketに投稿する
  • はてなブックマークに投稿する

非エンジニアから脆弱性診断員になった人の話

非エンジニアから脆弱性診断員になった人の話

はじめに

はじめまして、Webアプリケーションの脆弱性診断をしている大二郎です。

私は2017年から先述の診断員として働き始めました。それまでは、診断サービスに関するスケジュールなどの案件調整を主な業務として担当しており、SST社内で非エンジニアからエンジニアへ転向を果たしたレアな人間です。そのため、SSTの特別天然記念物だと思ってください。

この記事では私が診断員になるまでの過程で必要な知識をどういった方法で蓄積していったか、その一部を紹介していきたいと思います。

脆弱性診断員になったきっかけ

私の場合は、お客様との案件調整という業務の中で脆弱性関連の情報に触れる機会が多く、非エンジニアの期間で1000以上の診断案件に関わってきました。そういった環境で生活しているうち、次第に「自分も脆弱性を見つけたいっ!!!」という衝動に駆られるようになっていきました。また、周りの社員からもセキュリティに関する知識を吸収できる環境にあったため、より衝動が高まっていきました。

脆弱性診断員になるために

そうは言っても、技術的なバックグラウンドのない状態では機械的に脆弱性を検出することは可能でも体系的な知識が身についていないため何が起きているのか理解できない状態です。
脆弱性を理解するための基盤となる知識をある程度身につけるために「Webアプリケーションの一般的な実装」について知る必要がありました。そこで、実際に手を動かして学習できるコンテンツとしてRails Tutorialを利用することにしました。

Webアプリの一般的な実装について学ぶ

Rails Tutorialの活用

Rails Tutorialは、Ruby on Railsというウェブアプリケーションフレームワークを利用してサンプルアプリケーションを作る内容となっています。内容は章ごとに分かれており基本的には1つのRailsプロジェクトに機能を付け足すような流れで学習を進めていく流れとなっています。また、日本語ドキュメントが多く存在するため、私のような初学者でも取り組みやすい内容だったように思います。

なお、第3版からクラウドIDEの利用が推奨されていて、Webブラウザが動作する環境であれば学習可能なようです。

実装する基本的な機能

最終的に以下のような機能を持つWebアプリケーションが完成します。

  • ログイン
  • 会員機能
    • 登録
    • 更新
  • パスワードリマインダ
  • 記事投稿
  • ユーザ間フォロー
  • 管理者機能
    • ユーザ削除

Railsのメソッドやクラスは、各機能実装の理解をより深めるために以下のようなドキュメントを確認しながら利用することをお勧めします。
何を何のためにしているのか、実装部分の仕組みを理解しながら進めていくことが大切です。

合わせてやってみたい

脆弱性を発生させる

チュートリアルには脆弱性を発生させる内容は含まれていませんが、あえて脆弱な実装にしてみることでどういった問題が発生するのか、どういった違いにより問題が発生するのかなど確認することで、ある程度脆弱性に関する知識も身につけられます。

例えばテンプレートエンジンの .erb ファイルで以下のようなコードがあった場合に、出力箇所でクロスサイトスクリプティングが発生するかどうか確認しながら進めてみるのも面白いでしょう。

<%= raw @result %>

アプリケーションコントローラから以下のコードを削除した場合にクロスサイトリクエストフォージェリが発生するかどうか確認してみてもいいですね。

protect_from_forgery with: :exception

Railsのセキュリティ機能については以下のドキュメントが参考になります。様々な問題点に対してRailsでの対策方法などが記載されています。

それでも足りない知識

個人的に感じた部分ですが、DB周りの知識があまり身に付かなかったように感じました。ActiveRecordというORMを利用することでSQLを意識せずにデータベースを扱えてしまうため、便利な反面それが何を行っているのか意識して理解するアプローチが自分には必要でした。

おわりに

「Webアプリケーションの一般的な実装」について知るための方法の一つを紹介しました。脆弱性診断を行うためには他にも様々な知識が必要となりますが、一つのきっかけとしてRails Tutorialのようなコンテンツから始めてみるのもよいかもしれません。私の場合は、活用方法を工夫することで得るものは非常に多かったように思います。この記事を読んでいただき、今後私と同じように「診断員になりたい」と考えている方や、新しく社会人になった方の参考になれば幸いです。

  • shareSNSでシェア
  • Facebookでシェアする
  • Xでシェアする
  • Pocketに投稿する
  • はてなブックマークに投稿する

この記事の筆者

筆者:sst-daijiro