KENT-WEB サポートコーナー 過去ログ [ 0441 ]


記事No: 15409
投稿日: 2017/02/25(Sat) 13:38:34
タイトルSoftware errorで使えない
ID情報: hei01101
投稿者: kayou
URLhttp://www.kayou.mydns.jp:801/perl/pcheck.cgi

KENT-WEBさんのPerl文法チェッカー(Perl Checker)を使用しwebでpcheck.cgiを動かしたら,

文法チェック欄にて
「Software error:
Insecure $ENV{PATH} while running with -T switch at /var/www/perl/pcheck.cgi line 184.」
の表示になり使えません。(文法上正しいかどうか判別できない)

184行目 → open(PROC,"perl -c $in{file} 2>&1 |");

Windows-Server2008のOSでは問題ないのですが、CentOS7になるとエラーになってしまいます。。。
CentoOSでは使えないのでしょうか?


記事No: 15410
投稿日: 2017/02/25(Sat) 14:36:37
タイトルRe: Software errorで使えない
ID情報: teketen
投稿者: てけてん

サーバー又は、スクリプトがTaintモードではありませんか?
PerlのTaintモード(汚染検出モード)
https://www.ipa.go.jp/security/awareness/vendor/programmingv1/a04_03_main.html
Perl診断メッセージ
http://www.namazu.org/~tsuchiya/perl/info/perl-ja_109.html


記事No: 15411
投稿日: 2017/02/25(Sat) 17:03:00
タイトルRe^2: Software errorで使えない
ID情報: hei01101
投稿者: kayou

> サーバー又は、スクリプトがTaintモードではありませんか?
> PerlのTaintモード(汚染検出モード)
> https://www.ipa.go.jp/security/awareness/vendor/programmingv1/a04_03_main.html
> Perl診断メッセージ
> http://www.namazu.org/~tsuchiya/perl/info/perl-ja_109.html

てけてんさんご回答ありがとうございます。
perlスクリプトはKENTさんのをそのまま使用してますので、Taintモードではないと思います。

スクリプト1行目は #!/usr/bin/perl となっています。
サーバーにもTaintモードがあるのでしょうか?


記事No: 15412
投稿日: 2017/02/25(Sat) 22:15:13
タイトルRe^3: Software errorで使えない
ID情報: teketen
投稿者: てけてん

> サーバーにもTaintモードがあるのでしょうか?

サーバー側での設定ですね。
(私は、詳しくないのですが^^;)
ご利用なのか分かりませんが、mod_Perlの場合、perl.confで設定出来るようです。
参考:「Fedora17 Webサーバー Perlの設定」
http://pcmemorin.blog.fc2.com/blog-entry-389.html?sp
> PerlSwitches -T

ちょっと動作確認が出来ないのですが、スクリプトの対策としては、セキュアPerlプログラミングに書かれてあるように、

pcheck.cgi
183行目付近

# Perl文法チェック
open(PROC,"perl -c $in{file} 2>&1 |");

の前の行に

if($in{file} =~ /\A([-\@\w.]+)\z/) {
$in{file} = $1;
}

を挿入してみるとか。


記事No: 15413
投稿日: 2017/02/25(Sat) 23:06:12
タイトルRe^4: Software errorで使えない
ID情報: hei01101
投稿者: kayou
URLhttp://www.kayou.mydns.jp:801/perl/pcheck.cgi

> サーバー側での設定ですね。
> (私は、詳しくないのですが^^;)
> ご利用なのか分かりませんが、mod_Perlの場合、perl.confで設定出来るようです。
> 参考:「Fedora17 Webサーバー Perlの設定」
> http://pcmemorin.blog.fc2.com/blog-entry-389.html?sp
> > PerlSwitches -T
>
> ちょっと動作確認が出来ないのですが、スクリプトの対策としては、セキュアPerlプログラミングに書かれてあるように、
>
> pcheck.cgi
> 183行目付近
>
> # Perl文法チェック
> open(PROC,"perl -c $in{file} 2>&1 |");
>
> の前の行に
>
> if($in{file} =~ /\A([-\@\w.]+)\z/) {
> $in{file} = $1;
> }
>
> を挿入してみるとか。

てけてんさんありがとうございます。
perl設定で、PerlSwitches -Tを有効にしてました。
コメントアウト後は、pcheckの文法欄のSoftware errorが消えて、問題なく使えました。
ありがとうございました。


[検索ページ]