npmのDanfo.jsの「danfojs@1.1.2(最新版)」に、脆弱性のある「xlsx@0.17.2」が入ってたので対処法メモ
JavaScriptでPythonのPandasのようなデータフレームが
扱えるライブラリ「Danfo.js」の紹介記事を読んで興味を持つ
クライアント側で動く方の「danfojs」を早速試すことにしたが…
npm init
npm install danfojs
重大な脆弱性があるとか出てしまった。
9 packages are looking for funding
run `npm fund` for details
2 high severity vulnerabilities
To address all issues, run:
npm audit fix
どんな脆弱性があるのか見てみると…
「xlsx@0.17.2(Sheet.JS)」にReDoSの脆弱性があるとのことだった。
npm audit
# npm audit report
xlsx *
Severity: high
Prototype Pollution in sheetJS - https://github.com/advisories/GHSA-4r6h-8v6p-xvw6
SheetJS Regular Expression Denial of Service (ReDoS) - https://github.com/advisories/GHSA-5pgg-2g8v-p4x9
fix available via `npm audit fix --force`
Will install danfojs@0.1.1, which is a breaking change
node_modules/xlsx
danfojs >=0.1.2
Depends on vulnerable versions of xlsx
node_modules/danfojs
2 high severity vulnerabilities
To address all issues (including breaking changes), run:
npm audit fix --force
とりあえずnpm audit fix
とnpm audit fix --force
をしたけど解決せず。
どうすればいいのか検索して見たところ、解決方法が書いてあるサイトを発見!
xlsx(Sheet.js)パッケージの脆弱性に対応する方法
「xlsx(Sheet.JS)に脆弱性が修正済みのverはあるけど、諸事情でnpm上にない」
「Sheet.JSのCDNを指定して、npmでinstallする必要がありますよ」とのこと
xlsx(Sheet.js)の最新verの情報
この記事の投稿時点ではこのverが@0.20.2が最新だった。
一つ上の記事にある@0.20.1にはReDoSの脆弱性があるので注意(CVE-2024-22363)npmのパッケージの脆弱性に手動対応する方法
特定のnpmのパッケージのモジュールに脆弱性があって、
npm audit fix
とnpm audit fix --force
で解決できなかった場合、
手動でpackage-lock.json
を書き換えた後にnpm install
すると良いとのこと
実際に「danfojs@1.1.2(最新版)」の脆弱性を手動で解決
上記の記事を参考にして対処を実行!
package-lock.json
でdanfojsのモジュールの部分を探す
1:package-lock.json
内で「xlsx」で検索すると出てくると思う
"node_modules/danfojs": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/danfojs/-/danfojs-1.1.2.tgz",
"integrity": "sha512-KakcRbOJyJcv68iRsbIMDEWly/fUiznr1HfOhtdWUdwfbp5uGidq9ow426Cf5EQH/Sp8q/lVbjGtWcxB17zvSg==",
"dependencies": {
"@tensorflow/tfjs": "^3.13.0",
"mathjs": "9.4.4",
"papaparse": "^5.3.1",
"plotly.js-dist-min": "2.8.0",
"table": "6.7.1",
"xlsx": "0.17.2"
}
xlsx
のverをCDNの最新版のやつに書き換えて保存
2:package-lock.json
のnode_modules/danfojs
の
dependencies
のxlsx
のverをSheet.JSのCDNに書いてある最新版に書き換える。
※v0.20.2は、この記事が書き込まれた時点での最新verなので注意。
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz"
3:もう一回インストール →脆弱性の問題が解決!
脆弱性が消えて大丈夫になった。
npm install
removed 66 packages, changed 1 package, and audited 79 packages in 1s
9 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
余談:
danfo.jsのリポジトリに、脆弱性の問題を解決する内容の、
プルリクエストが2023年に出ていたけど、マージ待ちのようだった。
そのうち解決するのではないかと思う。