Cloudanix VulnDB

CVE-2016-10149

High · 7.5

CVSS

7.5

EPSS

5.0%

Published

Mar 24, 2017

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A login-handling library used by many websites could let attackers read private files stored on the server by sending specially crafted login data.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Data Exposure
Component
Library
Class
XXE
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The vulnerability permits XML External Entity processing in SAML request/response handling, enabling an attacker to define external entities that resolve to local filesystem paths and exfiltrate their contents through the application's response.

Why it matters to the business

Attackers can obtain sensitive server-side files such as configuration data, private keys, or credential stores, leading to further compromise of authentication systems and potential data breaches in identity-dependent applications.

How an attack unfolds

An unauthenticated remote attacker submits a specially crafted SAML XML document containing an external entity declaration pointing to a local file; the PySAML2 parser resolves the entity and includes the file contents in the processed output, which is then returned or logged for the attacker to retrieve.

How to fix it

Upgrade identitypython/pysaml2 to the commit 6e09a25d9b4b7aa7a506853210a9a14100b8bc9b or later; disable XML external entity resolution in any custom SAML handling code; apply input sanitization that rejects or strips DTD declarations before parsing.

How to confirm the fix worked

Confirm the installed package reports a version containing commit 6e09a25d9b4b7aa7a506853210a9a14100b8bc9b; run a test SAML message containing an XXE payload against a non-production instance and verify that file contents are no longer returned; review parser configuration to ensure external entities are disabled.

Typical attack path

  1. Identify an endpoint that accepts SAML messages from untrusted sources
  2. Craft an XML payload containing a malicious DOCTYPE with an external entity referencing a target file path
  3. Submit the payload via HTTP POST or GET to the SAML consumer or provider endpoint
  4. Observe the server response or logs for the embedded file contents
  5. Iterate to exfiltrate additional files or use discovered data for lateral movement

How to detect it

Inspect web server and application logs for SAML POST bodies containing DOCTYPE or ENTITY declarations; monitor file access logs for unexpected reads of configuration or key files triggered by SAML endpoints; correlate unusual outbound network activity following SAML processing.

What your security team should do

  • Immediately update all deployments of PySAML2 to the fixed commit
  • Scan the environment for any remaining versions 4.4.0 or earlier
  • Implement web application firewall rules that block SAML messages containing DOCTYPE or ENTITY declarations
  • Review logs for historical SAML traffic containing external entity patterns

The record

XML External Entity (XXE) vulnerability in PySAML2 4.4.0 and earlier allows remote attackers to read arbitrary files via a crafted SAML XML request or response.

Affected packages

Ecosystem Package Introduced Fixed
PyPI pysaml2 0 4.5.0
PyPI pysaml2 0 6e09a25d9b4b7aa7a506853210a9a14100b8bc9b
Debian:11 python-pysaml2 0 3.0.0-5
Debian:12 python-pysaml2 0 3.0.0-5
Debian:13 python-pysaml2 0 3.0.0-5
Debian:8 python-pysaml2 0 2.0.0-1+deb8u1
Red Hat:openstack:10::el7 python-defusedxml 0 0:0.5.0-1.el7ost
Red Hat:openstack:10::el7 python-pysaml2 0 0:3.0.2-3.el7ost
Red Hat:openstack:8::el7 python-defusedxml 0 0:0.5.0-1.el7ost
Red Hat:openstack:8::el7 python-pysaml2 0 0:3.0.2-3.el7ost
Red Hat:openstack:9::el7 python-defusedxml 0 0:0.5.0-1.el7ost
Red Hat:openstack:9::el7 python-pysaml2 0 0:3.0.2-3.el7ost
SUSE:OpenStack Cloud 6 python-defusedxml 0 0.4.1-2.1
SUSE:OpenStack Cloud 6 python-pysaml2 0 2.4.0-3.1
Ubuntu:16.04:LTS python-pysaml2 0 3.0.0-3ubuntu1.16.04.1

Related vulnerabilities