{"id":"CURL-CVE-2022-43551","summary":"Another HSTS bypass via IDN","details":"curl's HSTS check could be bypassed to trick it to keep using HTTP.\n\nUsing its HSTS support, curl can be instructed to use HTTPS instead of using\nan insecure clear-text HTTP step even when HTTP is provided in the URL.\n\nThe HSTS mechanism could be bypassed if the hostname in the given URL first\nuses IDN characters that get replaced to ASCII counterparts as part of the IDN\nconversion. Like using the character UTF-8 U+3002 (`IDEOGRAPHIC FULL STOP`)\ninstead of the common ASCII full stop (U+002E). Then in a subsequent request,\nit does not detect the HSTS state and makes a clear text transfer. Because it\nwould store the info IDN encoded but look for it IDN decoded.\n\nReproducible like this:\n\n    curl --hsts hsts.txt https://curl%E3%80%82se\n    curl --hsts hsts.txt http://curl%E3%80%82se","aliases":["CVE-2022-43551"],"modified":"2026-04-25T20:22:26.284844Z","published":"2022-12-21T08:00:00Z","database_specific":{"severity":"Medium","last_affected":"7.86.0","URL":"https://curl.se/docs/CVE-2022-43551.json","CWE":{"desc":"Cleartext Transmission of Sensitive Information","id":"CWE-319"},"issue":"https://hackerone.com/reports/1755083","package":"curl","www":"https://curl.se/docs/CVE-2022-43551.html","award":{"currency":"USD","amount":"2400"},"affects":"both"},"affected":[{"ranges":[{"type":"SEMVER","events":[{"introduced":"7.77.0"},{"fixed":"7.87.0"}]},{"type":"GIT","repo":"https://github.com/curl/curl.git","events":[{"introduced":"7385610d0c74c6a254fea5e4cd6e1d559d848c8c"},{"fixed":"9e71901634e276dd050481c4320f046bebb1bc28"}]}],"versions":["7.86.0","7.85.0","7.84.0","7.83.1","7.83.0","7.82.0","7.81.0","7.80.0","7.79.1","7.79.0","7.78.0","7.77.0"],"database_specific":{"source":"https://curl.se/docs/CURL-CVE-2022-43551.json","vanir_signatures_modified":"2026-04-25T20:22:26Z","vanir_signatures":[{"digest":{"line_hashes":["115593449884153395574841568102105793623","66141309811636582684301952524013472896","201897456876434882336981827853021814011","273071773399813072544352658708868299669"],"threshold":0.9},"deprecated":false,"signature_type":"Line","id":"CURL-CVE-2022-43551-6785e029","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/9e71901634e276dd050481c4320f046bebb1bc28","target":{"file":"lib/http.c"}},{"digest":{"function_hash":"244903423420342332646590161289106789453","length":6879},"deprecated":false,"signature_type":"Function","id":"CURL-CVE-2022-43551-7a7ea481","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/9e71901634e276dd050481c4320f046bebb1bc28","target":{"function":"Curl_http_header","file":"lib/http.c"}}]}}],"schema_version":"1.7.5","credits":[{"name":"Hiroki Kurosawa","type":"FINDER"},{"name":"Daniel Stenberg","type":"REMEDIATION_DEVELOPER"}]}