そのため、現時点ではyarn audit --fix
がないようですので、yarn audit
エラーを修正する方法を見つけようとしています。
私はいくつかのエラーを修正したyarn upgrade
を試しましたが(それは素晴らしいことです)、まだいくつか残っています。
次に、残りの高い脆弱性に対してyarn add <package>@latest
を試しましたが、使用しているパッケージの依存関係から問題が発生していると思われる場合は、package.json
のバージョンをアップグレードします。
ここに私の残りのエラーのいくつかの例があります:
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ high │ Regular Expression Denial of Service │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ minimatch │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=3.0.2 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ gulp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ gulp > vinyl-fs > glob-stream > glob > minimatch │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/118 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ high │ Regular Expression Denial of Service │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ minimatch │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=3.0.2 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ gulp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ gulp > vinyl-fs > glob-stream > minimatch │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/118 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ high │ Regular Expression Denial of Service │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ minimatch │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=3.0.2 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ gulp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ gulp > vinyl-fs > glob-watcher > gaze > globule > glob > │
│ │ minimatch │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/118 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ high │ Regular Expression Denial of Service │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ minimatch │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=3.0.2 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ gulp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ gulp > vinyl-fs > glob-watcher > gaze > globule > minimatch │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/118 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ moderate │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.11 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ gulp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ gulp > vinyl-fs > glob-watcher > gaze > globule > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/782 │
└───────────────┴──────────────────────────────────────────────────────────────┘
糸のこの問題の解決策は 選択的なバージョンの解像度 と呼ばれ、package.json
の推移的な依存関係に対して基本的にresolutions
を定義しています。
transitive dependencies
は依存関係の依存関係です。
{
"resolutions": { "**/**/lodash": "^4.17.12" }
}
したがって、ここでロダッシュがパッケージの直接の依存関係ではない場合でも、パッケージ内の依存パッケージは、解像度で定義されたバージョンを使用します。特定の解像度も提供できます。詳細 ここ 。
resolutions
は機能しますが、次の理由により、最適なソリューションではありません。
package.json
_を乱雑にするA
が_B@^4.0.0
_に依存し、Bを更新して_^4.3.2
_に解決するとします。しばらくして、Aは更新を取得し、_B@^5.0.0
_を必要としますが、Bを_^4.3.2
_に解決しますが、これは互換性がありません。これは推移的な依存関係を更新する別の方法です:
yarn.lock
_から削除しますyarn install
_を実行しますこのようにして、yarnに依存関係を再度強制的に解決させると、ほとんどの場合、yarnは_yarn.lock
_から削除したものの新しいバージョンをインストールします。
例:脆弱な_[email protected]
_を更新する場合、_yarn.lock
_からこのようなエントリを削除する必要があります:
_[email protected]:
version "0.0.8"
resolved "http://10.0.0.1/repository/npm-registry/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
_
次に_yarn install
_を実行します。
これが役に立たない場合:
依存関係チェーンの上位にある依存関係を更新してみてください。
yarn why <dependency>
_を実行して、どのパッケージがそれをプルしているかを確認しますyarn.lock
_から削除してから、_yarn install
_を実行してみてください例:
次に、推移的な依存関係minimist
を更新する例を示します。
_$ yarn why minimist
.....
=> Found "mkdirp#[email protected]"
info This module exists because "eslint#mkdirp" depends on it.
=> Found "optimist#[email protected]"
info This module exists because "jest#jest-cli#@jest#core#@jest#reporters#istanbul-reports#handlebars#optimist" depends on it.
.....
_
minimist
エントリをyarn.lockから削除して_yarn install
_を実行します。これは役に立ちません。おそらく、mkdirp
とoptimist
には正確に_[email protected]
_と_[email protected]
_が必要なためですminimist
の「直接の親」をyarn.lockから削除します:mkdirp
およびoptimist
。yarn install
_を実行します。_yarn why minimist
_をもう一度実行します。
_$ yarn why minimist
.....
=> Found "mkdirp#[email protected]"
info This module exists because "eslint#mkdirp" depends on it.
=> Found "optimist#[email protected]"
info This module exists because "jest#jest-cli#@jest#core#@jest#reporters#istanbul-reports#handlebars#optimist" depends on it.
.....
_
ここでは、_[email protected]
_が_[email protected]
_に更新されましたが、_[email protected]
_はまだ存在しています。
依存関係チェーンの次の依存関係を_yarn.lock
_から削除します:handlebars
yarn install
_を実行しますyarn why minimist
_を実行します-何も変更されず、_[email protected]
_がまだ残っています。yarn.lock
_から削除します:_istanbul-reports
_yarn install
_を実行しますyarn why minimist
_が更新されたため、_[email protected]
_を実行:_istanbul-reports
_はもうありません。