CVE-2017-16005: Input Validation
Affected versions of http-signature contain a vulnerability which can allow an attacker in a privileged network position to modify header names and change the meaning of the request, without requiring an updated signature.
This problem occurs because vulnerable versions of http-signature sign the contents of headers, but not the header names.
Proof of Concept
Consider this to be the initial, untampered request: http POST /pay HTTP/1.1 Host: example.com Date: Thu, 05 Jan 2012 21:31:40 GMT X-Payment-Source: src@money.com X-Payment-Destination: dst@money.com Authorization: Signature keyId="Test",algorithm="rsa-sha256",headers="x-payment-source x-payment-destination" MDyO5tSvin5...
And the request is intercepted and tampered as follows: http X-Payment-Source: dst@money.com // Emails switched X-Payment-Destination: src@money.com Authorization: Signature keyId="Test",algorithm="rsa-sha256",headers="x-payment-destination x-payment-source" MDyO5tSvin5...
In the resulting responses, both requests would pass signature verification without issue. src@money.com\n dst@money.com\n
Recommendation
Update to version 0.10.0 or higher.
Other sources
Http-signature is a "Reference implementation of Joyent's HTTP Signature Scheme". In versions <=0.9.11, http-signature signs only the header values, but not the header names. This makes http-signature vulnerable to header forgery. Thus, if an attacker can intercept a request, he can swap header names and change the meaning of the request without changing the signature.
Affected Software
Remediation
Patch Available
Event History
Frequently Asked Questions
What is CVE-2017-16005?
CVE-2017-16005 is a vulnerability in the HTTP Signature Scheme implementation in versions <=0.9.11 of Joyent's http-signature.
What is the severity of CVE-2017-16005?
The severity of CVE-2017-16005 is high with a CVSS score of 7.5.
How can an attacker exploit CVE-2017-16005?
An attacker in a privileged network position can exploit CVE-2017-16005 to modify header names and change the meaning of the request without updating the signature.
Which versions of http-signature are affected by CVE-2017-16005?
Versions <=0.9.11 of http-signature are affected by CVE-2017-16005.
How can I fix CVE-2017-16005?
To fix CVE-2017-16005, update to version 0.10.0 or higher of http-signature.