yuba
@yuba (ゆば屋 宗次郎)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

pipenvやpoetryで、依存の禁止を記述することはできますか?

解決したいこと

最近、PyPIのctxパッケージの所有権が乗っ取られて >=0.1.2 に悪意あるコードが注入されたというニュースが話題です。
汚染されたバージョンのパッケージが孫依存ででも自分のプロジェクトに入り込むことを防ぐにはどうすればいいでしょうかという相談になります。

pipenvやpoetryによる依存構成ですでに直接でも孫依存ででもctxに依存しているのなら、 ctx<0.1.2 という記述を明示的に入れれば十分です。
では、もともとctxにまったく依存していない場合に、今後の各ライブラリのアップデートなどを原因として入り込んできてしまうことを未然に防ぐにはどうしたらいいかです。ctx<0.1.2 と記述してしまうと、必要もないのにctxが取り込まれることになります。「ctx>=0.1.2には依存禁止」という設定を入れる方法はないものでしょうか?

どちらも、ドキュメントを一通り読んでみてそういった機能は見当たらなかったのですが、もし見落としていて本当はあるようだったら教えていただければ。もしくは、pipenv/poetry単体でできなくてもこんな別アプローチができるよなどありましたら。
よろしくお願いします。

0

1Answer

pipenvもpoetryも利用したことがあるのですが、そのような機能は無いように思います。愚直なワークアラウンドになりますが、lockファイルあるいはpip freezeの出力をパースして、依存を禁止したいバージョンのパッケージが入っているかどうかを調べるのはどうでしょうか。(ただし、依存を禁止したいバージョンのパッケージが入り込んでいないことが確認できるだけで、入り込んでいる場合の解決は手動になってしまいますね)

パースの手間に加え、脆弱性のあるパッケージが入り込むことを防ぐには「脆弱性のあるパッケージのリスト」を定期的にメンテナンスする必要もあるため、SourceClearのようなスキャンツールを利用するのが現実的にも思えます。

参考:Introducing Python Support | Veracode

3Like

Comments

  1. @yuba

    Questioner

    あかんライブラリやバージョンは他にもあるのだから、自力で除外しようとせずその検知はスキャンサービスに任せるべきというのはその通りと思いました。
    ありがとうございました。

Your answer might help someone💌