VDB-88830 · CVE-2016-6185 · BID 91685

Perl 5 XSLoader XSLoader/XSLoader_pm.PL erweiterte Rechte

CVSS Meta Temp ScoreAktueller Exploitpreis (≈)CTI Interest Score
7.5$0-$5k0.00

Es wurde eine kritische Schwachstelle in Perl 5 (Programming Language Software) entdeckt. Es betrifft eine unbekannte Funktion der Datei XSLoader/XSLoader_pm.PL der Komponente XSLoader. Mittels dem Manipulieren mit einer unbekannten Eingabe kann eine erweiterte Rechte-Schwachstelle ausgenutzt werden. Im Rahmen von CWE wurde eine Klassifizierung als CWE-284 vorgenommen. Auswirkungen sind zu beobachten für Vertraulichkeit, Integrität und Verfügbarkeit. CVE fasst zusammen:

The XSLoader::load method in XSLoader in Perl does not properly locate .so files when called in a string eval, which might allow local users to execute arbitrary code via a Trojan horse library under the current working directory.

Die Schwachstelle wurde am 03.07.2016 durch Jakub Wilk als Don’t let XSLoader load relative paths in Form eines bestätigten GIT Commits (GIT Repository) publik gemacht. Auf perl5.git.perl.org kann das Advisory eingesehen werden. Die Verwundbarkeit wird seit dem 08.07.2016 unter CVE-2016-6185 geführt. Sie gilt als leicht auszunutzen. Der Angriff hat dabei lokal zu erfolgen. Zur Ausnutzung ist keine spezifische Authentisierung erforderlich. Es sind zwar technische Details, jedoch kein verfügbarer Exploit zur Schwachstelle bekannt. MITRE ATT&CK führt die Angriffstechnik T1068 für diese Schwachstelle. Die Schwachstelle entsteht durch diesen Code:

my $c = () = split(/::/,$caller,-1);
$modlibname =~ s,[\\/][^\\/]+$,, while $c--;    # Q&D basename
my $file = "$modlibname/auto/$modpname/$modfname.bundle";
Das Advisory weist darauf hin:
$caller is the calling package. $modlibname is the calling file. It removes as many path segments from $modlibname as there are segments in $caller. So if you have Foo/Bar/XS.pm calling XSLoader from the Foo::Bar package, the $modlibname will end up containing the path in @INC where XS.pm was found, followed by "/Foo". Usually the fallback to Dynaloader::bootstrap_inherit, which does an @INC search, makes things Just Work.

Für den Vulnerability Scanner Nessus wurde am 08.09.2016 ein Plugin mit der ID 93371 (SUSE SLES11 Security Update : perl (SUSE-SU-2016:2246-1)) herausgegeben, womit die Existenz der Schwachstelle geprüft werden kann. Es wird der Family SuSE Local Security Checks zugeordnet und im Kontext l ausgeführt. Der kommerzielle Vulnerability Scanner Qualys bietet das Plugin 175794 (Debian Security Update for perl (DSA 3628-1)) zur Prüfung der Schwachstelle an. Das Advisory zeigt auf:

But if our hypothetical Foo/Bar/XS.pm actually calls XSLoader::load from inside a string eval, then path ends up being "(eval 1)/auto/Foo/Bar/Bar.bundle". So if someone creates a directory named ‘(eval 1)’ with a naughty binary file in it, it will be loaded if a script using Foo::Bar is run in the parent directory.

Die Schwachstelle lässt sich durch das Einspielen eines Patches beheben. Dieser kann von perl5.git.perl.org bezogen werden. Das Erscheinen einer Gegenmassnahme geschah sofort nach der Veröffentlichung der Schwachstelle. Die Entwickler haben also unmittelbar reagiert. Die Schwachstelle wird durch folgenden Code angegangen:

if ($modlibname !~ m|^[\\/]|) {
Das Advisory stellt fest:
This commit makes XSLoader fall back to Dynaloader’s @INC search if the calling file has a relative path that is not found in @INC.

Unter anderem wird der Fehler auch in der Verwundbarkeitsdatenbank von Tenable (93371) dokumentiert.

Produktinfo

Typ

Name

Version

Lizenz

CPE 2.3info

CPE 2.2info

CVSSv4info

VulDB CVSS-B Score: 🔍
VulDB CVSS-BT Score: 🔍
VulDB Vector: 🔍
VulDB Zuverlässigkeit: 🔍

CVSSv3info

VulDB Meta Base Score: 7.8
VulDB Meta Temp Score: 7.6

VulDB Base Score: 7.8
VulDB Temp Score: 7.5
VulDB Vector: 🔍
VulDB Zuverlässigkeit: 🔍

NVD Base Score: 7.8
NVD Vector: 🔍

CVSSv2info

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VektorKomplexitätAuthentisierungVertraulichkeitIntegritätVerfügbarkeit
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten

VulDB Base Score: 🔍
VulDB Temp Score: 🔍
VulDB Zuverlässigkeit: 🔍

NVD Base Score: 🔍

Exploitinginfo

Klasse: Erweiterte Rechte
CWE: CWE-284 / CWE-266
CAPEC: 🔍
ATT&CK: 🔍

Lokal: Ja
Remote: Nein

Verfügbarkeit: 🔍
Status: Nicht definiert

EPSS Score: 🔍
EPSS Percentile: 🔍

Preisentwicklung: 🔍
Aktuelle Preisschätzung: 🔍

0-Dayfreischaltenfreischaltenfreischaltenfreischalten
Heutefreischaltenfreischaltenfreischaltenfreischalten

Nessus ID: 93371
Nessus Name: SUSE SLES11 Security Update : perl (SUSE-SU-2016:2246-1)
Nessus Datei: 🔍
Nessus Risiko: 🔍
Nessus Family: 🔍
Nessus Context: 🔍

OpenVAS ID: 703628
OpenVAS Name: Debian Security Advisory DSA 3628-1 (perl - security update)
OpenVAS Datei: 🔍
OpenVAS Family: 🔍

Qualys ID: 🔍
Qualys Name: 🔍

Threat Intelligenceinfo

Interesse: 🔍
Aktive Akteure: 🔍
Aktive APT Gruppen: 🔍

Gegenmassnahmeninfo

Empfehlung: Patch
Status: 🔍

Reaktionszeit: 🔍
0-Day Time: 🔍
Exposure Time: 🔍

Patch: perl5.git.perl.org

Timelineinfo

03.07.2016 🔍
03.07.2016 +0 Tage 🔍
03.07.2016 +0 Tage 🔍
08.07.2016 +5 Tage 🔍
09.07.2016 +1 Tage 🔍
10.07.2016 +1 Tage 🔍
02.08.2016 +23 Tage 🔍
08.09.2016 +37 Tage 🔍
20.02.2019 +895 Tage 🔍

Quelleninfo

Advisory: Don’t let XSLoader load relative paths
Person: Jakub Wilk
Status: Bestätigt
Bestätigung: 🔍

CVE: CVE-2016-6185 (🔍)
OVAL: 🔍

SecurityTracker: 1036260
SecurityFocus: 91685 - Perl CVE-2016-6185 Local Privilege Escalation Vulnerability

Eintraginfo

Erstellt: 10.07.2016 16:47
Aktualisierung: 20.02.2019 15:55
Anpassungen: 10.07.2016 16:47 (78), 20.02.2019 15:55 (12)
Komplett: 🔍

Diskussion

Bisher keine Kommentare. Sprachen: de + en.

Bitte loggen Sie sich ein, um kommentieren zu können.

Interested in the pricing of exploits?

See the underground prices here!