Spring MVCで発生するサービス拒否(DoS)脆弱性。
- 韓国人として、日本語とコンピュータの勉強を同時に行うために、ここに文章を書いています
- 翻訳ツールを利用しているため、不自然な表現があるかもしれません。
- 内容が正確でない可能性があります。ご意見をいただけると幸いです
問題の状況
-
@RequestBody
とbyte[]
パラメーターを使用するコントローラーメソッドがDoS(サービス拒否)攻撃にさらされる可能性があります
DoS(Denial-of-Service attack)とは?
- 攻撃者が特定のマシン、ネットワーク、またはホストに過剰なトラフィックを発生させたり、脆弱性を悪用したりして、サービスが正常に動作しなくなるようにするサイバー攻撃
脆弱性
- Spring MVCが
byte[]
でリクエストボディを逆シリアライズする際、過剰に大きいまたは悪意を持って操作されたリクエストを処理することで、メモリ不足が発生する可能性があります
@RestController
public class ExampleController {
@PostMapping("/upload")
public ResponseEntity uploadFile(@RequestBody byte[] fileData) {
// ...
}
}
脆弱なバージョン
- Spring Framework 5.3.0から5.3.41までのバージョン
- より古いサポートが終了したバージョンも影響を受けます
バージョン | 状態 |
---|---|
5.3.0 ~ 5.3.41 | 脆弱性あり |
サポート終了の古いバージョン | 脆弱性あり |
推奨事項
- Spring Framework 5.3.42以上にアップグレードして脆弱性を解消してください
- サポートが終了した古いバージョンでは、メソッドパラメーターをbyte[]ではなくInputStreamに変更することで脆弱性を緩和することが可能です。
@RestController
public class ExampleController {
@PostMapping("/upload")
public ResponseEntity<String> uploadFile(InputStream inputStream){
// ...
}
}