Ruby

Railsのセキュリティについて

1+

以前に学習した、Railsのセキュリティについて復習の意を込めて再掲。

情報セキュリティの3要素

機密性:アクセスを認められたものだけが、その情報にアクセスできる状態を確保すること

完全性:情報が破壊・改ざん・消去されていない状態を確保すること

可用性:必要なときはいつでもその情報にアクセスできる状態を確保すること

image.png

https://blog-ja.chatwork.com/2018/04/it.html

image.png

情報セキュリティが維持できず、何らかの損失が発生する可能性を「リスク」
リスクを現実化させる要因を「脅威」
脅威に対する弱みを「脆弱性」と言う。

http://www.intellilink.co.jp/security/services/consulting/07.html

 

システムへの攻撃手法

パスワードクラッキング

IDとパスワードによる認証を行う会員制Webサイトからユーザーのパスワードを抜き出そうとする攻撃

辞書攻撃
→パスワードによく使われる単語をまとめたファイル(辞書)を用意しておいて、それを使ってログインを次々に試してパスワードを当てていく攻撃

ブルートフォース攻撃
→パスワードに使われる文字の全組み合わせをしらみつぶしに試していく方法

パスワードクラッキングを防ぐ方法

①アカウントロック
https://qiita.com/inodev/items/eeb26ea9408d4627bf0a

まず、deviseのマイグレーションファイルを調整する

User(該当モデル)にdeviseの:lockableを追加。

deviseの設定ファイルにロック内容を設定する。

②パスワードの強度を上げる

Dos攻撃

短時間にサーバーが処理しきれないような大量のアクセスを行うことで、サービス停止に陥らせる攻撃

SYN Flood攻撃
→TCPのやりとりにおけるSYNパケットだけを大量に送りつけて、サーバーを接続待ち状態にさせることで、別のユーザーからの新たな接続を確立できなくする攻撃

image.png

http://www.itmedia.co.jp/help/howto/security/j08/02.html

F5
→繰り返しアクセスし続けることで、リクエストへの反応ができないレベルまで、Webサーバーへの負荷を高める攻撃

セッションハイジャック

ログインしてから利用するようなWebシステムの場合、CookieやセッションIDを使って、アクセスしてきたユーザーがログイン済みかどうかを判断している。何らかの手段で第三者がCookieの中身やセッションIDをを取得されると容易に個人情報が取得されてしまう。これがセッションハイジャック。

Cookieの仕組み(https://www.slideshare.net/BurpSuiteJapanUserGr/burpsuitejapanhttp
↓↓

image.png

セッションハイジャックを防ぐ方法

より安全な方法で、この問題を解決する方法は、セッションの有効期限をサーバー側に保存すること。
https://techracho.bpsinc.jp/hachi8833/2018_10_23/62858

ユーザー認証にdeviseを利用している場合
deviseに組み込まれている「Timeoutableモジュール」を有効にする。このモジュールは、ユーザーセッションが期限切れかどうかの検証を行う。これを利用するには、アプリでユーザーを表すモデルの中でこのモジュールを次のように有効にする必要があります

次にdeviseイニシャライザのtimeout_inオプションに必要な値(デフォルトは30分)を設定

クロスサイトスクリプティング(XSS)

https://cybersecurity-jp.com/security-measures/18427

エンドユーザー側がWebページを制作することのできる動的サイト(Twitter・掲示板)などに対して、自身制作した不正なスクリプト(java/HTML等)を挿入するサイバー攻撃。エンドユーザーが被害者となることが一つの特徴。

image.png

1.攻撃者CがXSSに対して脆弱性のあるA社を発見し、A社に興味を持ちそうなユーザーのいる掲示板サイトBに罠を仕掛ける(例:スクリプト付リンクを貼る)。
2.ユーザーが掲示板サイトBを閲覧する。
3.掲示板サイトB内でスクリプト実行
4.ユーザーはスクリプト情報を持ったままA社のページに移動(クロスサイト)する。
5.スクリプトの効果により「A社のサイトとして」表示された偽サイトにジャンプする。
6.騙されたユーザーが情報を入力した結果、スクリプトが悪さをする
7.攻撃者Cの手により、ユーザーに対して様々な被害が発生(マルウェア感染・攻撃者Cへの情報漏洩など)。

CSRF (クロスサイト・リクエスト・フォージェリ)

https://www.ipa.go.jp/security/vuln/vuln_contents/csrf.html

ログインが必要なサイトに対して操作を行うリンクにユーザーがアクセスすることで被害を受ける攻撃

1+
ABOUT ME
chopes
前職では、人材業界で法人営業・キャリアアドバイザー・大阪責任者をしていました。他にも、新入社員の研修策定と育成、面談者の集客におけるスカウト業務や中途採用の面接官、新卒採用の2次選考官、インターンシップのメンターとしてプログラムに参加していました。退職後は、未経験でエンジニアになるためにスクールに通学して勉強。2ヶ月の転職活動を経て、今春からRailsエンジニアとして第二のキャリアを歩むことになりました。主に学習記録や未経験エンジニアについてアウトプットしていきたいと思います! 以下、Twitterアカウントですので、気軽にフォローしてください! Twitter:@chopesu_se