Perl の脆弱性 CVE-2023-47038/CVE-2023-47039 が FIX:Ver 5.38.1 をリリース

CVE-2023-47038 & CVE-2023-47039: Two flaws found in Perl programming language

2023/11/17 SecurityOnline — ダイナミックで汎用性の高いプログラミング言語 Perl は、30年以上もの間において、ソフトウェア開発の分野で主力となってきた。その適応性と豊富な機能セットにより、Web アプリケーション/システム管理タスク/科学的コンピューティングなどで活用されている。しかし、最も堅牢なプログラミング言語であっても、セキュリティの脆弱性とは無縁ではない。最近になって発見された、Perl に存在する2つの深刻な脆弱性は、機密データを危険にさらし、システムへの不正アクセスを許す可能性があるものだ。

CVE-2023-47038:バッファ・オーバーフローの脆弱性

1つ目の脆弱性 CVE-2023-47038 は、Perl の言語能力の基本である、正規表現の領域に潜んでいるものだ。Perl のバージョン 5.30.0〜5.38.0 には、1 Byte バッファ・オーバーフローという、小さいながらも深刻なバグが生じていた。この脆弱性は、特別に細工された正規表現がコンパイルされたときに出現し、ヒープバッファ・オーバーフローを引き起こす。このオーバーフローにより、さらなる悪用への道を開かれる可能性がある。

この不具合は、セキュリティ研究者の Nathan Mills が発見し、Perl セキュリティ・チームに直接に報告した。

CVE-2023-47039:バイナリ・ハイジャックの脆弱性

2つ目の脆弱性 CVE-2023-47039 は、Perl for Windows に特化したものである。この脆弱性は、Perl がシェル (cmd.exe) を見つけるために、システムのパス環境変数と相互作用する際に発生する。Perl が、cmd.exe を見つけて実行しようとする際に、パスの検索順序の問題により、不注意にもカレントの作業ディレクトリが優先されてしまう。

この動作は、特に “C:¥ProgramData” のようなパーミッションが緩い場所で発生し、攻撃者に好機を提供してしまう。これらのディレクトリに、悪意 の cmd.exe を戦略的に配置することで、それらの危険な場所から、管理者がファイルを実行した場合に、限られた権限を持つ攻撃者が、任意のコードの実行を指揮できるようになる。

この脆弱性は、GitHub ユーザーの ycdxsb により発見され、Intel セキュリティ・インシデント・レスポンス・チーム (PSIRT) に報告された。

Perl の脆弱性からシステムを守る

これらの脆弱性に対応する Perl チームは、バージョン 5.38.1 をリリースし、2つの脆弱性を速やかに修正した。この迅速な対応は、Perl におけるセキュリティへのコミットメントと、メンテナの積極的なアプローチの証である。