The SAML SSO addon in JFrog Artifactory version 6.5.9 does not properly validate the XML signature in the SAMLResponse field send to the URL /webapp/saml/loginResponse. An attacker can use this flaw to login as any user if they already can login as some user.
2210b15f819271c6a55202eb862e9978ee5dcea5cb47625f5426dc464569ec4d
CVE-2018-19971: JFrog Artifactory Pro SAML SSO signature validation error
-------------------------------------------------------------------------
Affected products
=================
The SAML SSO addon in Artifactory 6.5.9 is vulnerable.
The SAML SSO addon in Artifactory 6.5.13 is NOT vulnerable.
Other versions were not tested.
Background
==========
"Artifactory offers a SAML-based Single Sign-On service allowing
federated Artifactory partners (identity providers) full control over
the authorization process.
Using SAML, Artifactory acts as service provider which receives
users' authentication information from external identity providers.
The SAML SSO addon in Artifactory Pro"
-- https://www.jfrog.com/confluence/display/RTF/SAML+SSO+Integration
Description
===========
The SAML SSO addon in Artifactory 6.5.9 does not properly validate the
XML signature in the SAMLResponse field send to the URL
/webapp/saml/loginResponse. An attacker can use this flaw to login as
any user if they already can login as some user.
Let's assume that the attacker has obtained a valid SAML message of
the form
Root
- Assertion id="original"
- Subject
- Signature
- SignedInfo
- Reference URI="original"
where the URI attribute of the Reference element points to the
Assertion element.
If we introduce a new Assertion element and make the original
Assertion and Signature elements its children we end up with the
message
Root
- Assertion id="evil"
- Subject
- Assertion id="original"
- Subject
- Signature
- SignedInfo
- Reference URI="original"
When Artifactory processes this message it looks for the Signature
element and checks that the original assertion is signed
properly. However, it then proceeds to use the Subject information
from the evil assertion which is fully under attacker's control.
Exploit
=======
If you want to test this vulnerability you can fetch a fork of the
SAMLRaider tool from https://github.com/lindi2/SAMLRaider and then
select "XSW9" from the drop-down list.
You might also want to take a look at the SAMLRaider documentation
that shows how this variant differs from earlier similar
vulnerabilities:
https://github.com/lindi2/SAMLRaider/blob/af73ee4a71e3125188496da29a83799fdb41d8e8/src/main/resources/xswlist.png
(The original documentation contained only bitmap images of text so it
was not very easy to add new variants.)
Author
======
This issue was discovered by Timo Lindfors from Nixu Corporation.
Timeline
========
2018-12-07: Issue reported to vendor.
2018-12-08: Mitre assigns CVE-2018-19971 to this vulnerability.
2018-12-17: JFrog releases a fix in Artifactory 6.5.13.