とあるシステムでServerless Framework(以下、serverlessと呼ぶ)を使っているのですが、Githubのリポジトリ上で Dependabot alert
が出ていたので、それの調査と対応の内容を書き留めておきます。
前提
serverless@2.41.0
を使用
脆弱性の内容を確認する
npm audit
コマンドを実行して脆弱性の内容を確認します。
$ npm audit === npm audit security report === # Run npm update ws --depth 7 to resolve 4 vulnerabilities ┌───────────────┬──────────────────────────────────────────────────────────────┐ │ Moderate │ Regular Expression Denial of Service │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Package │ ws │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Dependency of │ serverless [dev] │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Path │ serverless > @serverless/components > │ │ │ @serverless/platform-client > ws │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ More info │ https://npmjs.com/advisories/1748 │ └───────────────┴──────────────────────────────────────────────────────────────┘ ┌───────────────┬──────────────────────────────────────────────────────────────┐ │ Moderate │ Regular Expression Denial of Service │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Package │ ws │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Dependency of │ serverless [dev] │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Path │ serverless > @serverless/enterprise-plugin > │ │ │ @serverless/platform-client > ws │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ More info │ https://npmjs.com/advisories/1748 │ └───────────────┴──────────────────────────────────────────────────────────────┘ ┌───────────────┬──────────────────────────────────────────────────────────────┐ │ Moderate │ Regular Expression Denial of Service │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Package │ ws │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Dependency of │ serverless [dev] │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Path │ serverless > @serverless/components > │ │ │ @serverless/platform-client-china > @serverless/utils-china │ │ │ > socket.io-client > engine.io-client > ws │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ More info │ https://npmjs.com/advisories/1748 │ └───────────────┴──────────────────────────────────────────────────────────────┘ ┌───────────────┬──────────────────────────────────────────────────────────────┐ │ Moderate │ Regular Expression Denial of Service │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Package │ ws │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Dependency of │ serverless [dev] │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ Path │ serverless > @serverless/components > │ │ │ @serverless/platform-client-china > ws │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ More info │ https://npmjs.com/advisories/1748 │ └───────────────┴──────────────────────────────────────────────────────────────┘ found 4 moderate severity vulnerabilities in 668 scanned packages run `npm audit fix` to fix 4 of them.
脆弱性の詳細
脆弱性の詳細情報を見ると、以下のように記載がありました。
Overview
In ws before versions 6.2.2 and 7.4.6 there is a ReDOS vulnerability.
Impact
A specially crafted value of the Sec-Websocket-Protocol header can be used to significantly slow down a ws server.
Patches
The vulnerability was fixed in ws@7.4.6
- ライブラリ
ws@7.4.6
より前のバージョンでReDOS
の脆弱性がある - Sec-Websocket-Protocolヘッダに特別な細工を施した値を使用すると、wsサーバの速度を大幅に低下させることができる
ws@7.4.6
で脆弱性は修正された
対応内容
serverless@2.44.0
にアップデートしました。
serverless@2.44.0
の package.json
の内容を確認すると、脆弱性が修正された ws@7.4.6
を指定しているのを確認できます。
https://github.com/serverless/serverless/blob/v2.44.0/package.json
2.44.0
より前のバージョンでは ws@7.4.5
を使用しているため、2.44.0
までアップデートするのが良さそうでした。
脆弱性の内容を見る限り、AWS Lambdaのデプロイにserverlessを使っているだけだったのでそこまで影響がない内容でしたが、アラートを放置するのも良くないのでサクッと対応しました。
最後に
ライブラリはこまめにアップデートしていきたいですね!