最近、github.com dependabot が、私のプロジェクトの一部の依存関係が DOS 攻撃に対して脆弱であり、「破損した、または危険な暗号化アルゴリズム」を持っていると苦情を言いました。 「制御されていないリソース消費」エラーが発生します。
具体的には、golang.org/x/net モジュールの CVE-2022-27664、その他のモジュールの CVE-2022-27191 および CVE-2022-32149 について警告されました。
私がやったのは、使用されているすべてのモジュールに対して「go get -u」を実行することでした。明らかに、これでは問題は解決しませんでした。次に、モジュールの依存関係を見つけるために「gograph」を使用し始めました。しばらく時間がかかりましたが、見つけた依存関係の順序は次のとおりです:
リーリーこれは、2023 年 3 月 17 日以降の最新の更新された google.golang.org/api
パッケージは、2018 net の依存関係から
golang.org/x/ になることを意味します。
他の Google パッケージが古いネットワーク モジュールに多くの依存関係を持っていることがわかりました:
リーリーgithub.com/googleapis/google-api-go-client リポジトリを確認したところ、この問題が見つかりました https://github.com/googleapis/google-api-go-client/issues/1048
私も同じ問題を言いましたが、ユーザー hachier
は、go list -m all
コマンドで最新バージョンが表示されるので問題ない、と言いました。
それで、主な質問は、これは問題ですか、そしてその理由は次のとおりです。
ここで何を修正すべきか、github dependabot チェックか google-api-go-client モジュールの依存関係かわかりません。
この質問に答える番です。
go mod chart
を使用して、プロジェクト内のすべてのパッケージを別のドラフト リポジトリで 1 つずつチェックしようとしたところ、これらの脆弱な依存関係は別のリポジトリからのものでした: github .com/go- gorm/postgres
。
つまり、脆弱な依存関係がどこから来ているかを誤って特定してしまいました。どうやらこれは巨大な依存関係グラフが原因であるようです:
リーリープロジェクトの依存関係を視覚化する方法を探している人は、ここにあります:
リーリー元の質問に戻ります。これは、古いバージョンの go を使用している github.com/go-gorm/postgres
が原因で発生します。私の理解する限り、これを修正する唯一の方法は、go バージョンを 1.18 にアップグレードすることです。バージョンが低い場合、go mod chart
では多くの脆弱なパッケージが表示されます。
以上がGolang: golang.org/x/net 上の google.golang.org/api の古い依存関係を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。