GitHub Advisory Databaseに、virtualenvのbash用仮想環境有効化スクリプト「bin/activate」の脆弱性「CVE-2026-115586」が報告されています。攻撃者が制御するプロンプト値を取り込むと、環境を有効化したユーザーの権限でコマンドが実行される恐れがあります。資料に公表日の記載はなく、利用企業は対象の版だけでなく、有効化時の設定と入力元を確認する必要があります。
問題になるのはプロンプト値とbashの設定
今回のプロンプトは、対話型のシェルで入力待ちの際に表示する文字列です。報告では、コマンドラインの「--prompt」やAPIの「prompt」引数に渡した値が攻撃の入り口になります。入力元には、利用者自身が書いていないプロジェクト情報も含まれます。
問題が起きる条件として、報告はbashの「promptvars」が無効な状態での有効化を挙げています。このとき、特殊な文字を安全に扱う処理がされていない値が、プロンプト表示を設定する「PS1」に入ります。その後にpromptvarsを有効にすると、次のプロンプト表示でコマンドが実行されます。
また、有効化後にPOSIXモードへ切り替えた場合や、PS1を引き継いだ対話型の子bashでも実行が起きるとしています。不正な値は「pyvenv.cfg」や生成されたスクリプトに残り、別のセッションでも作動するとの報告です。有効化した直後に問題が見えなかったことだけでは、確認を終えられません。
再現した版と、報告が示す回避策
報告では、virtualenv 21.14.9と21.14.12で再現を確認しています。21.14.8では同じ手順による実行は起きず、21.14.9で行われた既存の脆弱性修正に伴う回帰、つまり修正によって生じた問題と説明しています。ただし、この結果だけで21.14.8への切り戻しを安全策と判断することはできません。今回の資料には、修正版や影響する版の全範囲は示されていません。
回避策として挙がっているのは、promptvarsを既定のまま有効にして仮想環境を有効化する方法と、有効化前に「VIRTUAL_ENV_DISABLE_PROMPT=1」を設定する方法です。信頼できない値を--promptに渡さないことも勧めています。
実行権限は環境を有効化したユーザーと同じで、権限昇格はないとされています。日本での提供は発表には書かれていません。国内向けの条件についても、今回の資料からは確認できません。
影響する会社・しない会社
- 影響する: virtualenv 21.14.9または21.14.12で、bash用のbin/activateを使う会社は確認対象です。特に、--promptやAPIのprompt引数へ外部のプロジェクト情報を渡す処理を確認してください。
- 影響する: promptvarsを無効にして有効化した後、設定やモードを変更する運用、PS1を子bashへ引き継ぐ運用がある会社は、報告の発火条件と照合する必要があります。
- 影響しない: virtualenvのbash用bin/activateを使わない会社は、今回報告された経路の対象ではありません。他のシェルや有効化方法の影響は、発表には書かれていません。