7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

脆弱性を生み出しかけた話

Last updated at Posted at 2021-12-10

#忘れもしない2021年夏
ITエンジニアになって1年と半分が過ぎて仕事にも慣れてきた時でした。
その時の業務は開発しているサービスのページに広告を表示して、そこを叩いたらあらかじめ設定されていたページへとばすものでした。

順調に実装を進めていって、問題がないか動作を確認していました。
その時は検証用の環境にデプロイをして確認をしていました。検証用の環境は自分以外にチームのメンバーも見れます。

その時にメンバーのベテランエンジニアさんからありがたいお言葉をもらいました。
「これ広告以外にも飛ばされね?」

実はパラメータには飛ばされる先のURLを仕込んでいて、広告をクリックしたときにそのURLに飛ばすようにしていました。
(あとから知ったのですがこの脆弱性を利用して意図しないリダイレクトを行わせることをオープンリダイレクト攻撃といいます)

この時は結構ヒヤッとしました。

#対策
オープンリダイレクト攻撃には対策として以下の2点があります

####そもそもパラメータで渡さない
穴があるなら埋めればいい。
外部パラメータで渡すのをやめれば、攻撃の穴を防ぐことができます。

####URLのホワイトリストを作る
あらかじめリダイレクトを行うURLをホワイトリストとしてサーバ内に置いておき、リダイレクトを行う際にチェックを行う方法です。

#それから
この一件があってからセキュリティに向き合おうと思って勉強を始めました。
今はまだまだ知識はないかもしれませんが、この頃に比べたら多少の知識がついたのと、セキュリティに意識をした開発を進められているのかなと思います。
余談ですがセキュリティの勉強を始めた頃、どの本もなかなかの分厚さがあって苦労しました。
そこで偶然、IPAの「安全なウェブサイトの作り方」という資料(無料)を見つけたのでこれからセキュリティを勉強する方にはおすすめです。
ページ数も100ページほど短く、簡潔でわかりやすく、1年ごとに改訂があるので新しい情報を得ることができます。

#参考
安全なウェブサイトの作り方
https://www.ipa.go.jp/security/vuln/websecurity.html

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?