GitHub Advisory Databaseに、virtualenvの環境を有効化する処理に関する脆弱性2件が掲載されています。細工された環境パスやプロンプトを使うと、有効化時にコマンドなどが実行される恐れがあり、いずれも21.14.2で修正されています。資料では公表日を確認できません。
fish用スクリプトは21.14.1以前が対象
CVE-2026-113732は、コマンドを入力・実行するシェルの一つ、fish向けの有効化スクリプトにある脆弱性です。activate.fishを含む21.14.1以前の全リリースが対象です。
原因は、文字列の引用処理がfishの解釈と合っていないことです。攻撃者が環境パスかプロンプトに影響を与えられる場合、細工された値によって、有効化時にコマンドが実行される恐れがあります。プロンプトは、コマンド入力待ちの際に表示される文字列です。
virtualenvは標準でactivate.fishを生成します。このため、ファイルが存在するかだけでなく、実際にどのシェルで、どのような入力から作った環境を有効化しているかを確認する必要があります。
アドバイザリは、ブランチ名などをパスに使うCIジョブを攻撃経路の例に挙げています。CIは、ビルドやテストなどを自動実行する仕組みです。他者が命名したディレクトリで「--prompt .」を使うことも、攻撃経路になります。回避策は、環境パスやプロンプトにバックスラッシュを含めないことです。
もう1件はbashなどにも影響、引用処理だけでは防げず
CVE-2026-113776は、有効化スクリプトのひな型を処理する部分の脆弱性です。影響する版は20.26.6から21.14.1までです。
原因は、置換した値の中に別の置換項目名があると、その部分を再び置換してしまうことです。引用処理を済ませた後に再置換が起きるため、引用処理だけでは防げないとされています。
攻撃には、作成先パスか「--prompt」の値に影響を与えられることが必要です。bashとfishの有効化スクリプトでコマンド実行が確認されたほか、activate.xshとbin/activate_this.pyでもコード実行が確認されています。fishを使っていないという理由だけで、今回の2件を対象外にはできません。
こちらの回避策は、パスや「--prompt」に「VIRTUAL_NAME」などの置換項目名を含めないことです。日本での提供は発表には書かれていません。
影響する会社・しない会社
- 影響する: activate.fishを含む21.14.1以前のvirtualenvを利用する会社です。特に、環境パスやプロンプトへ他者の入力が入る運用では、攻撃成立の条件を確認する必要があります。
- 影響する: 20.26.6から21.14.1までを使う会社です。bashなどを使う開発環境も確認対象です。ブランチ名を環境パスに使うCIジョブや、他者が作成した環境の有効化を優先して点検してください。
- 影響しない: 21.14.2の修正が反映された有効化処理では、今回の2件は修正済みです。ただし、使用中のvirtualenvの版だけでなく、実際に有効化するスクリプトも確認してください。