perl5223delta - perl v5.22.3 での変更点
この文書は 5.22.2 リリースと 5.22.3 リリースの変更点を記述しています。
5.22.1 のような以前のリリースから更新する場合は、まず 5.22.1 と 5.22.2 の違いについて記述している perl5222delta を読んでください。
以前は、perl が setuid されておらず -T や -t オプションがまだ 渡されていない場合は、PerlIO デバッグ出力は PERLIO_DEBUG
環境変数で 指定されたファイルに出力されていました。
これらのオプションがまだパースされていない時点で perl が出力を行うと、 -T オプションが指定されているときでも perl が PERLIO_DEBUG
の名前の ファイルを作成したり上書きしたりしていました。
PerlIO デバッグ出力を作成するためには -Di オプションが必要になりました。 デフォルトではこれは stderr
に書かれますが、PERLIO_DEBUG
環境変数を 設定することでファイルにリダイレクトすることも出来ます。
perl が setuid されていたり -T オプションが指定されている場合は、 PERLIO_DEBUG
は無視され、デバッグ出力は他の -D オプションと同様 stderr
に出力されます。
コアで適用されているツールや多くのモジュールは、もはやオプションのモジュールを @INC
のデフォルトのカレントディレクトリエントリを 探さなくなりました。 例えば、Storable は Log::Agent を読み込もうとする前に @INC
の末尾の "." を取り除きます。
これにより、攻撃者によって書き込み可能なディレクトリ (/tmp など) を カレントディレクトリとして実行されているプロセスに、攻撃者がオプションの モジュールを注入するのを防ぎます。
ほとんどの場合、この除去によって問題は起こらないはずですが、指定された全ての モジュール名をオプションとして扱う base では問題があります。 この問題はまだ解決していないので、このリリースでは base は 変更されていません。 私たちは Perl 5.22.4 で base を修正したいと考えています。
自分自身のコードをこの攻撃から守るには、スクリプトの先頭で @INC
から デフォルトの "." エントリを取り除く、つまり:
#!/usr/bin/perl
use strict;
...
これを:
#!/usr/bin/perl
BEGIN { pop @INC if $INC[-1] eq '.' }
use strict;
...
のようにするか、モジュールに対しては、ローカル化された @INC
から "." を 取り除く、つまり:
my $can_foo = eval { require Foo; }
これを以下のようにします:
my $can_foo = eval {
local @INC = @INC;
pop @INC if $INC[-1] eq '.';
require Foo;
};
上述のセキュリティの変更以外に、故意に 5.22.2 から互換性がなくなるようにした 変更はありません。 もし 5.22.2 との互換性がなければ、それはバグですので、報告をお願いします。 以下の "Reporting Bugs" を参照してください。
Archive::Tar はバージョン 2.04 から 2.04_01 に更新されました。
bignum はバージョン 0.39 から 0.39_01 に更新されました。
CPAN はバージョン 2.11 から 2.11_01 に更新されました。
Digest はバージョン 1.17 から 1.17_01 に更新されました。
Digest::SHA はバージョン 5.95 から 5.95_01 に更新されました。
Encode はバージョン 2.72 から 2.72_01 に更新されました。
ExtUtils::Command はバージョン 1.20 から 1.20_01 に更新されました。
ExtUtils::MakeMaker はバージョン 7.04_01 から 7.04_02 に更新されました。
File::Fetch はバージョン 0.48 から 0.48_01 に更新されました。
File::Spec はバージョン 3.56_01 から 3.56_02 に更新されました。
HTTP::Tiny はバージョン 0.054 から 0.054_01 に更新されました。
IO はバージョン 1.35 から 1.35_01 に更新されました。
IO-Compress モジュールはバージョン 2.068 から 2.068_001 に更新されました。
IPC::Cmd はバージョン 0.92 から 0.92_01 に更新されました。
JSON::PP はバージョン 2.27300 から 2.27300_01 に更新されました。
Locale::Maketext はバージョン 1.26 から 1.26_01 に更新されました。
Locale::Maketext::Simple はバージョン 0.21 から 0.21_01 に更新されました。
Memoize はバージョン 1.03 から 1.03_01 に更新されました。
Module::CoreList はバージョン 5.20160429 から 5.20170114_22 に更新されました。
Net::Ping はバージョン 2.43 から 2.43_01 に更新されました。
Parse::CPAN::Meta はバージョン 1.4414 から 1.4414_001 に更新されました。
Pod::Html はバージョン 1.22 から 1.2201 に更新されました。
Pod::Perldoc はバージョン 3.25 から 3.25_01 に更新されました。
Storable はバージョン 2.53_01 から 2.53_02 に更新されました。
Sys::Syslog はバージョン 0.33 から 0.33_01 に更新されました。
Test はバージョン 1.26 から 1.26_01 に更新されました。
Test::Harness はバージョン 3.35 から 3.35_01 に更新されました。
XSLoader はバージョン 0.20 から 0.20_01 に更新され、 バイナリファイルが @INC
以外のパスから読み込まれることがある セキュリティホールが修正されました。 [perl #128528]
PERLIO_DEBUG
の文書が更新されました。
新しい -Di オプションが文書化され、PERLIO_DEBUG
の文書が更新されました。
新しい -Di オプションが正しく動作するかをテストする新しい テストスクリプト t/run/switchDx.t が追加されました。
PadlistNAMES
マクロは再び左辺値になりました。
Perl 5.22.3 は、Perl 5.22.2 以降、20 人の作者によって、 240 のファイルに約 4,400 行の変更を加えて、 約 9 ヶ月開発されてきました。
自動生成ファイル、文書、リリースツールを除くと、170 の .pm, .t, .c, .h ファイルに約 2,200 行の変更を加えました。
Perl は、活気のあるユーザーと開発者のコミュニティのおかげで 20 年を超えて 繁栄しています。 以下の人々が、Perl 5.22.3 になるための改良に貢献したことが分かっています:
Aaron Crane, Abigail, Alex Vandiver, Aristotle Pagaltzis, Chad Granum, Chris 'BinGOs' Williams, Craig A. Berry, David Mitchell, Father Chrysostomos, James E Keenan, Jarkko Hietaniemi, Karen Etheridge, Karl Williamson, Matthew Horsfall, Niko Tyni, Ricardo Signes, Sawyer X, Stevan Little, Steve Hay, Tony Cook.
これはバージョンコントロール履歴から自動的に生成しているので、ほぼ確実に 不完全です。 特に、Perl バグトラッカーに問題を報告をしてくれた (とてもありがたい)貢献者の 名前を含んでいません。
このバージョンに含まれている変更の多くは、Perl コアに含まれている CPAN モジュール由来のものです。 私たちは Perl の発展を助けている CPAN コミュニティ全体に感謝します。
全ての Perl の歴史的な貢献者のより完全な一覧については、どうか Perl ソース 配布に含まれている AUTHORS を参照してください。
もしバグと思われるものを見つけたら、comp.lang.perl.misc ニュースグループに 最近投稿された記事や https://rt.perl.org/ にある Perl バグ データベースを確認してください。 Perl ホームページ、http://www.perl.org/ にも情報があります。
もしまだ報告されていないバグだと確信したら、そのリリースに含まれている perlbug プログラムを実行してください。 バグの再現スクリプトを十分小さく、しかし有効なコードに切りつめることを 意識してください。 バグレポートは perl -V
の出力と一緒に perlbug@perl.org に送られ Perl porting チームによって解析されます。
もし報告しようとしているバグがセキュリティに関するもので、公開されている メーリングリストに送るのが不適切なものなら、 perl5-security-report@perl.org に送ってください。 このアドレスは、問題の影響を評価し、解決法を見つけ、Perl が対応している 全てのプラットフォームで問題を軽減または解決するパッチをリリースするのを 助けることが出来る、全てのコアコミッタが参加している非公開の メーリングリストになっています。 このアドレスは、独自に CPAN で配布されているモジュールではなく、 Perl コアのセキュリティ問題だけに使ってください。
変更点の完全な詳細を見る方法については Changes ファイル。
Perl のビルド方法については INSTALL ファイル。
一般的なことについては README ファイル。
著作権情報については Artistic 及び Copying ファイル。