🐧

脆弱性診断結果への対策方法メモ

2024/10/07に公開

脆弱性診断で出る項目についての対策などを調べてみたメモ。

サーバー対応(ヘッダー変更)が必要

TLS暗号スイートの不備

対策:Apache/NginxのSSL設定の変更

まぁ、いらないやつは消しておけみたいな。

https://www.anet.co.jp/security/engineer_blog/tlsapachenginx.html

Cache-Controlヘッダの不備

対策:Cache-Controlレスポンスヘッダの値に「no-store」の値を追加

キャッシュオフが非推奨とは省エネではないな?強く「no-store, no-cache」

https://zenn.dev/arsaga/articles/bbe19ed0e101a6

まぁ、確かにセッションキャッシュ関連で漏れる場合があるとも。

https://gmo-cybersecurity.com/blog/rails-vulnerability-cache-cookies/

Content-Security-Policyヘッダの不備

対策:Content-Security-Policyレスポンスヘッダを追加する

https://it-infra.techmatrix.jp/blog/check20

影響が大きそう。Google Analitycsとかその他に影響でそう。作ってる人でないとちゃんと設定できない。

製品情報の表示(レスポンスヘッダ)

対策:サーバーのソフト情報を非表示にする。server, x-powered-by, via

server_tokens off;だけでも製品名が残るのでダメっぽい。シグネチャーとかで推察するやつもあるからあんまり意味なくね?

こんなやつでヘッダー削除するのかな(nginx)

https://github.com/openresty/headers-more-nginx-module

Referrer-Policyヘッダの不備

対策:Referrer-Policyヘッダーを追加する。

普通に「no-referrer」として消せばいいのか疑問。Formなどに影響でる可能性有り。

https://blog.jxck.io/entries/2024-05-07/referrer-policy.html

Strict-Transport-Securityヘッダの不備

対策:Strict-Transport-Securityヘッダー(HSTS)を追加する

HSTSですね。HTTP→HTTPSのリダイレクトでは不十分という事らしいです。
https://qiita.com/rocinante-ein/items/8250ec6a6712a9dcb96a

X-Content-Type-Optionsヘッダの不備

対策:X-Content-Type-Options nosniffを追加。

Content-Typeの推測をoffにする。メディアタイプをちゃんと設定しておく必要はあるが異なる事はあるのか?webpなどあまり想定していない画像フォーマットなどが適当に表示されていたのが表示されなくなるなどはありそう。MIMEスニッフィング例としてimage/jpg(.jpg)の中にJavascriptコードが混入していてtext/javascriptと自動変換されて実行されるなど。

と思ったら下記のような記述もあった。それは保証外じゃね?

MIMEスニッフィング機能は、一部の古いバージョンのブラウザ(Internet Explorer 9以前など)でのみ対応している機能。現在の最新バージョンの主要なブラウザでは機能しない。

X-Frame-Optionsヘッダの不備

対策:X-Frame-Optionsヘッダの追加(DENY、SAMEORIGIN、ALLOW-FROM)

サーバー側設定の参考(まとめ

https://note.shiftinc.jp/n/nfec1e415c7e0

私が悪いんじゃないです、。レン鯖が悪いんです....

https://www.m3tech.blog/entry/2023/06/13/110000

フレームワークやコード側で対応が可能

Set-CookieヘッダのSecure属性の不備

対策:CookieのSecure属性を有効化

フレームワークのcookie送出部分での対応

https://zenn.dev/arsaga/articles/80a75a3d086131

サブリソース完全性の不備

対策:ブラウザーが取得するリソース (ファイル) のハッシュ値を base64 エンコードし、その値を <script> や <link> 要素の integrity 属性に指定

CDNの場合はサイトにあるものをコピペ。「Copy Script Tag」などを選択するとちゃんとintegrity付きで表示される。

<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.13/dayjs.min.js" integrity="sha512-FwNWaxyfy2XlEINoSnZh1JQ5TRRtGow0D6XcmAWmYCRgvqOUTnzCxPc9uF35u5ZEpirk1uhlPVA19tflhvnW1g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

自前でやる場合

cat FILENAME.js | openssl dgst -sha384 -binary | openssl base64 -A

Discussion