{"id":"CVE-2026-123871","kind":"vulnerability","aliases":["CVE-2026-123871"],"related":[],"title":"Node.js: proxy credentials leak into invalid-config error messages","description":"Node.js discloses proxy credentials in ERR_PROXY_INVALID_CONFIG error messages. CVE-2026-48615 established that a proxy credential must not appear in a Node.js error message and redacted the username and password from ProxyConfig.href, but that fix missed four error paths in the same subsystem, one of them inside the same constructor, which interpolate the raw proxy URL, credentials included, into an ERR_PROXY_INVALID_CONFIG message. The proxy URL comes from the environment, but the defect is the sink: a secret that Node.js redacts everywhere else is emitted verbatim into a much wider audience than the process environment, such as stderr, container logs, log aggregation, and crash reporting services. This vulnerability affects Node.js 26.x, 24.x, and 22.x.","summary":"Node.js writes proxy URLs, including any username and password, verbatim into ERR_PROXY_INVALID_CONFIG error messages in four code paths that the earlier redaction fix missed. Anyone who can read those logs, stderr output, or crash reports can recover the proxy credentials.","severity":"medium","cvss":6.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ci","logging","node.js","runtime","self-hosted"],"not_affected_if":["no-proxy-credentials","proxy-not-configured"],"how_to_check":"- Run `node --version` and compare against the affected lines: 22.x, 24.x, 26.x.\n- Check whether proxy settings in the environment (`HTTP_PROXY`, `HTTPS_PROXY`) include a username and password.\n- Search application logs and crash reports for `ERR_PROXY_INVALID_CONFIG`.","fix":null,"status":"open","published_at":"2026-11-11T19:17:34+00:00","first_seen_at":"2026-11-11T19:28:45+00:00","triaged_at":"2026-11-11T19:30:18+00:00","updated_at":"2026-11-11T19:30:18+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-11-11T19:30:18Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"local","title":"Node.js: proxy credentials leak into invalid-config error messages","impact":"medium","summary":"Node.js writes proxy URLs, including any username and password, verbatim into ERR_PROXY_INVALID_CONFIG error messages in four code paths that the earlier redaction fix missed. Anyone who can read those logs, stderr output, or crash reports can recover the proxy credentials.","audience":"developers","category":"runtime","nicknames":[],"who_cares":["node.js","self-hosted","ci","logging"],"confidence":0.6,"fix_status":"unknown","needs_auth":"unknown","worst_case":"proxy credentials readable in logs and crash reports","analyst_note":"Find the fixed Node.js versions for 22.x, 24.x and 26.x and the advisory text at https://nvd.nist.gov/vuln/detail/CVE-2026-123871.","how_to_check":"- Run `node --version` and compare against the affected lines: 22.x, 24.x, 26.x.\n- Check whether proxy settings in the environment (`HTTP_PROXY`, `HTTPS_PROXY`) include a username and password.\n- Search application logs and crash reports for `ERR_PROXY_INVALID_CONFIG`.","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["no-proxy-credentials","proxy-not-configured"],"who_is_affected":"Applications running on affected Node.js 22.x, 24.x or 26.x that use a proxy configured with credentials in the environment and that send error output to logs or crash reporting. Systems without credentials in the proxy URL, or without invalid proxy configuration reaching error output, are less exposed. The sources do not state a fixed version.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000793,"input_tokens":4720,"output_tokens":642,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-123871':13A,16A '-2026':12A,15A,79C '-48615':80C '22':187C '24':184C '26':182C 'affect':180C 'aggreg':173C 'anyon':51B 'appear':88C 'audienc':162C 'ci':17B 'code':43B 'come':138C 'config':8A,38B,75C,133C 'constructor':119C 'contain':170C 'crash':60B,175C 'credenti':3A,66B,70C,85C,126C 'cve':11A,14A,78C 'defect':144C 'disclos':68C 'earlier':47B 'els':154C 'emit':156C 'environ':141C,166C 'err':35B,72C,130C 'error':9A,39B,76C,92C,107C 'establish':81C 'everywher':153C 'fix':49B,104C 'four':42B,106C 'host':23B 'includ':28B,127C 'insid':116C 'interpol':121C 'invalid':7A,37B,74C,132C 'invalid-config':6A 'leak':4A 'log':18B,56B,171C,172C 'messag':10A,40B,77C,93C,134C 'miss':50B,105C 'much':160C 'must':86C 'node.js':1A,19B,24B,67C,91C,151C,181C 'one':113C 'output':58B 'password':32B,99C 'path':44B,108C 'process':165C 'proxi':2A,26B,36B,65B,69C,73C,84C,124C,131C,136C 'proxyconfig.href':101C 'raw':123C 'read':54B 'recov':63B 'redact':48B,95C,152C 'report':61B,176C 'runtim':20B 'secret':149C 'self':22B 'self-host':21B 'servic':177C 'sink':147C 'stderr':57B,169C 'subsystem':112C 'url':27B,125C,137C 'usernam':30B,97C 'verbatim':33B,157C 'vulner':179C 'wider':161C 'write':25B 'x':183C,185C,188C","nicknames":[],"mitigations":[],"who_affected":"Applications running on affected Node.js 22.x, 24.x or 26.x that use a proxy configured with credentials in the environment and that send error output to logs or crash reporting. Systems without credentials in the proxy URL, or without invalid proxy configuration reaching error output, are less exposed. The sources do not state a fixed version.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["ci","logging","medium","nodejs","runtime","selfhosted"],"campaign_type":null,"search_a":"'-123871':13A,16A '-2026':12A,15A 'config':8A 'credenti':3A 'cve':11A,14A 'error':9A 'invalid':7A 'invalid-config':6A 'leak':4A 'messag':10A 'node.js':1A 'proxi':2A","search_b":"'anyon':51B 'ci':17B 'code':43B 'config':38B 'crash':60B 'credenti':66B 'earlier':47B 'err':35B 'error':39B 'fix':49B 'four':42B 'host':23B 'includ':28B 'invalid':37B 'log':18B,56B 'messag':40B 'miss':50B 'node.js':19B,24B 'output':58B 'password':32B 'path':44B 'proxi':26B,36B,65B 'read':54B 'recov':63B 'redact':48B 'report':61B 'runtim':20B 'self':22B 'self-host':21B 'stderr':57B 'url':27B 'usernam':30B 'verbatim':33B 'write':25B","search_c":"'-2026':79C '-48615':80C '22':187C '24':184C '26':182C 'affect':180C 'aggreg':173C 'appear':88C 'audienc':162C 'come':138C 'config':75C,133C 'constructor':119C 'contain':170C 'crash':175C 'credenti':70C,85C,126C 'cve':78C 'defect':144C 'disclos':68C 'els':154C 'emit':156C 'environ':141C,166C 'err':72C,130C 'error':76C,92C,107C 'establish':81C 'everywher':153C 'fix':104C 'four':106C 'includ':127C 'insid':116C 'interpol':121C 'invalid':74C,132C 'log':171C,172C 'messag':77C,93C,134C 'miss':105C 'much':160C 'must':86C 'node.js':67C,91C,151C,181C 'one':113C 'password':99C 'path':108C 'process':165C 'proxi':69C,73C,84C,124C,131C,136C 'proxyconfig.href':101C 'raw':123C 'redact':95C,152C 'report':176C 'secret':149C 'servic':177C 'sink':147C 'stderr':169C 'subsystem':112C 'url':125C,137C 'usernam':97C 'verbatim':157C 'vulner':179C 'wider':161C 'x':183C,185C,188C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-11T19:17:34+00:00","kev":null,"cvss_vector":"CVSS:3.0/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","cvss_by":"ce714d77-add3-4f53-aff5-83d477b104bb","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-123871","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-123871","severity":null,"published_at":"2026-11-11T19:17:34+00:00","modified_at":"2026-11-11T19:17:34+00:00","first_seen_at":"2026-11-11T19:28:45+00:00","fetched_at":"2026-11-11T19:28:45+00:00","note":null}],"documents":[],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}