Avoid loading optional modules from default . (CVE-2016-1238)
This commit is contained in:
parent
52e999e0b3
commit
0167350014
@ -0,0 +1,97 @@
|
|||||||
|
From 12be15d64ce089154c4367dc1842cd0dc0993ec6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tony Cook <tony@develop-help.com>
|
||||||
|
Date: Wed, 27 Jul 2016 14:52:40 +1000
|
||||||
|
Subject: [PATCH] CVE-2016-1238: avoid loading optional modules from .
|
||||||
|
|
||||||
|
The change to Encode.pm is the most critical part of this patch.
|
||||||
|
|
||||||
|
Without this change, and process that uses Encode started with a
|
||||||
|
current directory that's world writable (such as /tmp) and if there's
|
||||||
|
no global Encode::ConfigLocal, can be attacked by another user
|
||||||
|
by creating /tmp/Encode/ConfigLocal.pm
|
||||||
|
|
||||||
|
It's possible most of the tools changed here do not need to be updated,
|
||||||
|
but I chose a conservative path.
|
||||||
|
---
|
||||||
|
Encode.pm | 2 ++
|
||||||
|
bin/enc2xs | 1 +
|
||||||
|
bin/encguess | 1 +
|
||||||
|
bin/piconv | 1 +
|
||||||
|
bin/ucmlint | 1 +
|
||||||
|
bin/unidump | 1 +
|
||||||
|
6 files changed, 7 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Encode.pm b/Encode.pm
|
||||||
|
index d88fe95..3923733 100644
|
||||||
|
--- a/Encode.pm
|
||||||
|
+++ b/Encode.pm
|
||||||
|
@@ -56,6 +56,8 @@ require Encode::Config;
|
||||||
|
eval {
|
||||||
|
local $SIG{__DIE__};
|
||||||
|
local $SIG{__WARN__};
|
||||||
|
+ local @INC = @INC;
|
||||||
|
+ pop @INC if $INC[-1] eq '.';
|
||||||
|
require Encode::ConfigLocal;
|
||||||
|
};
|
||||||
|
|
||||||
|
diff --git a/bin/enc2xs b/bin/enc2xs
|
||||||
|
index ec4732c..f8d9f52 100755
|
||||||
|
--- a/bin/enc2xs
|
||||||
|
+++ b/bin/enc2xs
|
||||||
|
@@ -4,6 +4,7 @@ BEGIN {
|
||||||
|
# with $ENV{PERL_CORE} set
|
||||||
|
# In case we need it in future...
|
||||||
|
require Config; import Config;
|
||||||
|
+ pop @INC if $INC[-1] eq '.';
|
||||||
|
}
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
diff --git a/bin/encguess b/bin/encguess
|
||||||
|
index 5d7ac80..0be5c7c 100755
|
||||||
|
--- a/bin/encguess
|
||||||
|
+++ b/bin/encguess
|
||||||
|
@@ -1,5 +1,6 @@
|
||||||
|
#!./perl
|
||||||
|
use 5.008001;
|
||||||
|
+BEGIN { pop @INC if $INC[-1] eq '.' }
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Encode;
|
||||||
|
diff --git a/bin/piconv b/bin/piconv
|
||||||
|
index c1dad9e..60b2a59 100755
|
||||||
|
--- a/bin/piconv
|
||||||
|
+++ b/bin/piconv
|
||||||
|
@@ -1,6 +1,7 @@
|
||||||
|
#!./perl
|
||||||
|
# $Id: piconv,v 2.7 2014/05/31 09:48:48 dankogai Exp $
|
||||||
|
#
|
||||||
|
+BEGIN { pop @INC if $INC[-1] eq '.' }
|
||||||
|
use 5.8.0;
|
||||||
|
use strict;
|
||||||
|
use Encode ;
|
||||||
|
diff --git a/bin/ucmlint b/bin/ucmlint
|
||||||
|
index 622376d..25e0d67 100644
|
||||||
|
--- a/bin/ucmlint
|
||||||
|
+++ b/bin/ucmlint
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
# $Id: ucmlint,v 2.2 2008/03/12 09:51:11 dankogai Exp $
|
||||||
|
#
|
||||||
|
|
||||||
|
+BEGIN { pop @INC if $INC[-1] eq '.' }
|
||||||
|
use strict;
|
||||||
|
our $VERSION = do { my @r = (q$Revision: 2.2 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
|
||||||
|
|
||||||
|
diff --git a/bin/unidump b/bin/unidump
|
||||||
|
index ae0da30..f190827 100755
|
||||||
|
--- a/bin/unidump
|
||||||
|
+++ b/bin/unidump
|
||||||
|
@@ -1,5 +1,6 @@
|
||||||
|
#!./perl
|
||||||
|
|
||||||
|
+BEGIN { pop @INC if $INC[-1] eq '.' }
|
||||||
|
use strict;
|
||||||
|
use Encode;
|
||||||
|
use Getopt::Std;
|
||||||
|
--
|
||||||
|
2.1.4
|
||||||
|
|
Loading…
Reference in New Issue
Block a user