{"id":"CVE-2017-16005","aliases":["CLSA-2026-1774570933","EUVD-2018-0766","GHSA-q257-vv4p-fg92"],"status":"published","title":"Header Forgery in http-signature","description":"Http-signature is a \"Reference implementation of Joyent's HTTP Signature Scheme\". In versions \u003c=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.","severity":{"version":"3.0","score":7.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-06","score":0.00844,"percentile":0.58133,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-20","CWE-347"],"published":"2018-06-04T19:00:00Z","modified":"2026-10-20T10:48:15Z","fixes":[{"ecosystem":"npm","package":"http-signature","fixed_in":["0.10.0"],"sources":["ghsa","osv"]},{"ecosystem":"TuxCare:npm","package":"http-signature","fixed_in":["0.9.11-tuxcare.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"http-signature","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.10.0"}]}]},{"source":"osv","ecosystem":"TuxCare:npm","package":"http-signature","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.9.11-tuxcare.0"},{"fixed":"0.9.11-tuxcare.1"}]}],"versions":["0.9.11"]},{"source":"osv","ecosystem":"npm","package":"http-signature","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.10.0"}]}]}],"products":[{"vendor":"hackerone","product":"http-signature node module"},{"vendor":"joyent","product":"http-signature"}],"references":[{"url":"https://github.com/joyent/node-http-signature/issues/10","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix","web"]},{"url":"https://nodesecurity.io/advisories/318","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2017-16005","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-q257-vv4p-fg92","tags":["advisory"]},{"url":"https://www.npmjs.com/advisories/318","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2017-16005","description":"Http-signature is a \"Reference implementation of Joyent's HTTP Signature Scheme\". In versions \u003c=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.","status":"published","published":"2018-06-04T19:00:00Z","modified":"2024-09-16T19:19:33.991Z","cwes":["CWE-20"],"updated_at":"2026-11-02T14:33:21.142987Z"}],"euvd":[{"id":"EUVD-2018-0766","description":"Http-signature is a \"Reference implementation of Joyent's HTTP Signature Scheme\". In versions \u003c=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.","status":"published","published":"2018-06-04T19:00:00Z","modified":"2024-09-16T19:19:33Z","updated_at":"2026-11-03T00:55:24.213258Z"}],"ghsa":[{"id":"GHSA-q257-vv4p-fg92","title":"Header Forgery in http-signature","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. \n\nThis problem occurs because vulnerable versions of `http-signature` sign the contents of headers, but not the header names.\n\n## Proof of Concept\n\nConsider this to be the initial, untampered request:\n```http\nPOST /pay HTTP/1.1\nHost: example.com\nDate: Thu, 05 Jan 2012 21:31:40 GMT\nX-Payment-Source: src@money.com\nX-Payment-Destination: dst@money.com\nAuthorization: Signature keyId=\"Test\",algorithm=\"rsa-sha256\",headers=\"x-payment-source x-payment-destination\" MDyO5tSvin5...\n```\n\nAnd the request is intercepted and tampered as follows:\n```http\nX-Payment-Source: dst@money.com // Emails switched\nX-Payment-Destination: src@money.com\nAuthorization: Signature keyId=\"Test\",algorithm=\"rsa-sha256\",headers=\"x-payment-destination x-payment-source\" MDyO5tSvin5...\n```\n\nIn the resulting responses, both requests would pass signature verification without issue.\n```\nsrc@money.com\\n\ndst@money.com\\n\n```\n\n\n\n## Recommendation\n\nUpdate to version 0.10.0 or higher.","status":"published","published":"2018-11-09T17:49:34Z","modified":"2023-09-08T23:25:04Z","cvss":[{"version":"3.0","score":7.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high"}],"cwes":["CWE-20"],"updated_at":"2026-11-02T14:37:03.916765Z"}],"nvd":[{"id":"CVE-2017-16005","description":"Http-signature is a \"Reference implementation of Joyent's HTTP Signature Scheme\". In versions \u003c=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.","status":"published","published":"2018-06-04T19:29:00.523Z","modified":"2026-06-17T01:08:37.837Z","cvss":[{"version":"3.0","score":7.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high","assessor":"primary"},{"version":"2.0","score":5,"vector":"AV:N/AC:L/Au:N/C:N/I:P/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-20","CWE-347"],"updated_at":"2026-11-02T14:04:17.638656Z"}],"osv":[{"id":"CVE-2017-16005","description":"Http-signature is a \"Reference implementation of Joyent's HTTP Signature Scheme\". In versions \u003c=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.","status":"published","published":"2018-06-04T19:29:00.523Z","modified":"2026-10-20T10:48:15.126379592Z","cvss":[{"version":"3.0","score":7.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T15:44:04.853379Z"},{"id":"GHSA-q257-vv4p-fg92","title":"Header Forgery in http-signature","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. \n\nThis problem occurs because vulnerable versions of `http-signature` sign the contents of headers, but not the header names.\n\n## Proof of Concept\n\nConsider this to be the initial, untampered request:\n```http\nPOST /pay HTTP/1.1\nHost: example.com\nDate: Thu, 05 Jan 2012 21:31:40 GMT\nX-Payment-Source: src@money.com\nX-Payment-Destination: dst@money.com\nAuthorization: Signature keyId=\"Test\",algorithm=\"rsa-sha256\",headers=\"x-payment-source x-payment-destination\" MDyO5tSvin5...\n```\n\nAnd the request is intercepted and tampered as follows:\n```http\nX-Payment-Source: dst@money.com // Emails switched\nX-Payment-Destination: src@money.com\nAuthorization: Signature keyId=\"Test\",algorithm=\"rsa-sha256\",headers=\"x-payment-destination x-payment-source\" MDyO5tSvin5...\n```\n\nIn the resulting responses, both requests would pass signature verification without issue.\n```\nsrc@money.com\\n\ndst@money.com\\n\n```\n\n\n\n## Recommendation\n\nUpdate to version 0.10.0 or higher.","status":"published","published":"2018-11-09T17:49:34Z","modified":"2023-11-08T03:58:59.2803Z","cvss":[{"version":"3.0","score":7.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","level":"high"}],"cwes":["CWE-20"],"updated_at":"2026-11-02T15:46:53.700556Z"},{"id":"CLSA-2026-1774570933","title":"TuxCare security update for http-signature (1 CVE)","description":"TuxCare rebuilt http-signature to address 1 CVE. Fixed in 0.9.11-tuxcare.1.","status":"published","published":"2026-08-04T14:52:15Z","modified":"2026-10-15T09:47:02.134730973Z","updated_at":"2026-11-02T15:43:43.621843Z"}]}}
