そのセキュリティ要件はなんなのか①
こんにちは、iwanaga です。
GW 中は諸事情によりスキップしていたので投稿久しぶりな気がする。
システム開発する上でセキュリティは最重要検討事項ではあるのだが、そのセキュリティ要件は箇条書きになっていて、なぜその要件が必要なのかが有耶無耶になっているケースがある。
一度調べても忘れてしまって、毎度調べる羽目になるので抜粋してメモっておく。
ちなみに、当方「情報処理安全確保支援士」の資格を取得しているのだが、その辺りの知識に自信はない。
間違っていたら教えてください。
TLS ver 1.2 以上必須
サーバ側の要件。
サーバ側がTLS ver 1.2 未満を有効にしている場合、ダウングレード攻撃によって通信を傍受される可能性がある…らしい。
それを防ぐために、脆弱性のない(と思われている)バージョンである 1.2 以上を強制することで傍受を防ぐ、そのための要件。
以下はうろ覚え。
TLS 通信は、前提としてクライアント ⇆ サーバ間で、どの TLS バージョンで通信するかをネゴシエートする。
その際に、クライアントが ver 1.2 未満を提案し、サーバがそれを受け付けられるようになっている場合、該当バージョンで通信が開始されてしまう。
そうすると、該当バージョンに含まれる脆弱性を突かれる恐れがある、という話らしい。
具体的にどのような脆弱性があるのかは不明。
最近は TLS ver 1.3 もあるらしい。
また、同じ文脈で「SSL を受け付けるな」という要件も存在する。
SSL は TLS 以前の暗号技術。「以前の」なので複数の脆弱性があるようで、同様の問題があるためこれも受け付けないようにしておきましょうね、という話らしい。
ContentType に charset をつける
ブラウザでアクセスするサーバの要件(Web / HTML 的な話)。
そもそも ContentType を指定する必要があるのは前提。
ContentType を指定しないと、ブラウザが勝手に判断し、 XSS 攻撃を受ける恐れがある。
攻撃者が DB にスクリプトを登録し、それにアクセスしたユーザのブラウザ上で該当スクリプトが実行されるということ。
その上で、 charset もつけないと、文字コードをブラウザが勝手に判断し、同様の問題が起きる恐れがあるということらしい。
ちなみに、ContentType / charset を指定していても、 IE ではこの設定を無視し IE が勝手に判断するケースがあるらしく完全とはいえないらしい。
とはいえ、イマドキ「IE でアクセスする」とは…って感じなので後者はあまり考えなくても良いかもしれない。
また、そもそもブラウザでアクセスすることが前提の要件なので、ブラウザでのアクセスを前提としない場合はこの要件の適用範囲外っぽい。
まとめ
セキュリティ要件難しい。
また、何か調べたら追記します。