<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Node.js Blog: Vulnerability Reports]]></title><description><![CDATA[Node.js Blog: Vulnerability Reports]]></description><link>https://nodejs.org/en/</link><generator>metalsmith-feed</generator><lastBuildDate>Fri, 06 Jan 2017 01:55:14 GMT</lastBuildDate><atom:link href="https://nodejs.org/en/feed/vulnerability.xml" rel="self" type="application/rss+xml"/><author><![CDATA[Node.js Foundation]]></author><docs/><item><title><![CDATA[October security releases and v6 LTS "Boron" security inclusions]]></title><description><![CDATA[<h2 id="header-_-update-18-october-2016-_-releases-available"><em>(Update 18-October-2016)</em> Releases available<a name="_-update-18-october-2016-_-releases-available" class="anchor" href="#_-update-18-october-2016-_-releases-available" aria-labelledby="header-_-update-18-october-2016-_-releases-available"></a></h2><p>Updates are now available for all active Node.js release lines.</p>
<p>The following releases all contain fixes for CVE-2016-5180 &quot;ares_create_query single byte out of buffer write&quot;:</p>
<ul>
<li><a href="https://nodejs.org/en/blog/release/v0.10.48/">Node.js v0.10.48 (Maintenance)</a></li>
<li><a href="https://nodejs.org/en/blog/release/v0.12.17/">Node.js v0.12.17 (Maintenance)</a></li>
<li><a href="https://nodejs.org/en/blog/release/v4.6.1/">Node.js v4.6.1 (LTS &quot;Argon&quot;)</a></li>
</ul>
<p>While this is not a critical update, all users of these release lines should upgrade at their earliest convenience.</p>
<p>In addition, our new Node.js v6 LTS &quot;Boron&quot; release line is available beginning with <strong><a href="https://nodejs.org/en/blog/release/v6.9.0/">Node.js v6.9.0 (LTS &quot;Boron&quot;)</a></strong>. Along with the transition to Long Term Support, this release also contains the following security fixes, specific to v6.x:</p>
<ul>
<li><strong>Disable auto-loading of openssl.cnf</strong>: Don&#39;t automatically attempt to load an OpenSSL configuration file, from the <code>OPENSSL_CONF</code> environment variable or from the default location for the current platform. Always triggering a configuration file load attempt may allow an attacker to load compromised OpenSSL configuration into a Node.js process if they are able to place a file in a default location.</li>
<li><strong>Patched V8 arbitrary memory read</strong> (<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5172">CVE-2016-5172</a>): The V8 parser mishandled scopes, potentially allowing an attacker to obtain sensitive information from arbitrary memory locations via crafted JavaScript code. This vulnerability would require an attacker to be able to execute arbitrary JavaScript code in a Node.js process.</li>
<li><strong>Create a unique v8_inspector WebSocket address</strong>: Generate a UUID for each execution of the inspector. This provides additional security to prevent unauthorized clients from connecting to the Node.js process via the v8_inspector port when running with <code>--inspect</code>. Since the debugging protocol allows extensive access to the internals of a running process, and the execution of arbitrary code, it is important to limit connections to authorized tools only. Note that the v8_inspector protocol in Node.js is still considered an experimental feature. Vulnerability originally reported by Jann Horn.</li>
</ul>
<p>All of these vulnerabilities are considered low-severity for Node.js users, however, users of Node.js v6.x should upgrade at their earliest convenience.</p>
<p><strong><em>Original post is included below</em></strong></p>
<hr>
<h3 id="header-node-js-v6-lts-security-inclusions">Node.js v6 LTS security inclusions<a name="node-js-v6-lts-security-inclusions" class="anchor" href="#node-js-v6-lts-security-inclusions" aria-labelledby="header-node-js-v6-lts-security-inclusions"></a></h3><p>Next week, on Tuesday the 18th (late evening UTC), the Node.js Foundation will be launching its second new LTS release line, a continuation of the v6.x series of releases. This line will be codenamed &quot;Boron&quot; and the first version will be v6.9.0.</p>
<p>In addition to a change to introduce the <code>process.release.lts</code> property, set to <code>&#39;Boron&#39;</code>, we will also be including 3 low-severity security patches that only apply to the v6.x release series.</p>
<p>The security vulnerabilities being addressed are all low-severity and arise from Node.js dependencies:</p>
<ul>
<li>V8</li>
<li>OpenSSL when Node.js is built in <a href="https://github.com/nodejs/node/blob/master/BUILDING.md#building-nodejs-with-fips-compliant-openssl">FIPS-compliant mode</a> (not official builds)</li>
<li>v8_inspector, a new experimental debugging protocol</li>
</ul>
<p>These patches will also be included in the new v7.x <em>Current</em> (non-LTS) release series which is due to be launched later this month.</p>
<ul>
<li>Node.js v6 <strong><em>is affected</em></strong></li>
<li>Node.js v4 (LTS &quot;Argon&quot;) <strong><em>is not affected</em></strong></li>
<li>Node.js v0.12 (Maintenance) <strong><em>is not affected</em></strong></li>
<li>Node.js v0.10 (Maintenance) <strong><em>is not affected</em></strong></li>
</ul>
<h3 id="header-cve-2016-5180-ares_create_query-single-byte-out-of-buffer-write">CVE-2016-5180 &quot;ares_create_query single byte out of buffer write&quot;<a name="cve-2016-5180-ares_create_query-single-byte-out-of-buffer-write" class="anchor" href="#cve-2016-5180-ares_create_query-single-byte-out-of-buffer-write" aria-labelledby="header-cve-2016-5180-ares_create_query-single-byte-out-of-buffer-write"></a></h3><p>A security vulnerability has been <a href="https://c-ares.haxx.se/adv_20160929.html">discovered in the c-ares library</a> that is bundled with all versions of Node.js. Due to the difficulty of triggering and making use of this vulnerability we currently consider this a low-severity security flaw for Node.js users.</p>
<p>The patch has already been included in Node.js v6 and we will ensure that patched versions of the remaining affected versions are made available by Tuesday the 18th.</p>
<ul>
<li>Node.js v6 <strong><em>is not affected</em></strong></li>
<li>Node.js v4 (LTS &quot;Argon&quot;) <strong><em>is affected</em></strong></li>
<li>Node.js v0.12 (Maintenance) <strong><em>is affected</em></strong></li>
<li>Node.js v0.10 (Maintenance) <strong><em>is affected</em></strong></li>
</ul>
<p>We apologise for the short notice of these releases.</p>
]]></description><link>https://nodejs.org/en/blog/vulnerability/october-2016-security-releases</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/october-2016-security-releases</guid><dc:creator><![CDATA[Rod Vagg]]></dc:creator><pubDate>Sat, 15 Oct 2016 10:36:44 GMT</pubDate></item><item><title><![CDATA[Security updates for all active release lines, September 2016]]></title><description><![CDATA[<h2 id="header-_-update-27-september-2016-_-releases-available"><em>(Update 27-September-2016)</em> Releases available<a name="_-update-27-september-2016-_-releases-available" class="anchor" href="#_-update-27-september-2016-_-releases-available" aria-labelledby="header-_-update-27-september-2016-_-releases-available"></a></h2><p>Updates are now available for all active Node.js release lines. These include the recently published versions of OpenSSL 1.0.1 and 1.0.2 as well as fixes for some Node.js-specific security-related defects.</p>
<p>The OpenSSL security fixes included in these updates that impact Node.js are:</p>
<ul>
<li><a href="#CVE-2016-6304">CVE-2016-6304</a>: &quot;OCSP Status Request extension unbounded memory growth&quot;</li>
<li><a href="#CVE-2016-2183">CVE-2016-2183</a>: &quot;SWEET32 Mitigation&quot;</li>
<li><a href="#CVE-2016-6303">CVE-2016-6303</a>: &quot;OOB write in MDC2_Update()&quot;</li>
<li><a href="#CVE-2016-2178">CVE-2016-2178</a>: &quot;Constant time flag not preserved in DSA signing&quot;</li>
<li><a href="#CVE-2016-6306">CVE-2016-6306</a>: &quot;Certificate message OOB reads&quot;</li>
</ul>
<p>Details on each of these can be found in the original post below.</p>
<p>Additionally, OpenSSL 1.0.2j was released yesterday and included a fix for <a href="https://www.openssl.org/news/vulnerabilities.html#2016-7052">CVE-2016-7052</a>. This flaw was introduced in last week&#39;s 1.0.2i release, and therefore does not directly impact Node.js.</p>
<h2 id="header-node-js-specific-security-flaws">Node.js-specific security flaws<a name="node-js-specific-security-flaws" class="anchor" href="#node-js-specific-security-flaws" aria-labelledby="header-node-js-specific-security-flaws"></a></h2><p>Also included, are a number of fixes unrelated to the recent OpenSSL releases.</p>
<h3 id="header-cve-2016-7099-wildcard-certificates-not-properly-validated">CVE-2016-7099: Wildcard certificates not properly validated<a name="cve-2016-7099-wildcard-certificates-not-properly-validated" class="anchor" href="#cve-2016-7099-wildcard-certificates-not-properly-validated" aria-labelledby="header-cve-2016-7099-wildcard-certificates-not-properly-validated"></a></h3><p>This is a high severity defect that would allow a malicious TLS server to serve an invalid wildcard certificate for its hostname and be improperly validated by a Node.js client. This is due to a flaw in the validation of <code>*.</code> in the wildcard name string.</p>
<p>Originally reported by Alexander Minozhenko and James Bunton (Atlassian).</p>
<p>All versions of Node.js are <strong>affected</strong>.</p>
<h3 id="header-cve-2016-5325-reason-argument-in-serverresponse-writehead-not-properly-validated">CVE-2016-5325: <code>reason</code> argument in <code>ServerResponse#writeHead()</code> not properly validated<a name="cve-2016-5325-reason-argument-in-serverresponse-writehead-not-properly-validated" class="anchor" href="#cve-2016-5325-reason-argument-in-serverresponse-writehead-not-properly-validated" aria-labelledby="header-cve-2016-5325-reason-argument-in-serverresponse-writehead-not-properly-validated"></a></h3><p>This is a low severity security defect that that may make <a href="https://en.wikipedia.org/wiki/HTTP_response_splitting">HTTP response splitting</a> possible under certain circumstances. If user-input is passed to the <code>reason</code> argument to <code>writeHead()</code> on an HTTP response, a new-line character may be used to inject additional responses.</p>
<p>The fix for this defect introduces a new case where <code>throw</code> may occur when configuring HTTP responses. Users should already be adopting try/catch here.</p>
<p>This was originally reported independently by Evan Lucas and Romain Gaucher.</p>
<p>All versions of Node.js are <strong>affected</strong>.</p>
<h3 id="header-remove-support-for-loading-dynamic-third-party-engine-modules">Remove support for loading dynamic third-party engine modules<a name="remove-support-for-loading-dynamic-third-party-engine-modules" class="anchor" href="#remove-support-for-loading-dynamic-third-party-engine-modules" aria-labelledby="header-remove-support-for-loading-dynamic-third-party-engine-modules"></a></h3><p>This is a low severity security defect. By default, OpenSSL will load a list of third-party engine modules when the <code>ENGINE_load_builtin_engines()</code> function is used. These are normally not present on a user&#39;s system. An attacker may be able to make Node.js load malicious code by masquerading it as one of the dynamic engine modules.</p>
<p>This defect primarily impacts Windows due to the standard DLL search paths. However, UNIX users may also be at risk with a poorly configured <code>LD_LIBRARY_PATH</code> environment variable or /etc/ld.so.conf path list.</p>
<p>Originally reported by Ahmed Zaki (Skype).</p>
<ul>
<li>Node.js v6 (Current) <strong><em>is affected</em></strong></li>
<li>Node.js v4 (LTS &quot;Argon&quot;) <strong><em>is affected</em></strong></li>
<li>Node.js v0.12 (Maintenance) <strong><em>is affected</em></strong></li>
<li>Node.js v0.10 (Maintenance) <strong><em>is not affected</em></strong></li>
</ul>
<h3 id="header-downloads">Downloads<a name="downloads" class="anchor" href="#downloads" aria-labelledby="header-downloads"></a></h3><ul>
<li><a href="https://nodejs.org/en/blog/release/v6.7.0/">Node.js v6.7.0</a></li>
<li><a href="https://nodejs.org/en/blog/release/v4.6.0/">Node.js v4.6.0 (LTS &quot;Argon&quot;)</a></li>
<li><a href="https://nodejs.org/en/blog/release/v0.12.16/">Node.js v0.12.16 (Maintenance)</a></li>
<li><a href="https://nodejs.org/en/blog/release/v0.10.47/">Node.js v0.10.47 (Maintenance)</a></li>
</ul>
<p>Please note that this may be the final release of the v0.10 line as support ends in October. Please upgrade to v4 or above if you have not already done so.</p>
<p><strong><em>Original post is included below</em></strong></p>
<hr>
<p>The Node.js project has scheduled updates for all of its active release lines to patch a number of security flaws. These flaws include some of those <a href="https://www.openssl.org/news/secadv/20160922.txt">announced</a> by the OpenSSL project as well as a number of Node.js-specific issues. We do not consider any of these updates to be critical. However, it is strongly recommended that all production instances of Node.js be upgraded when the releases are made available.</p>
<p>We intend to make releases available on or soon after the evening of <strong>Tuesday, the 27th of September, 2016, UTC</strong> (midday US time).</p>
<p>We consider some of the patches in these releases to be API <em>breaking</em> changes which would normally warrant an increase in the major-version number of Node.js. However, in accordance with our security procedures, we will be delivering these changes in minor-version increases (the <em>y</em> in <em>x.y.z</em>) where appropriate, and patch-version increases in v0.10 an v0.12 releases.</p>
<p>These are the expected version numbers for the releases:</p>
<ul>
<li>Node.js v6.7.0 (Current)</li>
<li>Node.js v4.6.0 (LTS &quot;Argon&quot;)</li>
<li>Node.js v0.12.16 (Maintenance)</li>
<li>Node.js v0.10.47 (Maintenance)</li>
</ul>
<p>Additional notes:</p>
<ul>
<li>As per our <a href="https://github.com/nodejs/LTS">LTS schedule</a>, support for Node.js v0.10 will cease in October. Therefore, this may be the final release of Node.js v0.10. If you are still using v0.10 in production, it is essential that you plan for a migration to v4 (LTS &quot;Argon&quot;) or v6 (LTS to be announced in October) as soon as possible.</li>
<li>In accordance with our security release procedures, we will be limiting changes included in the LTS and Maintenance lines (v4, v0.12, and v0.10) <em>for these updates</em> to only security-related and other critical fixes that provide for maximum stability for users.</li>
</ul>
<h2 id="header-node-js-specific-security-flaws">Node.js-specific security flaws<a name="node-js-specific-security-flaws" class="anchor" href="#node-js-specific-security-flaws" aria-labelledby="header-node-js-specific-security-flaws"></a></h2><p>Included in these releases will be a number of fixes unrelated to the recent OpenSSL releases. These include:</p>
<ul>
<li>A high-severity flaw relating to the processing of TLS certificates, impacting all versions of Node.js</li>
<li>A low-severity native code injection vulnerability on Windows, impacting all versions of Node.js</li>
<li>A low-severity HTTP validation error, impacting all versions of Node.js</li>
</ul>
<p>Full disclosure of fixed vulnerabilities will be provided after all releases are made available for download.</p>
<h2 id="header-september-openssl-releases">September OpenSSL Releases<a name="september-openssl-releases" class="anchor" href="#september-openssl-releases" aria-labelledby="header-september-openssl-releases"></a></h2><p>The OpenSSL project has <a href="https://www.openssl.org/news/secadv/20160922.txt">announced</a> the general availability of versions <a href="https://www.openssl.org/news/openssl-1.0.2-notes.html">1.0.2i</a> (to be included in Node.js v4 and above) and <a href="https://www.openssl.org/news/openssl-1.0.1-notes.html">1.0.1u</a> (to be included in Node.js v0.10 and v0.12). Our crypto team (Shigeki Ohtsu, Fedor Indutny, and Ben Noordhuis) have performed an analysis of the defects addressed in the OpenSSL releases to determine their impact on Node.js. The results of this analysis are included below.</p>
<p><a name="CVE-2016-6304"></a></p>
<h3 id="header-cve-2016-6304-ocsp-status-request-extension-unbounded-memory-growth"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-6304">CVE-2016-6304</a>: OCSP Status Request extension unbounded memory growth<a name="cve-2016-6304-ocsp-status-request-extension-unbounded-memory-growth" class="anchor" href="#cve-2016-6304-ocsp-status-request-extension-unbounded-memory-growth" aria-labelledby="header-cve-2016-6304-ocsp-status-request-extension-unbounded-memory-growth"></a></h3><p>A malicious client can exhaust a server&#39;s memory, resulting in a denial of service (DoS) by sending very large OCSP Status Request extensions in a single session.</p>
<p>This flaw is labelled <em>high</em> severity due to the ease of use for a DoS attack and Node.js servers using TLS are vulnerable.</p>
<p><strong>Assessment</strong>: All versions of Node.js are <strong>affected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-6305"></a></p>
<h3 id="header-cve-2016-6305-ssl_peek-hang-on-empty-record"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-6305">CVE-2016-6305</a>: SSL_peek() hang on empty record<a name="cve-2016-6305-ssl_peek-hang-on-empty-record" class="anchor" href="#cve-2016-6305-ssl_peek-hang-on-empty-record" aria-labelledby="header-cve-2016-6305-ssl_peek-hang-on-empty-record"></a></h3><p>OpenSSL 1.1.0 SSL/TLS will hang during a call to <code>SSL_peek()</code> if the peer sends an empty record.</p>
<p>Node.js is not yet dependent on OpenSSL 1.1.0 so it is not impacted by this flaw.</p>
<p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-2183"></a></p>
<h3 id="header-cve-2016-2183-sweet32-mitigation"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2183">CVE-2016-2183</a>: SWEET32 Mitigation<a name="cve-2016-2183-sweet32-mitigation" class="anchor" href="#cve-2016-2183-sweet32-mitigation" aria-labelledby="header-cve-2016-2183-sweet32-mitigation"></a></h3><p><a href="https://sweet32.info">SWEET32</a> is a new attack on older block cipher algorithms that use a block size of 64 bits.</p>
<p>As mitigation, OpenSSL has moved DES-based ciphers from the <code>HIGH</code> to <code>MEDIUM</code> group. As Node.js includes <code>HIGH</code>, but not <code>MEDIUM</code>, in its default suite, affected ciphers are no longer included unless the default suite is not used. Node&#39;s default TLS cipher suite can be found in the <a href="https://nodejs.org/api/tls.html#tls_modifying_the_default_tls_cipher_suite">API documentation</a>.</p>
<p><strong>Assessment</strong>: All versions of Node.js are <strong>affected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-6303"></a></p>
<h3 id="header-cve-2016-6303-oob-write-in-mdc2_update"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-6303">CVE-2016-6303</a>: OOB write in MDC2_Update()<a name="cve-2016-6303-oob-write-in-mdc2_update" class="anchor" href="#cve-2016-6303-oob-write-in-mdc2_update" aria-labelledby="header-cve-2016-6303-oob-write-in-mdc2_update"></a></h3><p>An overflow can occur in <code>MDC2_Update()</code> under certain circumstances resulting in an out of bounds (OOB) error. This attack is impractical on most platforms due to the size of data required to trigger the OOB error.</p>
<p>Node.js is impacted by this flaw but due to the impracticalities of exploiting it and the very low usage of of MDC-2, it is <em>very low</em> severity for Node.js users.</p>
<p><strong>Assessment</strong>: All versions of Node.js are <strong>affected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-6302"></a></p>
<h3 id="header-cve-2016-6302-malformed-sha512-ticket-dos"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-6302">CVE-2016-6302</a>: Malformed SHA512 ticket DoS<a name="cve-2016-6302-malformed-sha512-ticket-dos" class="anchor" href="#cve-2016-6302-malformed-sha512-ticket-dos" aria-labelledby="header-cve-2016-6302-malformed-sha512-ticket-dos"></a></h3><p>If a server uses SHA512 for TLS session ticket HMAC, it is vulnerable to a denial of service (DoS) attack via crash upon receiving a malformed ticket.</p>
<p>Node.js does not use SHA512 for session tickets and is therefore not impacted by this flaw.</p>
<p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-2182"></a></p>
<h3 id="header-cve-2016-2182-oob-write-in-bn_bn2dec"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2182">CVE-2016-2182</a>: OOB write in BN_bn2dec()<a name="cve-2016-2182-oob-write-in-bn_bn2dec" class="anchor" href="#cve-2016-2182-oob-write-in-bn_bn2dec" aria-labelledby="header-cve-2016-2182-oob-write-in-bn_bn2dec"></a></h3><p>An out of bounds (OOB) write can occur in <code>BN_bn2dec()</code> if an application uses this function with an overly large <code>BIGNUM</code>. TLS is not affected because record limits will reject an oversized certificate before it is parsed.</p>
<p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-2180"></a></p>
<h3 id="header-cve-2016-2180-oob-read-in-ts_obj_print_bio"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2180">CVE-2016-2180</a>: OOB read in TS_OBJ_print_bio()<a name="cve-2016-2180-oob-read-in-ts_obj_print_bio" class="anchor" href="#cve-2016-2180-oob-read-in-ts_obj_print_bio" aria-labelledby="header-cve-2016-2180-oob-read-in-ts_obj_print_bio"></a></h3><p>An out of bounds (OOB) read can occur when large OIDs are presented via <code>TS_OBJ_print_bio()</code>.</p>
<p>Node.js does not make use of the Time Stamp Authority functionality in OpenSSL and is therefore believed to be unaffected by this flaw.</p>
<p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-2177"></a></p>
<h3 id="header-cve-2016-2177-pointer-arithmetic-undefined-behaviour"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2177">CVE-2016-2177</a>: Pointer arithmetic undefined behaviour<a name="cve-2016-2177-pointer-arithmetic-undefined-behaviour" class="anchor" href="#cve-2016-2177-pointer-arithmetic-undefined-behaviour" aria-labelledby="header-cve-2016-2177-pointer-arithmetic-undefined-behaviour"></a></h3><p>This programming flaw is described in the post at <a href="https://www.openssl.org/blog/blog/2016/06/27/undefined-pointer-arithmetic/">https://www.openssl.org/blog/blog/2016/06/27/undefined-pointer-arithmetic/</a>.</p>
<p>It is unlikely that Node.js users are directly impacted by this.</p>
<p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-2178"></a></p>
<h3 id="header-cve-2016-2178-constant-time-flag-not-preserved-in-dsa-signing"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2178">CVE-2016-2178</a>: Constant time flag not preserved in DSA signing<a name="cve-2016-2178-constant-time-flag-not-preserved-in-dsa-signing" class="anchor" href="#cve-2016-2178-constant-time-flag-not-preserved-in-dsa-signing" aria-labelledby="header-cve-2016-2178-constant-time-flag-not-preserved-in-dsa-signing"></a></h3><p>A flaw in the OpenSSL DSA implementation means that a non-constant time codepath is followed for certain operations. This has been demonstrated through a cache-timing attack to be sufficient for an attacker to recover the private DSA key.</p>
<p>This is <em>very low</em> severity for Node.js users due to the difficulty in taking advantage of this attack and because DSA is very rarely used.</p>
<p><strong>Assessment</strong>: All versions of Node.js are <strong>affected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-2179"></a></p>
<h3 id="header-cve-2016-2179-dtls-buffered-message-dos"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2179">CVE-2016-2179</a>: DTLS buffered message DoS<a name="cve-2016-2179-dtls-buffered-message-dos" class="anchor" href="#cve-2016-2179-dtls-buffered-message-dos" aria-labelledby="header-cve-2016-2179-dtls-buffered-message-dos"></a></h3><p>In a DTLS connection where handshake messages are delivered out-of-order, those messages that OpenSSL is not yet ready to process will be buffered for later use. This can be exploited to cause a denial of service (DoS) via memory exhaustion.</p>
<p>As Node.js does not support DTLS, users are not impacted by this flaw.</p>
<p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-2179"></a></p>
<h3 id="header-cve-2016-2179-dtls-replay-protection-dos"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2179">CVE-2016-2179</a>: DTLS replay protection DoS<a name="cve-2016-2179-dtls-replay-protection-dos" class="anchor" href="#cve-2016-2179-dtls-replay-protection-dos" aria-labelledby="header-cve-2016-2179-dtls-replay-protection-dos"></a></h3><p>A flaw in the DTLS replay attack protection mechanism that would allow an attacker to force a server to drop legitimate packets for a DTLS connection, resulting in a denial of service (DoS) for that connection.</p>
<p>As Node.js does not support DTLS, users are not impacted by this flaw.</p>
<p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-6306"></a></p>
<h3 id="header-cve-2016-6306-certificate-message-oob-reads"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-6306">CVE-2016-6306</a>: Certificate message OOB reads<a name="cve-2016-6306-certificate-message-oob-reads" class="anchor" href="#cve-2016-6306-certificate-message-oob-reads" aria-labelledby="header-cve-2016-6306-certificate-message-oob-reads"></a></h3><p>Some missing message length checks can result in out of bounds (OOB) reads of up to 2 bytes beyond an allocated buffer. There is a theoretical denial of service (DoS) risk. This only impacts a client or a server which enables client authentication.</p>
<p>Node.js is impacted by this <em>low</em> severity flaw.</p>
<p><strong>Assessment</strong>: All versions of Node.js are <strong>affected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-6307"></a></p>
<h3 id="header-cve-2016-6307-excessive-allocation-of-memory-in-tls_get_message_header"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-6307">CVE-2016-6307</a>: Excessive allocation of memory in tls_get_message_header()<a name="cve-2016-6307-excessive-allocation-of-memory-in-tls_get_message_header" class="anchor" href="#cve-2016-6307-excessive-allocation-of-memory-in-tls_get_message_header" aria-labelledby="header-cve-2016-6307-excessive-allocation-of-memory-in-tls_get_message_header"></a></h3><p>Excessive allocation of memory in OpenSSL 1.1.0 can be achieved by manipulating the length component of a TLS header.</p>
<p>Node.js is not yet dependent on OpenSSL 1.1.0 so it is not impacted by this flaw.</p>
<p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability.</p>
<p><a name="CVE-2016-6308"></a></p>
<h3 id="header-cve-2016-6308-excessive-allocation-of-memory-in-dtls1_preprocess_fragment"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-6308">CVE-2016-6308</a>: Excessive allocation of memory in dtls1_preprocess_fragment()<a name="cve-2016-6308-excessive-allocation-of-memory-in-dtls1_preprocess_fragment" class="anchor" href="#cve-2016-6308-excessive-allocation-of-memory-in-dtls1_preprocess_fragment" aria-labelledby="header-cve-2016-6308-excessive-allocation-of-memory-in-dtls1_preprocess_fragment"></a></h3><p>A flaw that is similar to CVE-2016-6307 but impacting DTLS.</p>
<p>Node.js is not yet dependent on OpenSSL 1.1.0, nor does it implement DTLS, so it is not impacted by this flaw.</p>
<p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability.</p>
<h2 id="header-contact-and-future-updates">Contact and future updates<a name="contact-and-future-updates" class="anchor" href="#contact-and-future-updates" aria-labelledby="header-contact-and-future-updates"></a></h2><p>Please monitor the nodejs-sec Google Group for updates: <a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a> or the Node.js website for release announcements: <a href="https://nodejs.org/en/blog/">https://nodejs.org/en/blog/</a></p>
<p>The current Node.js security policy can be found at <a href="https://nodejs.org/en/security/">https://nodejs.org/en/security/</a>.</p>
<p>Please contact security@nodejs.org if you wish to report a vulnerability in Node.js.</p>
<p>Subscribe to the low-volume announcement-only nodejs-sec mailing list at <a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a> to stay up to date on security vulnerabilities and security-related releases of Node.js and the projects maintained in the <a href="http://github.com/nodejs/">nodejs GitHub organisation</a>.</p>
]]></description><link>https://nodejs.org/en/blog/vulnerability/september-2016-security-releases</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/september-2016-security-releases</guid><dc:creator><![CDATA[Rod Vagg]]></dc:creator><pubDate>Fri, 23 Sep 2016 10:53:30 GMT</pubDate></item><item><title><![CDATA[Security updates for all active release lines, June 2016]]></title><description><![CDATA[<h2 id="header-_-update-23-june-2016-_-releases-available"><em>(Update 23-June-2016)</em> Releases available<a name="_-update-23-june-2016-_-releases-available" class="anchor" href="#_-update-23-june-2016-_-releases-available" aria-labelledby="header-_-update-23-june-2016-_-releases-available"></a></h2><p>After a thorough assessment of the fixes we were planning on including, we have decided to scale back this security update to only include a subset. We are deferring some fixes while we improve the required API changes in order to decrease the disruption that it may cause to users. The vulnerabilities that the deferred fixes address are low severity.</p>
<p>Note that there is <strong>no Node.js v6 release</strong> in this set of updates as it is not impacted by the vulnerabilities being patched.</p>
<p>The fixes we are including in this update are:</p>
<h3 id="header-cve-2016-1669-buffer-overflow-in-v8"><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-1669">CVE-2016-1669</a> Buffer overflow in V8<a name="cve-2016-1669-buffer-overflow-in-v8" class="anchor" href="#cve-2016-1669-buffer-overflow-in-v8" aria-labelledby="header-cve-2016-1669-buffer-overflow-in-v8"></a></h3><p>Under certain conditions, V8 may improperly expand memory allocations in the <code>Zone::New</code> function. This could potentially be used to cause a Denial of Service via buffer overflow or as a trigger for a remote code execution.</p>
<p>Although this bug is marked as <a href="http://googlechromereleases.blogspot.com.au/2016/05/stable-channel-update.html">high severity</a> in the corresponding Chromium release (50.0.2661.102), our assessment is that this is low severity for Node.js users due to the level of difficulty in making use of this vulnerability. However, users are encouraged to upgrade their Node.js installation to ensure they are properly protected.</p>
<ul>
<li>Node.js v6 (Current) <strong><em>is not affected</em></strong> as of v6.2.0 due to an update to V8 5.0.71.47, versions prior to v6.2.0 <strong>are affected</strong></li>
<li>Node.js v5 <strong><em>is affected</em></strong></li>
<li>Node.js v4 (LTS &quot;Argon&quot;) <strong><em>is affected</em></strong></li>
<li>Node.js v0.12 (Maintenance) <strong><em>is affected</em></strong></li>
<li>Node.js v0.10 (Maintenance) <strong><em>is affected</em></strong></li>
</ul>
<h3 id="header-cve-2014-9748-unsafe-use-of-read-write-locks-on-windows-2003-and-xp-in-libuv"><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9748">CVE-2014-9748</a> Unsafe use of read/write locks on Windows 2003 and XP in libuv<a name="cve-2014-9748-unsafe-use-of-read-write-locks-on-windows-2003-and-xp-in-libuv" class="anchor" href="#cve-2014-9748-unsafe-use-of-read-write-locks-on-windows-2003-and-xp-in-libuv" aria-labelledby="header-cve-2014-9748-unsafe-use-of-read-write-locks-on-windows-2003-and-xp-in-libuv"></a></h3><p>Prior to libuv version 1.7.4, a flaw in the read/write locks implementation for Windows XP and Windows 2003 could lead to unlocking a CRITICAL_SECTION on the wrong thread, resulting in undefined and potentially unsafe behavior. This problem was identified by Zhou Ran. Node.js v4 and later are not affected as the usage of read/write was replaced with simple mutexes. Further details can be found on the <a href="https://github.com/libuv/libuv/issues/515">libuv repository</a>.</p>
<ul>
<li>Node.js v6 (Current) <strong><em>is not affected</em></strong></li>
<li>Node.js v5 <strong><em>is not affected</em></strong></li>
<li>Node.js v4 (LTS &quot;Argon&quot;) <strong><em>is not affected</em></strong></li>
<li>Node.js v0.12 (Maintenance) <strong><em>is affected</em></strong></li>
<li>Node.js v0.10 (Maintenance) <strong><em>is affected</em></strong></li>
</ul>
<h3 id="header-downloads">Downloads<a name="downloads" class="anchor" href="#downloads" aria-labelledby="header-downloads"></a></h3><ul>
<li><a href="https://nodejs.org/en/blog/release/v5.12.0/">Node.js v5.12.0</a></li>
<li><a href="https://nodejs.org/en/blog/release/v4.4.6/">Node.js v4.4.6 (LTS &quot;Argon&quot;)</a></li>
<li><a href="https://nodejs.org/en/blog/release/v0.12.15/">Node.js v0.12.15 (Maintenance)</a></li>
<li><a href="https://nodejs.org/en/blog/release/v0.10.46/">Node.js v0.10.46 (Maintenance)</a></li>
</ul>
<p>Please note that this may be the final release of the v5.x line as support ends on the 30th of June.</p>
<hr>
<h2 id="header-_-update-16-june-2016-_-adjusted-release-schedule"><em>(Update 16-June-2016)</em> Adjusted release schedule<a name="_-update-16-june-2016-_-adjusted-release-schedule" class="anchor" href="#_-update-16-june-2016-_-adjusted-release-schedule" aria-labelledby="header-_-update-16-june-2016-_-adjusted-release-schedule"></a></h2><p>Unfortunately we have to announce that we are delaying our security releases by a week. We have concluded that pushing forward with the releases this week would unnecessarily compromise the quality of the fixes we intended to include. Instead, we will be taking the extra time to be sure that we are delivering the stability and quality that Node.js users expect.</p>
<p>We now intend to make releases available on or soon after <strong>Thursday, the 23rd of June, 2016, UTC</strong>.</p>
<p><strong><em>Original post is included below</em></strong></p>
<hr>
<p>The Node.js project has scheduled updates for all of its active release lines to patch two security flaws and one security-related usability flaw. We do not consider any of our updates to be critical, however, it is recommended that all production instances of Node.js be upgraded when the releases are made available.</p>
<p>We intend to make releases available on or soon after <strong>Thursday, the 16th of June, 2016, UTC</strong>.</p>
<p>We consider some of the patches in these releases to be API <em>breaking</em> changes which would normally warrant an increase in the major-version number of Node.js. However, in accordance with our security procedures we will be delivering these changes in minor-version increases <em>(the y in x.y.z)</em> where appropriate, and patch-version increases in v0.10 an v0.12 releases.</p>
<p>Therefore, we expect to be releasing:</p>
<ul>
<li>Node.js v6.3.0 (Current)</li>
<li>Node.js v5.12.0</li>
<li>Node.js v4.5.0 (LTS &quot;Argon&quot;)</li>
<li>Node.js v0.12.15 (Maintenance)</li>
<li>Node.js v0.10.46 (Maintenance)</li>
</ul>
<p>While we anticipate minimal impact from the breaking changes, please be sure to review the details once they are released and make an assessment regarding the impact on your applications.</p>
<p>Additional notes:</p>
<ul>
<li>It is our intention to stop releasing critical updates for the v5 release line at the end of this month, you should migrate to to v6 or v4 LTS if you have not already done so.</li>
<li>In accordance with our security release procedures, we will be limiting changes included in the LTS and Maintenance lines (v4, v0.12 and v0.10) <em>for these updates</em> to only security-related and critical fixes to provide maximum stability for users.</li>
</ul>
<h2 id="header-v8-security-defect">V8 security defect<a name="v8-security-defect" class="anchor" href="#v8-security-defect" aria-labelledby="header-v8-security-defect"></a></h2><p>The V8 team has identified and patched a potential security vulnerability. We will be backporting the fix to all active release lines of Node.js. Our current assessment is that this vulnerability should be considered low-severity for Node.js users with an exploit being very difficult to develop and execute.</p>
<p><strong>All versions of Node.js are affected.</strong></p>
<h2 id="header-http-processing-security-defect-cve-2016-5325">HTTP processing security defect (CVE-2016-5325)<a name="http-processing-security-defect-cve-2016-5325" class="anchor" href="#http-processing-security-defect-cve-2016-5325" aria-labelledby="header-http-processing-security-defect-cve-2016-5325"></a></h2><p>We will be including fixes relating to Node.js HTTP processing. We categorise these as low-severity and are not aware of any existing exploits leveraging the defects. Full details are embargoed until new releases are available.</p>
<p>Common Vulnerability Scoring System (CVSS) v3 Base Score:</p>
<table>
<thead>
<tr>
<th>Metric</th>
<th>Score</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Base Score:</strong></td>
<td>4.8 (Medium)</td>
</tr>
<tr>
<td><strong>Base Vector:</strong></td>
<td><a href="https://www.first.org/cvss/calculator/3.0#CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N">CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N</a></td>
</tr>
<tr>
<td><strong>Attack Vector:</strong></td>
<td>Network (AV:N)</td>
</tr>
<tr>
<td><strong>Attack Complexity:</strong></td>
<td>High (AC:H)</td>
</tr>
<tr>
<td><strong>Privileges Required:</strong></td>
<td>None (PR:N)</td>
</tr>
<tr>
<td><strong>User Interaction:</strong></td>
<td>None (UI:N)</td>
</tr>
<tr>
<td><strong>Scope of Impact:</strong></td>
<td>Unchanged (S:U)</td>
</tr>
<tr>
<td><strong>Confidentiality Impact:</strong></td>
<td>Low (C:L)</td>
</tr>
<tr>
<td><strong>Integrity Impact:</strong></td>
<td>Low (I:L)</td>
</tr>
<tr>
<td><strong>Availability Impact:</strong></td>
<td>None (A:N)</td>
</tr>
</tbody>
</table>
<p>Refer to the <a href="https://www.first.org/cvss/specification-document">CVSS v3 Specification</a> for details on the meanings and application of the vector components.</p>
<p><strong>All versions of Node.js are affected.</strong></p>
<p>This defect will identified as <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5325">CVE-2016-5325</a></p>
<h2 id="header-security-related-http-client-usability-flaw">Security-related HTTP client usability flaw<a name="security-related-http-client-usability-flaw" class="anchor" href="#security-related-http-client-usability-flaw" aria-labelledby="header-security-related-http-client-usability-flaw"></a></h2><p>We intend to also include a patch for HTTP client in Node.js. While we do not consider this to be strictly a security concern for Node.js core, it poses a usability concern that may easily enable users to write code that exposes vulnerabilities in their applications.</p>
<p><strong>All versions of Node.js are affected.</strong></p>
<h2 id="header-contact-and-future-updates">Contact and future updates<a name="contact-and-future-updates" class="anchor" href="#contact-and-future-updates" aria-labelledby="header-contact-and-future-updates"></a></h2><p>Please monitor the nodejs-sec Google Group for updates: <a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a> or the Node.js website for release announcements: <a href="https://nodejs.org/en/blog/">https://nodejs.org/en/blog/</a></p>
<p>The current Node.js security policy can be found at <a href="https://nodejs.org/en/security/">https://nodejs.org/en/security/</a>.</p>
<p>Please contact security@nodejs.org if you wish to report a vulnerability in Node.js.</p>
<p>Subscribe to the low-volume announcement-only nodejs-sec mailing list at <a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a> to stay up to date on security vulnerabilities and security-related releases of Node.js and the projects maintained in the <a href="http://github.com/nodejs/">nodejs GitHub organisation</a>.</p>
]]></description><link>https://nodejs.org/en/blog/vulnerability/june-2016-security-releases</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/june-2016-security-releases</guid><dc:creator><![CDATA[Rod Vagg]]></dc:creator><pubDate>Mon, 13 Jun 2016 12:57:51 GMT</pubDate></item><item><title><![CDATA[OpenSSL updates, 1.0.1t and 1.0.2h]]></title><description><![CDATA[<h2 id="header-_-update-6-may-2016-_-new-node-js-releases"><em>(Update 6-May-2016)</em> New Node.js Releases<a name="_-update-6-may-2016-_-new-node-js-releases" class="anchor" href="#_-update-6-may-2016-_-new-node-js-releases" aria-labelledby="header-_-update-6-may-2016-_-new-node-js-releases"></a></h2><p>The following releases have been made available to include the security updates to OpenSSL discussed in the post below. Please upgrade your Node.js installation as soon as possible in order to be protected against the disclosed vulnerabilities.</p>
<ul>
<li><strong>Node v6.1.0 (Current)</strong>: <a href="http://nodejs.org/en/blog/release/v6.1.0/">http://nodejs.org/en/blog/release/v6.1.0/</a></li>
<li><strong>Node v5.11.1</strong>: <a href="http://nodejs.org/en/blog/release/v5.11.1/">http://nodejs.org/en/blog/release/v5.11.1/</a></li>
<li><strong>Node v4.4.4 (LTS)</strong>: <a href="http://nodejs.org/en/blog/release/v4.4.4/">http://nodejs.org/en/blog/release/v4.4.4/</a></li>
<li><strong>Node v0.12.14 (Maintenance)</strong>: <a href="http://nodejs.org/en/blog/release/v0.12.14/">http://nodejs.org/en/blog/release/v0.12.14/</a></li>
<li><strong>Node v0.10.45 (Maintenance)</strong>: <a href="http://nodejs.org/en/blog/release/v0.10.45/">http://nodejs.org/en/blog/release/v0.10.45/</a></li>
</ul>
<p><strong><em>Original post is included below, along with an update containing a risk assessment</em></strong></p>
<p>The OpenSSL project has <a href="https://mta.openssl.org/pipermail/openssl-announce/2016-April/000069.html">announced</a> that that they will be releasing versions 1.0.1t and 1.0.2h this week, on <strong>Tuesday the 3rd of May, UTC</strong>. The releases will fix <em>&quot;several security defects&quot;</em> that are labelled as <em>&quot;high&quot;</em> severity under their security policy, meaning they are:</p>
<blockquote>
<p>... issues that are of a lower risk than critical, perhaps due to affecting less common configurations, or which are less likely to be exploitable.</p>
</blockquote>
<p>Node.js v0.10 and v0.12 both use OpenSSL v1.0.1 and Node.js v4, v5 and v6 use OpenSSL v1.0.2 and releases from <a href="https://nodejs.org/">nodejs.org</a> and some other popular distribution sources are statically compiled. Therefore, all active release lines are impacted by this update.</p>
<p>At this stage, due to embargo, it is uncertain the exact nature of these defects, nor what impact they will have on Node.js users, if any. We will proceed as follows:</p>
<p>Within approximately 24 hours of the OpenSSL releases, our crypto team will make an impact assessment for Node.js users of the OpenSSL releases. This information may vary depending for the different active release lines and will be posted here.</p>
<p>As part of that impact assessment we will announce our release plans for each of the active release lines to take into account any impact. <strong>Please be prepared for the possibility of important updates to Node.js v0.10, v0.12, v4, v5 and v6 soon after Tuesday, the 3rd of May</strong>. It is likely that if upgrades are required that they will be ready on or after Thursday, the 5th of May.</p>
<p>Note that Node.js v5 will be supported until June and will therefore be included in this set of releases.</p>
<p>Please monitor the <strong>nodejs-sec</strong> Google Group for updates, including an impact assessment and updated details on release timing within approximately 24 hours after the OpenSSL release: <a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a></p>
<h2 id="header-contact-and-future-updates">Contact and future updates<a name="contact-and-future-updates" class="anchor" href="#contact-and-future-updates" aria-labelledby="header-contact-and-future-updates"></a></h2><p>The current Node.js security policy can be found at <a href="https://nodejs.org/en/security/">https://nodejs.org/en/security/</a>.</p>
<p>Please contact <a href="mailto:security@nodejs.org">security@nodejs.org</a> if you wish to report a vulnerability in Node.js.</p>
<p>Subscribe to the low-volume announcement-only nodejs-sec mailing list at <a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a> to stay up to date on security vulnerabilities and security-related releases of Node.js and the projects maintained in the <a href="https://github.com/nodejs">nodejs GitHub organisation</a>.</p>
<h2 id="header-_-update-4-may-2016-_-openssl-impact-assessment"><em>(Update 4-May-2016)</em> OpenSSL Impact Assessment<a name="_-update-4-may-2016-_-openssl-impact-assessment" class="anchor" href="#_-update-4-may-2016-_-openssl-impact-assessment" aria-labelledby="header-_-update-4-may-2016-_-openssl-impact-assessment"></a></h2><p>Our crypto team (Ben Noordhuis, Shigeki Ohtsu and Fedor Indutny) have performed an analysis of the defects addressed in this week&#39;s OpenSSL releases, <a href="https://www.openssl.org/news/openssl-1.0.2-notes.html">1.0.2h</a> and <a href="https://www.openssl.org/news/openssl-1.0.1-notes.html">1.0.1t</a>. The results of this analysis are included below.</p>
<p>We will be producing new versions this week for all of our active release lines containing the new versions of OpenSSL in order to provide security assurance. We will provide an update here once all releases are available. <strong>We anticipate that they will be available on, or soon after, Thursday the 5th of May, UTC</strong>.</p>
<h3 id="header-cve-2016-2107-padding-oracle-in-aes-ni-cbc-mac-check"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2107">CVE-2016-2107</a>: Padding oracle in AES-NI CBC MAC check<a name="cve-2016-2107-padding-oracle-in-aes-ni-cbc-mac-check" class="anchor" href="#cve-2016-2107-padding-oracle-in-aes-ni-cbc-mac-check" aria-labelledby="header-cve-2016-2107-padding-oracle-in-aes-ni-cbc-mac-check"></a></h3><p>A man-in-the-middle (MITM) attacker may be able to execute a <a href="https://en.wikipedia.org/wiki/Padding_oracle_attack">padding oracle attack</a> to decrypt traffic when a connection uses an AES-CBC cipher and the server runs on an Intel CPU supporting AES-NI. This is a common configuration for TLS servers.</p>
<p>The OpenSSL project has labelled this vulnerability <em>high severity</em>.</p>
<p><strong>Assessment</strong>: All versions of Node.js are <strong>affected</strong> by this vulnerability.</p>
<h3 id="header-cve-2016-2105-evp_encodeupdate-overflow"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2105">CVE-2016-2105</a>: EVP_EncodeUpdate overflow<a name="cve-2016-2105-evp_encodeupdate-overflow" class="anchor" href="#cve-2016-2105-evp_encodeupdate-overflow" aria-labelledby="header-cve-2016-2105-evp_encodeupdate-overflow"></a></h3><p>An overflow can occur in the OpenSSL <code>EVP_EncodeUpdate()</code> function which is used for Base64 encoding of binary data. An attacker must be able to supply large amounts of input data in order to cause an overflow.</p>
<p>Node.js uses the <code>EVP_EncodeUpdate()</code> internally during calls to <a href="https://nodejs.org/api/crypto.html#crypto_certificate_exportpublickey_spkac"><code>crypto.Certificate#exportPublicKey()</code></a> for <a href="https://en.wikipedia.org/wiki/SPKAC">SPKAC</a> Certificate Signing Requests. User-supplied data must be passed to this method for applications to be vulnerable. This method has been available since Node.js v0.12.</p>
<p>The OpenSSL project has labelled this vulnerability <em>low severity</em>.</p>
<ul>
<li>Node.js v0.10 is <strong>unaffected</strong></li>
<li>Node.js v0.12, v4, v5 and v6 <strong>are affected</strong></li>
</ul>
<h3 id="header-cve-2016-2108-memory-corruption-in-the-asn-1-encoder"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2108">CVE-2016-2108</a>: Memory corruption in the ASN.1 encoder<a name="cve-2016-2108-memory-corruption-in-the-asn-1-encoder" class="anchor" href="#cve-2016-2108-memory-corruption-in-the-asn-1-encoder" aria-labelledby="header-cve-2016-2108-memory-corruption-in-the-asn-1-encoder"></a></h3><p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability.</p>
<h3 id="header-cve-2016-2106-evp_encryptupdate-overflow"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2106">CVE-2016-2106</a>: EVP_EncryptUpdate overflow<a name="cve-2016-2106-evp_encryptupdate-overflow" class="anchor" href="#cve-2016-2106-evp_encryptupdate-overflow" aria-labelledby="header-cve-2016-2106-evp_encryptupdate-overflow"></a></h3><p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability</p>
<h3 id="header-cve-2016-2109-asn-1-bio-excessive-memory-allocation-cve-2016-2109"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2109">CVE-2016-2109</a>: ASN.1 BIO excessive memory allocation (CVE-2016-2109)<a name="cve-2016-2109-asn-1-bio-excessive-memory-allocation-cve-2016-2109" class="anchor" href="#cve-2016-2109-asn-1-bio-excessive-memory-allocation-cve-2016-2109" aria-labelledby="header-cve-2016-2109-asn-1-bio-excessive-memory-allocation-cve-2016-2109"></a></h3><p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability</p>
<h3 id="header-cve-2016-2176-ebcdic-overread"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-2176">CVE-2016-2176</a>: EBCDIC overread<a name="cve-2016-2176-ebcdic-overread" class="anchor" href="#cve-2016-2176-ebcdic-overread" aria-labelledby="header-cve-2016-2176-ebcdic-overread"></a></h3><p><strong>Assessment</strong>: All versions of Node.js are believed to be <strong>unaffected</strong> by this vulnerability</p>
]]></description><link>https://nodejs.org/en/blog/vulnerability/openssl-may-2016</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/openssl-may-2016</guid><dc:creator><![CDATA[Rod Vagg]]></dc:creator><pubDate>Mon, 02 May 2016 11:16:10 GMT</pubDate></item><item><title><![CDATA[npm security updates v2.15.1 and v3.8.3]]></title><description><![CDATA[<p><em>This announcement is also covered on the npm blog: <a href="http://blog.npmjs.org/post/142036323955/fixing-a-bearer-token-vulnerability">http://blog.npmjs.org/post/142036323955/fixing-a-bearer-token-vulnerability</a>.</em></p>
<p>The primary npm registry has, since late 2014, used HTTP bearer tokens to authenticate requests from the npm command-line interface. Due to a design flaw in the CLI, these bearer tokens were sent with every request made by the CLI for logged-in users, regardless of the destination of the request. They should instead only be included for requests made against the registry or registries used for the current install.</p>
<p>This flaw allows an attacker to set up an HTTP server that could collect authentication information they could use to impersonate the users whose tokens they collected. This impersonation would allow them to do anything the compromised users could do, including publishing new versions of packages.</p>
<p>This flaw has been fixed in <a href="https://github.com/npm/npm/commit/fea8cc92cee02c720b58f95f14d315507ccad401">npm@2.15.1</a> (npm LTS) and <a href="https://github.com/npm/npm/commit/f67ecad59e99a03e5aad8e93cd1a086ae087cb29">npm@3.8.3</a>. The npm CLI team believes that the fix won&#39;t break any existing registry setups, but due to the large number of registry software suites in the wild, it&#39;s possible that this change will be breaking in some cases. If so, please <a href="https://github.com/npm/npm/issues/new">file an issue</a> describing the software you&#39;re using and how it broke, and the team will work with you to mitigate the breakage.</p>
<p>If you believe that your bearer token may have been leaked, it should be sufficient to <a href="https://www.npmjs.com/settings/tokens">invalidate your current npm bearer tokens</a> and to rerun npm login to generate new tokens. Keep in mind that this may cause continuous integration builds in services like Travis to break, in which case you&#39;ll need to update the tokens in your CI server&#39;s configuration.</p>
<p>Thanks to Mitar, Will White &amp; the team at Mapbox, Max Motovilov, and James Taylor for reporting this vulnerability to npm.</p>
<p>As Node.js ships with npm, releases for the active lines will be made available shortly for your convenience. Please watch the <a href="https://nodejs.org/en/blog/">Node.js news feed</a> for the following releases:</p>
<ul>
<li><strong>v0.10 (Maintenance)</strong>: <a href="http://nodejs.org/en/blog/release/v0.10.44/">Node.js v0.10.44</a> includes npm LTS v2.15.1. This is a major upgrade of npm from v1 which has previously been deprecated. No fix is being made available for npm v1, please upgrade to npm v2 as soon as possible.</li>
<li><strong>v0.12 (LTS)</strong>: <a href="http://nodejs.org/en/blog/release/v0.12.13/">Node.js v0.12.13</a> includes npm LTS v2.15.1.</li>
<li><strong>v4 (LTS &quot;Argon&quot;)</strong>: <a href="http://nodejs.org/en/blog/release/v4.4.2/">Node.js v4.4.2</a> includes npm LTS v2.15.1.</li>
<li><strong>v5 (Stable)</strong>: <a href="http://nodejs.org/en/blog/release/v5.10.0/">Node.js v5.10.0</a> includes npm v3.8.3.</li>
</ul>
<p><strong>Update:</strong> Unfortunately the version of npm that was bundled with Node.js version v0.10.44, v0.12.13 and v4.4.2 did not include the correct version string, <code>npm -v</code> reports <code>2.15.0</code>, however the code is v2.15.1.</p>
<p><strong>Note that you can upgrade your installed version of npm manually</strong> without requiring a Node.js update by using the command <code>npm install npm@2 -g</code> for npm LTS v2.15.2 or <code>npm install npm@3 -g</code> for npm v3.8.5.</p>
]]></description><link>https://nodejs.org/en/blog/vulnerability/npm-tokens-leak-march-2016</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/npm-tokens-leak-march-2016</guid><dc:creator><![CDATA[Forrest Norvell]]></dc:creator><pubDate>Thu, 31 Mar 2016 10:41:46 GMT</pubDate></item><item><title><![CDATA[OpenSSL updates, 1.0.2g and 1.0.1s]]></title><description><![CDATA[<p><strong><em>(Updates to this post, including a schedule change are included below)</em></strong></p>
<p>The OpenSSL project has <a href="https://mta.openssl.org/pipermail/openssl-announce/2016-February/000063.html">announced</a> that that they will be releasing versions 1.0.2g and 1.0.1s this week, on <strong>Tuesday the 1st of March, UTC</strong>. The releases will fix <em>&quot;several defects&quot;</em> that are labelled as <em>&quot;high&quot;</em> severity under their security policy, meaning they are:</p>
<blockquote>
<p>... issues that are of a lower risk than critical, perhaps due to affecting less common configurations, or which are less likely to be exploitable.</p>
</blockquote>
<p>Node.js v0.10 and v0.12 both use OpenSSL v1.0.1 and Node.js v4 and v5 both use OpenSSL v1.0.2 and releases from nodejs.org and some other popular distribution sources are statically compiled. Therefore, all active release lines are impacted by this update.</p>
<p>At this stage, due to embargo, it is uncertain the exact nature of these defects, nor what impact they will have on Node.js users, if any.</p>
<p>As we already had minor, non-security releases scheduled for each of our active release lines during this week and next, we will be adjusting our schedule to adapt to the OpenSSL releases depending on their impact on Node.js users.</p>
<p>We will therefore proceed as follows:</p>
<p>Within approximately 24 hours of the OpenSSL releases, our crypto team will make an impact assessment for Node.js users of the OpenSSL releases. This information may vary depending for the different active release lines and will be posted here.</p>
<p>As part of that impact assessment we will announce our release plans for each of the active release lines to take into account any impact. <strong>Please be prepared for the possibility of important updates to Node.js v0.10, v0.12, v4 and v5 soon after Tuesday, the 1st of March.</strong></p>
<h3 id="header-node-js-v0-10-maintenance">Node.js v0.10 (Maintenance)<a name="node-js-v0-10-maintenance" class="anchor" href="#node-js-v0-10-maintenance" aria-labelledby="header-node-js-v0-10-maintenance"></a></h3><p>A release of Node.js v0.10.43 has been proposed for this week, it currently contains fixes for domains and an important fix for a regression in http_parser that was introduced in v0.10.42. Details of the changes included in this release along with instructions on how to download and use a release candidate (v0.10.43-rc.1) can be found in <a href="https://github.com/nodejs/node/pull/5404">https://github.com/nodejs/node/pull/5404</a>. Node.js v0.10 users are encouraged to test the release candidate build to ensure compatibility with existing deployments.</p>
<p>If the OpenSSL 1.0.1s release contains important fixes that impact Node.js v0.10 we will endeavour to ensure that our v0.10.43 release contains the update.</p>
<h3 id="header-node-js-v0-12-lts">Node.js v0.12 (LTS)<a name="node-js-v0-12-lts" class="anchor" href="#node-js-v0-12-lts" aria-labelledby="header-node-js-v0-12-lts"></a></h3><p>A release of Node.js v0.12.11 has been proposed for this week, it currently contains fixes for domains, an important fix for a regression in http_parser that was introduced in v0.12.10, and some other minor fixes. Details of the changes included in this release along with instructions on how to download and use a release candidate (v0.12.11-rc.1) can be found in <a href="https://github.com/nodejs/node/pull/5403">https://github.com/nodejs/node/pull/5403</a>. Node.js v0.12 users are encouraged to test the release candidate build to ensure compatibility with existing deployments.</p>
<p>If the OpenSSL 1.0.1s release contains important fixes for Node.js v0.12 we will endevour to ensure that our v0.12.11 release contains the update.</p>
<h3 id="header-node-js-v4-lts-argon">Node.js v4 (LTS &quot;Argon&quot;)<a name="node-js-v4-lts-argon" class="anchor" href="#node-js-v4-lts-argon" aria-labelledby="header-node-js-v4-lts-argon"></a></h3><p>A significant update to Node.js v4 has been proposed for next week, the 8th of March. You can read about what will be included in Node.js v4.4.0 and find release candidates to test against your deployments at <a href="https://github.com/nodejs/node/pull/5301">https://github.com/nodejs/node/pull/5301</a>.</p>
<p>If the OpenSSL 1.0.2g update includes important fixes that impact Node.js v4, we may release a v4.3.2 <em>this week</em> with only the security updates in order to provide a low-risk path for Node.js v4 users.</p>
<p>If the OpenSSL 1.0.2g update <em>does not include</em> important fixes that impact Node.js v4, we will continue with our planned v4.4.0 release and also attempt to include the OpenSSL 1.0.2g upgrade. Users of Node.js v4 can then upgrade to v4.4.0 in their own time and allow for proper testing of the changes included.</p>
<h3 id="header-node-js-v5-stable">Node.js v5 (Stable)<a name="node-js-v5-stable" class="anchor" href="#node-js-v5-stable" aria-labelledby="header-node-js-v5-stable"></a></h3><p>A regular update to Node.js v5 has been proposed for this week. You can read about what will be included in the proposed Node.js v5.7.1 at <a href="https://github.com/nodejs/node/pull/5464">https://github.com/nodejs/node/pull/5464</a>. We are excluding any semver-minor changes from this release although it has fixes for some regressions </p>
<p>If the OpenSSL 1.0.2g release contains important fixes for Node.js v5, we will endevour to ensure that our v5.7.1 release contains the update.</p>
<h3 id="header-summary">Summary<a name="summary" class="anchor" href="#summary" aria-labelledby="header-summary"></a></h3><ul>
<li>Expect an impact assessment of the OpenSSL updates within 24 hours of their release</li>
<li>Expect releases of Node.js v0.10, v0.12 and v5 this week, possibly containing important security releases</li>
<li>Expect a Node.js v4.4.0 release next with the possibility of a v4.3.2 security update this week</li>
</ul>
<p>Please monitor the <strong>nodejs-sec</strong> Google Group for updates, including an impact assessment and updated details on release timing within approximately 24 hours after the OpenSSL release: <a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a></p>
<h3 id="header-contact-and-future-updates">Contact and future updates<a name="contact-and-future-updates" class="anchor" href="#contact-and-future-updates" aria-labelledby="header-contact-and-future-updates"></a></h3><p>The current Node.js security policy can be found at <a href="https://nodejs.org/en/security/">https://nodejs.org/en/security/</a>.</p>
<p>Please contact <a href="mailto:security@nodejs.org">security@nodejs.org</a> if you wish to report a vulnerability in Node.js.</p>
<p>Subscribe to the low-volume announcement-only <strong>nodejs-sec</strong> mailing list at <a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a> to stay up to date on security vulnerabilities and security-related releases of Node.js and the projects maintained in the <a href="https://github.com/nodejs">nodejs GitHub organisation</a>.</p>
<h2 id="header-_-update-2-mar-2016-_-openssl-impact-assessment"><em>(Update 2-Mar-2016)</em> OpenSSL Impact Assessment<a name="_-update-2-mar-2016-_-openssl-impact-assessment" class="anchor" href="#_-update-2-mar-2016-_-openssl-impact-assessment" aria-labelledby="header-_-update-2-mar-2016-_-openssl-impact-assessment"></a></h2><p>Our crypto team (Ben Noordhuis, Shigeki Ohtsu and Fedor Indutny) have performed an analysis of the defects addressed in this week&#39;s OpenSSL releases, <a href="https://www.openssl.org/news/openssl-1.0.2-notes.html">1.0.2g</a> and <a href="https://www.openssl.org/news/openssl-1.0.1-notes.html">1.0.1s</a>. The results of this analysis are included below.</p>
<p>The overall impact to Node.js users is low, however we will be producing new versions this week for all of our release lines containing the new versions of OpenSSL in order to provide security assurance.</p>
<ul>
<li><strong><a href="https://github.com/nodejs/node/pull/5404">v0.10.43 (Maintenance)</a></strong> will proceed as planned for this week, it includes fixes for domains and an important fix for a regression in http_parser that was introduced in v0.10.42. It will also now include an upgrade of OpenSSL to 1.0.1s. An important change will be the <strong>complete removal of SSLv2 support</strong>, see CVE-2016-0800 below.</li>
<li><strong><a href="https://github.com/nodejs/node/pull/5403">v0.12.11 (LTS)</a></strong> will proceed as planned for this week, it includes fixes for domains, an important fix for a regression in http_parser that was introduced in v0.12.10, and some other minor fixes. It will also now include an upgrade of OpenSSL to 1.0.1s. An important change will be the <strong>complete removal of SSLv2 support</strong>, see CVE-2016-0800 below.</li>
<li><strong><a href="https://github.com/nodejs/node/pull/5301">v4.4.0 (LTS Argon)</a></strong> will proceed as planned for next week and will include an upgrade of OpenSSL to 1.0.2g. We will also produce a <strong>v4.3.2</strong> this week with <em>only</em> the OpenSSL upgrade in order to provide a more conservative upgrade path for users wishing to use the new OpenSSL without having to also include all of the additional non-security fixes in v4.4.0.</li>
<li><strong><a href="https://github.com/nodejs/node/pull/5464">v5.7.1 (Stable)</a></strong> will proceed as planned for this week and will include fixes for a number of regressions introduced in v5.7.0 as well as an upgrade of OpenSSL to 1.0.2g.</li>
</ul>
<p><strong>Release announcements for each of these will be made on the <a href="http://nodejs.org/en/blog/">Node.js blog</a>.</strong></p>
<h3 id="header-cve-2016-0800-disable-sslv2-default-build-default-negotiation-and-weak-ciphers"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-0800">CVE-2016-0800</a>: Disable SSLv2 default build, default negotiation and weak ciphers<a name="cve-2016-0800-disable-sslv2-default-build-default-negotiation-and-weak-ciphers" class="anchor" href="#cve-2016-0800-disable-sslv2-default-build-default-negotiation-and-weak-ciphers" aria-labelledby="header-cve-2016-0800-disable-sslv2-default-build-default-negotiation-and-weak-ciphers"></a></h3><p><strong>Assessment:</strong></p>
<ul>
<li>Node.js v0.10 an v0.12 <strong>are unaffected</strong>, unless manually enabling SSLv2 with <code>--enable-ssl2</code></li>
<li>Node.js v4 and v5 <strong>are unaffected</strong></li>
</ul>
<p>This vulnerability has been labelled the <em><a href="https://drownattack.com/">DROWN Attack</a></em> and only impacts servers supporting SSLv2:</p>
<blockquote>
<p>Modern servers and clients use the TLS encryption protocol. However, due to misconfigurations, many servers also still support SSLv2, a 1990s-era predecessor to TLS. This support did not matter in practice, since no up-to-date clients actually use SSLv2. Therefore, even though SSLv2 is known to be badly insecure, until now, merely supporting SSLv2 was not considered a security problem, because clients never used it.</p>
<p>DROWN shows that merely supporting SSLv2 is a threat to modern servers and clients. It allows an attacker to decrypt modern TLS connections between up-to-date clients and servers by sending probes to a server that supports SSLv2 and uses the same private key.</p>
</blockquote>
<p>It is important to note that simply supporting SSLv2 on an HTTPS socket enables this vulnerability, regardless of whether clients are actively using SSLv2.</p>
<p>Since Node.js v0.10.29, SSLv2 and SSLv3 have been disabled by default. It has remained possible to enable them with the <code>--enable-ssl2</code> and <code>--enable-ssl3</code> command-line arguments to <code>node</code>. As these protocols have consistently been demonstrated to be insecure, keeping SSLv2 and SSLv3 disabled has been strongly encouraged.</p>
<p>If you are using the <code>--enable-ssl2</code> command-line argument with <code>node</code> then HTTPS servers are vulnerable to this attack. You should stop using this argument to avoid potential decryption of your secure data.</p>
<p><strong>SSLv2 support is being removed</strong></p>
<p>Given the additional barriers introduced in OpenSSL 1.0.1s to retaining SSLv2 support and the long list of known SSLv2 vulnerabilities, Node.js v0.10.43 and v0.12.11 will be completely remove SSLv2 support and the <code>--enable-ssl2</code> command-line argument.</p>
<h3 id="header-cve-2016-0705-fix-a-double-free-in-dsa-code"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-0705">CVE-2016-0705</a>: Fix a double-free in DSA code<a name="cve-2016-0705-fix-a-double-free-in-dsa-code" class="anchor" href="#cve-2016-0705-fix-a-double-free-in-dsa-code" aria-labelledby="header-cve-2016-0705-fix-a-double-free-in-dsa-code"></a></h3><p><strong>Assessment</strong>: All versions of Node.js <strong>are affected</strong>, with low severity</p>
<p>This defect allows the use of malformed DSA to be used as a potential Denial of Service (DoS) vector or for causing memory corruption. However it is likely to be very difficult to use in practice and is therefore considered low severity for Node.js users.</p>
<h3 id="header-cve-2016-0798-disable-srp-fake-user-seed-to-address-a-server-memory-leak"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-0798">CVE-2016-0798</a>: Disable SRP fake user seed to address a server memory leak<a name="cve-2016-0798-disable-srp-fake-user-seed-to-address-a-server-memory-leak" class="anchor" href="#cve-2016-0798-disable-srp-fake-user-seed-to-address-a-server-memory-leak" aria-labelledby="header-cve-2016-0798-disable-srp-fake-user-seed-to-address-a-server-memory-leak"></a></h3><p><strong>Assessment</strong>: All versions of Node.js <strong>are unaffected</strong></p>
<p>The <a href="https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol">Secure Remote Password (SRP)</a> feature of OpenSSL is not exposed via Node.js, therefore all versions are unaffected by this defect.</p>
<h3 id="header-cve-2016-0797-fix-bn_hex2bn-bn_dec2bn-null-pointer-deref-heap-corruption"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-0797">CVE-2016-0797</a>: Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption<a name="cve-2016-0797-fix-bn_hex2bn-bn_dec2bn-null-pointer-deref-heap-corruption" class="anchor" href="#cve-2016-0797-fix-bn_hex2bn-bn_dec2bn-null-pointer-deref-heap-corruption" aria-labelledby="header-cve-2016-0797-fix-bn_hex2bn-bn_dec2bn-null-pointer-deref-heap-corruption"></a></h3><p><strong>Assessment</strong>: All versions of Node.js <strong>may be affected</strong>, with low severity</p>
<p>This defect can cause memory corruption in certain very rare cases. Additionally, the <code>BN_hex2bn()</code> and <code>BN_dec2bn()</code> functions are not explicitly used in Node.js, however they are used internally by OpenSSL for some APIs. While we are unable to confirm with certainty at this stage, we believe that Node.js is not invoking the code paths that use these functions.</p>
<p>Combined with the difficulty of exploiting this defect and the likelihood that Node.js is not using APIs that require the internal use of these functions, this defect is considered to have a very low severity for Node.js users.</p>
<h3 id="header-cve-2016-0799-fix-memory-issues-in-bio_-printf-functions"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-0799">CVE-2016-0799</a>: Fix memory issues in BIO_*printf functions<a name="cve-2016-0799-fix-memory-issues-in-bio_-printf-functions" class="anchor" href="#cve-2016-0799-fix-memory-issues-in-bio_-printf-functions" aria-labelledby="header-cve-2016-0799-fix-memory-issues-in-bio_-printf-functions"></a></h3><p><strong>Assessment</strong>: All versions of Node.js <strong>are unaffected</strong></p>
<p>This defect can serve as a potential Denial of Service (DoS) vector or be used for causing memory corruption. The <code>BIO_*printf()</code> functions are used internally by OpenSSL, however the only path by which an API call by Node.js invokes these functions has a default certificate size limit, which is not changed by Node.js, that removes the possibility of exploiting this defect. Therefore we believe that Node.js is unaffected by this defect.</p>
<h3 id="header-cve-2016-0702-fix-side-channel-attack-on-modular-exponentiation"><a href="https://www.openssl.org/news/vulnerabilities.html#2016-0702">CVE-2016-0702</a>: Fix side channel attack on modular exponentiation<a name="cve-2016-0702-fix-side-channel-attack-on-modular-exponentiation" class="anchor" href="#cve-2016-0702-fix-side-channel-attack-on-modular-exponentiation" aria-labelledby="header-cve-2016-0702-fix-side-channel-attack-on-modular-exponentiation"></a></h3><p><strong>Assessment</strong>: All versions of Node.js <strong>are affected</strong>, with low severity</p>
<p>This defect has been labelled the <em><a href="https://ssrg.nicta.com.au/projects/TS/cachebleed/">CacheBleed Attack</a></em>.</p>
<p>This defect enables attackers to execute side-channel attacks leading to the potential recovery of entire RSA private keys. It only affects the Intel <a href="https://en.wikipedia.org/wiki/Sandy_Bridge">Sandy Bridge</a> (and possibly older) microarchitecture when using hyper-threading. Newer microarchitectures, including Haswell, are unaffected. Disabling hyper-threading is an option for mitigating against this attack.</p>
]]></description><link>https://nodejs.org/en/blog/vulnerability/openssl-march-2016</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/openssl-march-2016</guid><dc:creator><![CDATA[Rod Vagg]]></dc:creator><pubDate>Mon, 29 Feb 2016 02:08:06 GMT</pubDate></item><item><title><![CDATA[February 2016 Security Release Summary]]></title><description><![CDATA[<p>Two weeks ago we <a href="https://groups.google.com/d/msg/nodejs-sec/G8IA0G4uA88/So3Cw84YDwAJ">announced</a> the planned release of updates to all active release lines, v0.10, v0.12, v4 and v5, to fix HTTP related vulnerabilities and to upgrade the bundled versions of OpenSSL.</p>
<p>Upon release of the OpenSSL updates we posted an <a href="https://groups.google.com/d/msg/nodejs-sec/G8IA0G4uA88/-UB4DpG1DwAJ">impact assessment</a> for Node.js users. We noted that the updates contained only one minor change that impacted Node.js users.</p>
<p>Today we have released Node.js <a href="/en/blog/release/v0.10.42/">v0.10.42 (Maintenance)</a>, <a href="/en/blog/release/v0.12.10/">v0.12.10 (LTS)</a>, <a href="/en/blog/release/v4.3.0/">v4.3.0 &quot;Argon&quot; (LTS)</a> and <a href="/en/blog/release/v5.6.0/">v5.6.0 (Stable)</a> with fixes for the announced vulnerabilities and updates to OpenSSL.</p>
<p><strong>Please note that our LTS &quot;Argon&quot; release line has moved from v4.2.x to v4.3.x due to the security fixes enclosed. There will be no further updates to v4.2.x.</strong> Users are advised to upgrade to v4.3.0 as soon as possible.</p>
<p>For the purpose of understanding the impact that the fixed vulnerabilities have on your Node.js deployment and the urgency of the upgrades for your circumstances we are providing details below.</p>
<h3 id="header-cve-2016-2086-request-smuggling-vulnerability">CVE-2016-2086 Request Smuggling Vulnerability<a name="cve-2016-2086-request-smuggling-vulnerability" class="anchor" href="#cve-2016-2086-request-smuggling-vulnerability" aria-labelledby="header-cve-2016-2086-request-smuggling-vulnerability"></a></h3><p>Régis Leroy reported defects in Node.js that can make <a href="https://tools.ietf.org/html/rfc7230#section-9.5">request smuggling</a> attacks possible under certain circumstances. To fix these defects, HTTP header parsing in Node.js, for both requests and responses, is moving closer to the formal HTTP specification in its handling of <code>Content-Length</code>.</p>
<p>While the impact of this vulnerability is application and network dependent, it is likely to be difficult to assess whether a Node.js deployment is vulnerable to attack. We therefore recommend that all users upgrade.</p>
<ul>
<li>Versions 0.10.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v0.10.42/">v0.10.42 (Maintenance)</a>.</li>
<li>Versions 0.12.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v0.12.10/">v0.12.10 (LTS)</a>.</li>
<li>Versions 4.x, including LTS Argon, of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v4.3.0/">v4.3.0 &quot;Argon&quot; (LTS)</a>.</li>
<li>Versions 5.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v5.6.0/">v5.6.0 (Stable)</a>.</li>
</ul>
<h3 id="header-cve-2016-2216-response-splitting-vulnerability">CVE-2016-2216 Response Splitting Vulnerability<a name="cve-2016-2216-response-splitting-vulnerability" class="anchor" href="#cve-2016-2216-response-splitting-vulnerability" aria-labelledby="header-cve-2016-2216-response-splitting-vulnerability"></a></h3><p>Сковорода Никита Андреевич (Nikita Skovoroda / <a href="https://github.com/chalker">@ChALkeR</a>) and Amit Klein (of <a href="http://safebreach.com/">Safebreach</a>) separately reported ways in which HTTP header parsing in Node.js can be used to perform <a href="https://tools.ietf.org/html/rfc7230#section-9.4">response splitting</a> attacks (new-line / CRLF injection). While Node.js has been protecting against response splitting attacks by checking for CRLF characters, it is possible to compose response headers using Unicode characters that decompose to these characters, bypassing the checks previously in place.</p>
<p>To fix this defect, HTTP header parsing in Node.js, for both requests and responses, is moving closer to the formal HTTP specification. HTTP headers containing characters outside of the <a href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2">valid set for tokens</a> will be rejected. This check is performed for both requests and responses, for Node.js HTTP servers and clients.</p>
<p>It is possible that there exist Node.js applications that rely on the lax behaviour of HTTP header parsing for Node.js clients and/or servers. This change is therefore a breaking change that would normally be reserved for a semver-major version increment. However, as per our <a href="https://github.com/nodejs/LTS/">LTS</a> policy, we are introducing this change as a semver-minor in Node.js v4 (hence the move from v4.2.x to v4.3.x) and v5 and semver-patch in v0.10 and v0.12.</p>
<p>Node.js LTS releases, v0.10.42, v0.12.10 and v4.3.0 (but not v5.6.0) also include a new command-line argument that can be used to turn off this new strict header parsing. By supplying <code>--security-revert=CVE-2016-2216</code> when starting Node.js, the previous lenient HTTP header character checks will be used instead. Use of this option is not recommended and should only be used as a temporary migration tool where the implications of reverting the new behavior are fully understood.</p>
<p>We recommend that all users upgrade to receive this fix.</p>
<ul>
<li>Versions 0.10.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v0.10.42/">v0.10.42 (Maintenance)</a>.</li>
<li>Versions 0.12.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v0.12.10/">v0.12.10 (LTS)</a>.</li>
<li>Versions 4.x, including LTS Argon, of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v4.3.0/">v4.3.0 &quot;Argon&quot; (LTS)</a>.</li>
<li>Versions 5.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v5.6.0/">v5.6.0 (Stable)</a>.</li>
</ul>
<h3 id="header-openssl-upgrade-summary">OpenSSL upgrade summary<a name="openssl-upgrade-summary" class="anchor" href="#openssl-upgrade-summary" aria-labelledby="header-openssl-upgrade-summary"></a></h3><p>Node.js v0.10.42 and v0.12.10 upgrades the bundled version of OpenSSL from 1.0.1q to 1.0.1r. Full details can be found in the <a href="https://www.openssl.org/news/cl101.txt">OpenSSL 1.0.1 changelog</a>.</p>
<p>Node.js v4.3.0 and v5.6.0 upgrades the bundled version of OpenSSL from 1.0.2e to 1.0.2f. Full details can be found in the <a href="https://www.openssl.org/news/cl102.txt">OpenSSL 1.0.2 changelog</a>.</p>
<p>As per our <a href="https://groups.google.com/d/msg/nodejs-sec/G8IA0G4uA88/-UB4DpG1DwAJ">impact assessment</a>, the following applies to these releases:</p>
<p><strong>DH small subgroups (CVE-2016-0701)</strong></p>
<p>Node.js v0.10 and v0.12 are not affected by this defect.</p>
<p>Node.js v4 and v5 use the <code>SSL_OP_SINGLE_DH_USE</code> option already and are therefore not affected by this defect.</p>
<p><strong>SSLv2 doesn&#39;t block disabled ciphers (CVE-2015-3197)</strong></p>
<p>Node.js v0.10 and v0.12 disable SSLv2 by default and are not affected <em>unless</em> the <code>--enable-ssl2</code> command line argument is being used (not recommended).</p>
<p>Node.js v4 and v5 do not support SSLv2.</p>
<p><strong>An update on DHE man-in-the-middle protection (Logjam)</strong></p>
<p>Previous releases of OpenSSL (since Node.js v0.10.39, v0.12.5, v4.0.0 and v5.0.0) mitigated against <a href="https://en.wikipedia.org/wiki/Logjam_%28computer_security%29">Logjam</a> for TLS <em>clients</em> by rejecting connections from servers where Diffie-Hellman parameters were shorter than 768-bits.</p>
<p>The new OpenSSL release, for all Node.js lines, increases this to 1024-bits. The change only impacts TLS clients connecting to servers with weak DH parameter lengths.</p>
<p>Please tune in to <strong>nodejs-sec</strong> (<a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a>) to receive security announcements. An <a href="https://nodejs.org/en/feed/vulnerability.xml">Atom feed</a> is also available for security-only posts to the <a href="http://nodejs.org/en/blog/">nodejs.org blog</a>.</p>
]]></description><link>https://nodejs.org/en/blog/vulnerability/february-2016-security-releases</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/february-2016-security-releases</guid><dc:creator><![CDATA[Rod Vagg]]></dc:creator><pubDate>Tue, 09 Feb 2016 17:40:00 GMT</pubDate></item><item><title><![CDATA[OpenSSL upgrade low-severity Node.js security fixes]]></title><description><![CDATA[<p><strong><em>(Updates to this post, including a schedule change are included below)</em></strong></p>
<h3 id="header-summary">Summary<a name="summary" class="anchor" href="#summary" aria-labelledby="header-summary"></a></h3><p>The Node.js project will be releasing new versions across all of its active release lines early next week (possibly sooner, pending full impact assessment) to incorporate upstream patches from OpenSSL and some additional low-severity fixes relating to HTTP handling. Please read on for full details.</p>
<h3 id="header-openssl">OpenSSL<a name="openssl" class="anchor" href="#openssl" aria-labelledby="header-openssl"></a></h3><p>The OpenSSL project <a href="https://mta.openssl.org/pipermail/openssl-announce/2016-January/000058.html">announced</a> this week that they will be releasing versions 1.0.2f and 1.0.1r on the 28th of January, UTC. The releases will fix two security defects that are labelled as &quot;high&quot; severity under their <a href="https://www.openssl.org/policies/secpolicy.html">security policy</a>, meaning they are:</p>
<blockquote>
<p>... issues that are of a lower risk than critical, perhaps due to affecting less common configurations, or which are less likely to be exploitable.</p>
</blockquote>
<p>Node.js v0.10 and v0.12 both use OpenSSL v1.0.1 and Node.js v4 and v5 both use OpenSSL v1.0.2 and are normally statically compiled. Therefore, all active release lines are impacted by this update.</p>
<p>At this stage, due to embargo, the exact nature of these defects is uncertain as well as the impact they will have on Node.js users.</p>
<h3 id="header-low-severity-node-js-security-fixes">Low-severity Node.js security fixes<a name="low-severity-node-js-security-fixes" class="anchor" href="#low-severity-node-js-security-fixes" aria-labelledby="header-low-severity-node-js-security-fixes"></a></h3><p>In addition, we have some fixes to release relating to Node.js HTTP processing. We categorise these as low-severity and are not aware of any existing exploits leveraging the defects. Full details are embargoed until new releases are available.</p>
<p>Common Vulnerability Scoring System (CVSS) v3 Base Score:</p>
<table>
<thead>
<tr>
<th>Metric</th>
<th>Score</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Base Score:</strong></td>
<td><strong>4.8 (Medium)</strong></td>
</tr>
<tr>
<td><strong>Base Vector:</strong></td>
<td><a href="https://www.first.org/cvss/calculator/3.0#CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N">CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N</a></td>
</tr>
<tr>
<td><strong>Attack Vector:</strong></td>
<td>Network (AV:N)</td>
</tr>
<tr>
<td><strong>Attack Complexity:</strong></td>
<td>High (AC:H)</td>
</tr>
<tr>
<td><strong>Privileges Required:</strong></td>
<td>None (PR:N)</td>
</tr>
<tr>
<td><strong>User Interaction:</strong></td>
<td>None (UI:N)</td>
</tr>
<tr>
<td><strong>Scope of Impact:</strong></td>
<td>Unchanged (S:U)</td>
</tr>
<tr>
<td><strong>Confidentiality Impact:</strong></td>
<td>Low (C:L)</td>
</tr>
<tr>
<td><strong>Integrity Impact:</strong></td>
<td>Low (I:L)</td>
</tr>
<tr>
<td><strong>Availability Impact:</strong></td>
<td>None (A:N)</td>
</tr>
</tbody>
</table>
<p>Refer to the <a href="https://www.first.org/cvss/specification-document">CVSS v3 Specification</a> for details on the meanings and application of the vector components.</p>
<h3 id="header-impact">Impact<a name="impact" class="anchor" href="#impact" aria-labelledby="header-impact"></a></h3><p>Both the OpenSSL updates and the Node.js fixes affect all actively maintained release lines of Node.js.</p>
<ul>
<li>Versions 0.10.x of Node.js <strong>are affected</strong>.</li>
<li>Versions 0.12.x of Node.js <strong>are affected</strong>.</li>
<li>Versions 4.x, including LTS Argon, of Node.js <strong>are affected</strong>.</li>
<li>Versions 5.x of Node.js <strong>are affected</strong>.</li>
</ul>
<h3 id="header-release-timing">Release timing<a name="release-timing" class="anchor" href="#release-timing" aria-labelledby="header-release-timing"></a></h3><p>As the OpenSSL release is planned for late in the week, we are currently planning on deferring Node.js releases until early next week due to the complexity of the upgrade process and a preference for not releasing security fixes at the end of the work-week or on the weekend.</p>
<p>Releases will be available at, or shortly after, <strong>Monday the 1st of February, 11pm UTC</strong> <em>(Monday the 1st of February, 3pm Pacific Time)</em> along with disclosure of the details defects to allow for complete impact assessment by users.</p>
<p>However, when details of the OpenSSL defects are released on the 28th, our crypto team will be making a more detailed assessment on the likely severity for Node.js users. In the event that the team determines that the fixes are critical in nature for Node.js users <strong>we may choose to expedite releases for Friday or Saturday</strong> in order to ensure that users have the ability to protect their deployments against a disclosed vulnerability.</p>
<p>Please monitor the <strong>nodejs-sec</strong> Google Group for updates, including a decision within 24 hours after the OpenSSL release regarding release timing, and full details of the defects upon eventual release: <a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a></p>
<h3 id="header-contact-and-future-updates">Contact and future updates<a name="contact-and-future-updates" class="anchor" href="#contact-and-future-updates" aria-labelledby="header-contact-and-future-updates"></a></h3><p>The current Node.js security policy can be found at <a href="https://nodejs.org/en/security/">https://nodejs.org/en/security/</a>.</p>
<p>Please contact <a href="mailto:security@nodejs.org">security@nodejs.org</a> if you wish to report a vulnerability in Node.js.</p>
<p>Subscribe to the low-volume announcement-only <strong>nodejs-sec</strong> mailing list at <a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a> to stay up to date on security vulnerabilities and security-related releases of Node.js and the projects maintained in the <a href="https://github.com/nodejs">nodejs GitHub organisation</a>.</p>
<h2 id="header-_-update-29-jan-2016-_-openssl-impact-assessment"><em>(Update 29-Jan-2016)</em> OpenSSL Impact Assessment<a name="_-update-29-jan-2016-_-openssl-impact-assessment" class="anchor" href="#_-update-29-jan-2016-_-openssl-impact-assessment" aria-labelledby="header-_-update-29-jan-2016-_-openssl-impact-assessment"></a></h2><p>OpenSSL versions 1.0.1r and 1.0.21 have been released, the announcement can be found here: <a href="https://mta.openssl.org/pipermail/openssl-announce/2016-January/000061.html">https://mta.openssl.org/pipermail/openssl-announce/2016-January/000061.html</a></p>
<p>Our team has made an assessment of the impact of the disclosed defects and concluded that there is no urgency in releasing patched versions of Node.js in response to this release. Therefore, we will be proceeding as planned and attempt to release new versions of each of our active release lines on or after
<strong>Monday the 1st of February, 11pm UTC</strong> <em>(Monday the 1st of February, 3pm Pacific Time)</em>. Please note that this is simply an approximation of release timing. Please tune in to <strong>nodejs-sec</strong> (<a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a>) where we will announce the availability of releases.</p>
<h3 id="header-details">Details<a name="details" class="anchor" href="#details" aria-labelledby="header-details"></a></h3><p><strong>DH small subgroups (CVE-2016-0701)</strong></p>
<p>Node.js v0.10 and v0.12 are not affected by this defect.</p>
<p>Node.js v4 and v5 use the <code>SSL_OP_SINGLE_DH_USE</code> option already and are therefore not affected by this defect.</p>
<p><strong>SSLv2 doesn&#39;t block disabled ciphers (CVE-2015-3197)</strong></p>
<p>Node.js v0.10 and v0.12 disable SSLv2 by default and are not affected <em>unless</em> the <code>--enable-ssl2</code> command line argument is being used (not recommended).</p>
<p>Node.js v4 and v5 do not support SSLv2.</p>
<p><strong>An update on DHE man-in-the-middle protection (Logjam)</strong></p>
<p>Previous releases of OpenSSL (since Node.js v0.10.39, v0.12.5, v4.0.0 and v5.0.0) mitigated against <a href="https://en.wikipedia.org/wiki/Logjam_%28computer_security%29">Logjam</a> for TLS <em>clients</em> by rejecting connections from servers where Diffie-Hellman parameters were shorter than 768-bits.</p>
<p>The new OpenSSL release, for all Node.js lines, increases this to 1024-bits. The change only impacts TLS clients connecting to servers with weak DH parameter lengths.</p>
<p><a name="_-update-29-jan-2016-_-openssl-impact-assessment"></a></p>
<h2 id="header-_-update-30-jan-2016-_-release-postponement"><em>(Update 30-Jan-2016)</em> Release postponement<a name="_-update-30-jan-2016-_-release-postponement" class="anchor" href="#_-update-30-jan-2016-_-release-postponement" aria-labelledby="header-_-update-30-jan-2016-_-release-postponement"></a></h2><p>The announced security releases will not go ahead for the 1st of February as previously announced. Instead, our new target for release will be on or shortly after <strong>Tuesday, the 9th of February, 11pm UTC</strong> <em>(Tuesday, the 9th of February, 3pm Pacific Time)</em>.</p>
<p>The planned fixes include a backward-incompatible change that, under normal circumstances, would be deferred until the next major-version of Node.js, v6. However, because the fix addresses a security concern that exists across all release lines (including our LTS lines: v4, v0.12 and v0.10) we require the additional time to further review the changes and consider how best to achieve minimal impact to users.</p>
<p>We apologise for any inconvenience this schedule change may cause.</p>
<p>Please tune in to <strong>nodejs-sec</strong> (<a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a>) to be notified of any further updates.</p>
]]></description><link>https://nodejs.org/en/blog/vulnerability/openssl-and-low-severity-fixes-jan-2016</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/openssl-and-low-severity-fixes-jan-2016</guid><dc:creator><![CDATA[Rod Vagg]]></dc:creator><pubDate>Wed, 27 Jan 2016 11:34:41 GMT</pubDate></item><item><title><![CDATA[December Security Release Summary]]></title><description><![CDATA[<p>Last week we <a href="https://groups.google.com/d/msg/nodejs-sec/Zf7Nxtg230E/eX4UCWf0BAAJ">announced</a> the planned release of patch updates to the v0.12.x, v4.x and v5.x lines to fix two vulnerabilities. That was further amended by the <a href="https://mta.openssl.org/pipermail/openssl-announce/2015-November/000045.html">announcement</a> of OpenSSL updates with fixes for vulnerabilities labelled <em>medium</em> severity. The OpenSSL update impacts all active release lines, including v0.10.x.</p>
<p>Today we have released Node.js <a href="/en/blog/release/v0.10.41/">v0.10.41 (Maintenance)</a>, <a href="/en/blog/release/v0.12.9/">v0.12.9 (LTS)</a>, <a href="/en/blog/release/v4.2.3/">v4.2.3 &quot;Argon&quot; (LTS)</a> and <a href="/en/blog/release/v5.1.1/">v5.1.1 (Stable)</a> with fixes for the announced vulnerabilities and updates to OpenSSL.</p>
<p>For the purpose of understanding the impact that the fixed vulnerabilities have on your Node.js deployment and the urgency of the upgrades for your circumstances we are providing details below.</p>
<h3 id="header-cve-2015-8027-denial-of-service-vulnerability">CVE-2015-8027 Denial of Service Vulnerability<a name="cve-2015-8027-denial-of-service-vulnerability" class="anchor" href="#cve-2015-8027-denial-of-service-vulnerability" aria-labelledby="header-cve-2015-8027-denial-of-service-vulnerability"></a></h3><p>This critical denial of service (DoS) vulnerability impacts all versions of v0.12.x through to v5.x, inclusive. The vulnerability was discovered by Node.js core team member Fedor Indutny and relates to HTTP pipelining. Under certain conditions an HTTP socket may no longer have a parser associated with it but a pipelined request can trigger a pause or resume on the non-existent parser thereby causing an <code>uncaughtException</code> to be thrown. As these conditions can be created by an external attacker and cause a Node.js service to be shut down we consider this a critical vulnerability. It is recommended that users of impacted versions of Node.js exposing HTTP services upgrade to the appropriate patched versions as soon as practical.</p>
<ul>
<li>Versions 0.10.x of Node.js are not affected.</li>
<li>Versions 0.12.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v0.12.9/">v0.12.9 (LTS)</a>.</li>
<li>Versions 4.x, including LTS Argon, of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v4.2.3/">v4.2.3 &quot;Argon&quot; (LTS)</a>.</li>
<li>Versions 5.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v5.1.1/">v5.1.1 (Stable)</a>.</li>
</ul>
<h3 id="header-cve-2015-6764-v8-out-of-bounds-access-vulnerability">CVE-2015-6764 V8 Out-of-bounds Access Vulnerability<a name="cve-2015-6764-v8-out-of-bounds-access-vulnerability" class="anchor" href="#cve-2015-6764-v8-out-of-bounds-access-vulnerability" aria-labelledby="header-cve-2015-6764-v8-out-of-bounds-access-vulnerability"></a></h3><p>A bug was discovered in V8&#39;s implementation of <code>JSON.stringify()</code> that can result in out-of-bounds reads on arrays. The patch was included in this week&#39;s <a href="http://googlechromereleases.blogspot.nl/2015/12/stable-channel-update.html">update of Chrome Stable</a>. While this bug is high severity for browsers, it is considered lower risk for Node.js users as it requires the execution of third-party JavaScript within an application in order to be exploitable.</p>
<p>Node.js users who expose services that process untrusted user-supplied JavaScript are at obvious risk. However, we recommend that all users of impacted versions of Node.js upgrade to the appropriate patched version in order to protect against malicious third-party JavaScript that may be executed within a Node.js process by other means.</p>
<ul>
<li>Versions 0.10.x of Node.js are not affected.</li>
<li>Versions 0.12.x of Node.js are not affected.</li>
<li>Versions 4.x, including LTS Argon, of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v4.2.3/">v4.2.3 &quot;Argon&quot; (LTS)</a>.</li>
<li>Versions 5.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v5.1.1/">v5.1.1 (Stable)</a>.</li>
</ul>
<h3 id="header-cve-2015-3193-openssl-bn_mod_exp-may-produce-incorrect-results-on-x86_64">CVE-2015-3193 OpenSSL BN_mod_exp may produce incorrect results on x86_64<a name="cve-2015-3193-openssl-bn_mod_exp-may-produce-incorrect-results-on-x86_64" class="anchor" href="#cve-2015-3193-openssl-bn_mod_exp-may-produce-incorrect-results-on-x86_64" aria-labelledby="header-cve-2015-3193-openssl-bn_mod_exp-may-produce-incorrect-results-on-x86_64"></a></h3><p>A bug exists in OpenSSL v1.0.2 in the <a href="https://en.wikipedia.org/wiki/Exponentiation_by_squaring#Montgomery.27s_ladder_technique">Montgomery squaring</a> procedure on the x64 architecture that expose potential attack vectors. Attacks against RSA and DSA are considered possible but with a very high degree of difficulty. Attacks against DHE key exchange is considered feasible but difficult. EC algorithms are not vulnerable. Node.js TLS servers using DHE key exchange are considered at highest risk although it is believed that Node.js&#39; existing use of <code>SSL_OP_SINGLE_DH_USE</code> may make <a href="https://blog.fuzzing-project.org/31-Fuzzing-Math-miscalculations-in-OpenSSLs-BN_mod_exp-CVE-2015-3193.html">DHE attacks impractical</a>. Details are available at <a href="http://openssl.org/news/secadv/20151203.txt">http://openssl.org/news/secadv/20151203.txt</a>.</p>
<p>OpenSSL v1.0.2 is used in Node.js v4.x LTS and v5.x. It is strongly recommended that Node.js users exposing TLS servers upgrade to patched versions as soon as practical.</p>
<ul>
<li>Versions 0.10.x of Node.js are not affected.</li>
<li>Versions 0.12.x of Node.js are not affected.</li>
<li>Versions 4.x, including LTS Argon, of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v4.2.3/">v4.2.3 &quot;Argon&quot; (LTS)</a>.</li>
<li>Versions 5.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v5.1.1/">v5.1.1 (Stable)</a>.</li>
</ul>
<h3 id="header-cve-2015-3194-openssl-certificate-verify-crash-with-missing-pss-parameter">CVE-2015-3194 OpenSSL Certificate verify crash with missing PSS parameter<a name="cve-2015-3194-openssl-certificate-verify-crash-with-missing-pss-parameter" class="anchor" href="#cve-2015-3194-openssl-certificate-verify-crash-with-missing-pss-parameter" aria-labelledby="header-cve-2015-3194-openssl-certificate-verify-crash-with-missing-pss-parameter"></a></h3><p>A bug exists in OpenSSL v1.0.1 and v1.0.2 that may cause a crash during certificate verification procedures when supplied with a malformed ASN.1 signature using the RSA PSS algorithm. This may be used as a the basis of a denial of service (DoS) attack against Node.js TLS servers using client authentication. Node.js TLS clients are also impacted if supplied with malformed certificates for verification. Details are available at <a href="http://openssl.org/news/secadv/20151203.txt">http://openssl.org/news/secadv/20151203.txt</a>.</p>
<p>OpenSSL v1.0.0 is used in Node.js v0.10.x and v0.12.x. OpenSSL v1.0.2 is used in Node.js v4.x LTS and v5.x. It is strongly recommended that Node.js users employing either TLS client or server code upgrade as soon as practical.</p>
<ul>
<li>Versions 0.10.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v0.10.41/">v0.10.41 (Maintenance)</a>.</li>
<li>Versions 0.12.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v0.12.9/">v0.12.9 (LTS)</a>.</li>
<li>Versions 4.x, including LTS Argon, of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v4.2.3/">v4.2.3 &quot;Argon&quot; (LTS)</a>.</li>
<li>Versions 5.x of Node.js are <strong>vulnerable</strong>, please upgrade to <a href="/en/blog/release/v5.1.1/">v5.1.1 (Stable)</a>.</li>
</ul>
<p><strong>Note:</strong> Node.js users are not considered vulnerable to the two additional announced OpenSSL vulnerabilities: CVE-2015-3195 &quot;X509_ATTRIBUTE memory leak&quot; and CVE-2015-3196 &quot;Race condition handling PSK identify hint&quot;. However, fixes for these bugs are included with the new versions of OpenSSL bundled with the newly patched versions of Node.js.</p>
]]></description><link>https://nodejs.org/en/blog/vulnerability/december-2015-security-releases</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/december-2015-security-releases</guid><dc:creator><![CDATA[Rod Vagg]]></dc:creator><pubDate>Fri, 04 Dec 2015 03:05:00 GMT</pubDate></item><item><title><![CDATA[December Security Release Schedule Update]]></title><description><![CDATA[<p>The OpenSSL project <a href="https://mta.openssl.org/pipermail/openssl-announce/2015-November/000045.html">announced</a> today that they will be releasing security updates for versions 1.0.2, 1.0.1, 1.0.0 and 0.9.8 on the 3rd of December UTC. The updates will fix a number of security defects, the highest of which is classified as &quot;moderate&quot; severity according to their <a href="https://www.openssl.org/policies/secpolicy.html">severity scale</a>:</p>
<blockquote>
<p>MODERATE Severity. This includes issues like crashes in client applications, flaws in protocols that are less commonly used (such as DTLS), and local flaws. These will in general be kept private until the next release, and that release will be scheduled so that it can roll up several such flaws at one time.</p>
</blockquote>
<p>Node.js versions v0.10.x and v0.12.x depend on OpenSSL v1.0.1 and versions v4.x (LTS Argon) and v5.x depend on OpenSSL v1.0.2. As the Node.js build process statically links OpenSSL into binaries, we will be required to release patch-level updates to all of our actively supported versions to include the upstream fixes. While we are unaware of the exact nature of the OpenSSL vulnerabilities being fixed, we must consider it likely that Node.js releases will be required in order to protect users.</p>
<p>Since the OpenSSL release schedule is two days after our <a href="https://groups.google.com/forum/#!topic/nodejs-sec/Zf7Nxtg230E">announced updates</a> for v0.12.x, v4.x and v5.x, we have decided to <strong>postpone our security releases to coincide with OpenSSL release availability</strong>. We will also be <strong>including v0.10 in our set of releases</strong>.</p>
<p>Therefore, we are moving our planned security releases for Node.js from Wednesday the 2nd of December 2015, UTC to the <strong>Friday, the 4th of December 2015, UTC</strong> <em>(Thursday the 3rd of December US time)</em>. We understand that the timing of this during the work-week is unfortunate but we must take into account the possibility of introducing a vulnerability gap between disclosure of OpenSSL vulnerabilities and patched releases by Node.js and therefore must respond as quickly as practical. Please be aware that patching and testing of OpenSSL updates is a non-trivial exercise and there will be significant delay after the OpenSSL releases before we can be confident that Node.js builds are stable and suitable for release.</p>
<p>An updated summary of the release inclusions is available below:</p>
<hr>
<h2 id="header-cve-2015-8027-denial-of-service-vulnerability">CVE-2015-8027 Denial of Service Vulnerability<a name="cve-2015-8027-denial-of-service-vulnerability" class="anchor" href="#cve-2015-8027-denial-of-service-vulnerability" aria-labelledby="header-cve-2015-8027-denial-of-service-vulnerability"></a></h2><p>A bug exists in Node.js, all versions of v0.12.x through to v5.x inclusive, whereby an external attacker can cause a denial of service. The severity of this issue is high and users of the affected versions should plan to upgrade when a fix is made available.</p>
<ul>
<li>Versions 0.10.x of Node.js are <strong><em>not affected</em></strong>.</li>
<li>Versions 0.12.x of Node.js are <strong><em>vulnerable</em></strong>.</li>
<li>Versions 4.x, including LTS Argon, of Node.js are <strong><em>vulnerable</em></strong>.</li>
<li>Versions 5.x of Node.js are <strong><em>vulnerable</em></strong>.</li>
</ul>
<h2 id="header-cve-2015-6764-v8-out-of-bounds-access-vulnerability">CVE-2015-6764 V8 Out-of-bounds Access Vulnerability<a name="cve-2015-6764-v8-out-of-bounds-access-vulnerability" class="anchor" href="#cve-2015-6764-v8-out-of-bounds-access-vulnerability" aria-labelledby="header-cve-2015-6764-v8-out-of-bounds-access-vulnerability"></a></h2><p>An additional bug exists in Node.js, all versions of v4.x and v5.x, whereby an attacker may be able to trigger an out-of-bounds access and/or denial of service if user-supplied JavaScript can be executed by an application. The severity of this issue is considered medium for Node.js users, but only under circumstances where an attacker may cause user-supplied JavaScript to be executed within a Node.js application. Fixes will be shipped for the v4.x and v5.x release lines along with fixes for CVE-2015-8027.</p>
<ul>
<li>Versions 0.10.x of Node.js are <strong><em>not affected</em></strong>.</li>
<li>Versions 0.12.x of Node.js are <strong><em>not affected</em></strong>.</li>
<li>Versions 4.x, including LTS Argon, of Node.js are <strong><em>vulnerable</em></strong>.</li>
<li>Versions 5.x of Node.js are <strong><em>vulnerable</em></strong>.</li>
</ul>
<h2 id="header-openssl-moderate-severity-update">OpenSSL Moderate Severity Update<a name="openssl-moderate-severity-update" class="anchor" href="#openssl-moderate-severity-update" aria-labelledby="header-openssl-moderate-severity-update"></a></h2><p>The OpenSSL project has <a href="https://mta.openssl.org/pipermail/openssl-announce/2015-November/000045.html">announced</a> a set of releases which contain fixes for multiple vulnerabilities, the highest severity being labelled &quot;moderate&quot;. Consult the <a href="https://www.openssl.org/policies/secpolicy.html">OpenSSL security policy</a> for details on this definition. New releases of all actively maintained Node.js release lines are required in order to protect users against potential vulnerabilities in their applications. We do not have details on the nature of any of the included vulnerabilities or their fixes, users should plan for upgrades as soon as practical.</p>
<ul>
<li>Versions 0.10.x of Node.js <strong><em>may be vulnerable</em></strong>.</li>
<li>Versions 0.12.x of Node.js <strong><em>may be vulnerable</em></strong>.</li>
<li>Versions 4.x, including LTS Argon, of Node.js <strong><em>may be vulnerable</em></strong>.</li>
<li>Versions 5.x of Node.js <strong><em>may be vulnerable</em></strong>.</li>
</ul>
]]></description><link>https://nodejs.org/en/blog/vulnerability/december-2015-security-release-update</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/december-2015-security-release-update</guid><dc:creator><![CDATA[Rod Vagg]]></dc:creator><pubDate>Tue, 01 Dec 2015 01:13:57 GMT</pubDate></item><item><title><![CDATA[CVE-2015-8027 Denial of Service Vulnerability / CVE-2015-6764 V8 Out-of-bounds Access Vulnerability]]></title><description><![CDATA[<p>This announcement is for:</p>
<ul>
<li>CVE-2015-8027: a high-impact denial of service vulnerability</li>
<li>CVE-2015-6764: a low-impact V8 out-of-bounds access vulnerability</li>
</ul>
<h2 id="header-cve-2015-8027-denial-of-service-vulnerability">CVE-2015-8027 Denial of Service Vulnerability<a name="cve-2015-8027-denial-of-service-vulnerability" class="anchor" href="#cve-2015-8027-denial-of-service-vulnerability" aria-labelledby="header-cve-2015-8027-denial-of-service-vulnerability"></a></h2><h3 id="header-description-and-cvss-score">Description and CVSS Score<a name="description-and-cvss-score" class="anchor" href="#description-and-cvss-score" aria-labelledby="header-description-and-cvss-score"></a></h3><p>A bug exists in Node.js, all versions of v0.12.x through to v5.x inclusive, whereby an external attacker can cause a denial of service. The severity of this issue is high (see CVSS scoring below) and users of the affected versions should plan to upgrade when a fix is made available.</p>
<ul>
<li>Versions 0.10.x of Node.js are <strong><em>not affected</em></strong>.</li>
<li>Versions 0.12.x of Node.js are <strong><em>vulnerable</em></strong>.</li>
<li>Versions 4.x, including LTS Argon, of Node.js are <strong><em>vulnerable</em></strong>.</li>
<li>Versions 5.x of Node.js are <strong><em>vulnerable</em></strong>.</li>
</ul>
<p>Full details of this vulnerability are embargoed until new releases are available on <strong>Wednesday the 2nd of December 2015, UTC</strong> <em>(Tuesday the 1st of December US time)</em>.</p>
<p>Common Vulnerability Scoring System (CVSS) v3 Base Score:</p>
<table>
<thead>
<tr>
<th>Metric</th>
<th>Score</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Base Score:</strong></td>
<td><strong>7.5 (High)</strong></td>
</tr>
<tr>
<td><strong>Base Vector:</strong></td>
<td><a href="https://www.first.org/cvss/calculator/3.0#CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H">CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
<tr>
<td><strong>Attack Vector:</strong></td>
<td>Network (AV:N)</td>
</tr>
<tr>
<td><strong>Attack Complexity:</strong></td>
<td>Low (AC:L)</td>
</tr>
<tr>
<td><strong>Privileges Required:</strong></td>
<td>None (PR:N)</td>
</tr>
<tr>
<td><strong>User Interaction:</strong></td>
<td>None (UI:N)</td>
</tr>
<tr>
<td><strong>Scope of Impact:</strong></td>
<td>Unchanged (S:U)</td>
</tr>
<tr>
<td><strong>Confidentiality Impact:</strong></td>
<td>None (C:N)</td>
</tr>
<tr>
<td><strong>Integrity Impact:</strong></td>
<td>None (I:N)</td>
</tr>
<tr>
<td><strong>Availability Impact:</strong></td>
<td>High (A:H)</td>
</tr>
</tbody>
</table>
<p>Complete CVSS v3 Vector: <a href="https://www.first.org/cvss/calculator/3.0#CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H/E:F/RL:O/RC:R/CR:L/IR:L/AR:H/MAV:N/MAC:L/MPR:N/MUI:N/MS:U/MC:N/MI:N/MA:H">CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H/E:F/RL:O/RC:R/CR:L/IR:L/AR:H/MAV:N/MAC:L/MPR:N/MUI:N/MS:U/MC:N/MI:N/MA:H</a>. Refer to the <a href="https://www.first.org/cvss/specification-document">CVSS v3 Specification</a> for details on the meanings and application of the vector components.</p>
<p>CVE-2015-8027 is listed on the <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8027">MITRE CVE dictionary</a> and <a href="https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-8027">NIST NVD</a>.</p>
<h2 id="header-cve-2015-6764-v8-out-of-bounds-access-vulnerability">CVE-2015-6764 V8 Out-of-bounds Access Vulnerability<a name="cve-2015-6764-v8-out-of-bounds-access-vulnerability" class="anchor" href="#cve-2015-6764-v8-out-of-bounds-access-vulnerability" aria-labelledby="header-cve-2015-6764-v8-out-of-bounds-access-vulnerability"></a></h2><h3 id="header-description-and-cvss-score">Description and CVSS Score<a name="description-and-cvss-score" class="anchor" href="#description-and-cvss-score" aria-labelledby="header-description-and-cvss-score"></a></h3><p>An additional bug exists in Node.js, all versions of v4.x and v5.x, whereby an attacker may be able to trigger an out-of-bounds access and/or denial of service if user-supplied JavaScript can be executed by an application. The severity of this issue is considered medium for Node.js users (see CVSS scoring below), but only under circumstances where an attacker may cause user-supplied JavaScript to be executed within a Node.js application. Fixes will be shipped for the v4.x and v5.x release lines along with fixes for CVE-2015-8027.</p>
<ul>
<li>Versions 0.10.x of Node.js are <strong><em>not affected</em></strong>.</li>
<li>Versions 0.12.x of Node.js are <strong><em>not affected</em></strong>.</li>
<li>Versions 4.x, including LTS Argon, of Node.js are <strong><em>vulnerable</em></strong>.</li>
<li>Versions 5.x of Node.js are <strong><em>vulnerable</em></strong>.</li>
</ul>
<p>Full details of this vulnerability are embargoed until new releases are available on <strong>Wednesday the 2nd of December 2015, UTC</strong> <em>(Tuesday the 1st of December US time)</em>.</p>
<p>Common Vulnerability Scoring System (CVSS) v3 Base Score:</p>
<table>
<thead>
<tr>
<th>Metric</th>
<th>Score</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Base Score:</strong></td>
<td><strong>4.4 (Medium)</strong></td>
</tr>
<tr>
<td><strong>Base Vector:</strong></td>
<td><a href="https://www.first.org/cvss/calculator/3.0#CVSS:3.0/AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H">CVSS:3.0/AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H</a></td>
</tr>
<tr>
<td><strong>Attack Vector:</strong></td>
<td>Network (AV:N)</td>
</tr>
<tr>
<td><strong>Attack Complexity:</strong></td>
<td>Medium (AC:H)</td>
</tr>
<tr>
<td><strong>Privileges Required:</strong></td>
<td>High (PR:H)</td>
</tr>
<tr>
<td><strong>User Interaction:</strong></td>
<td>None (UI:N)</td>
</tr>
<tr>
<td><strong>Scope of Impact:</strong></td>
<td>Unchanged (S:U)</td>
</tr>
<tr>
<td><strong>Confidentiality Impact:</strong></td>
<td>None (C:N)</td>
</tr>
<tr>
<td><strong>Integrity Impact:</strong></td>
<td>None (I:N)</td>
</tr>
<tr>
<td><strong>Availability Impact:</strong></td>
<td>High (A:H)</td>
</tr>
</tbody>
</table>
<p>Complete CVSS v3 Vector: <a href="https://www.first.org/cvss/calculator/3.0#CVSS:3.0/AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H/E:U/RL:O/RC:R/CR:L/IR:L/AR:M/MAV:N/MAC:H/MPR:N/MUI:N/MS:U/MC:N/MI:N/MA:H">CVSS:3.0/AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H/E:U/RL:O/RC:R/CR:L/IR:L/AR:M/MAV:N/MAC:H/MPR:N/MUI:N/MS:U/MC:N/MI:N/MA:H</a>. Refer to the <a href="https://www.first.org/cvss/specification-document">CVSS v3 Specification</a> for details on the meanings and application of the vector components.</p>
<p>CVE-2015-6764 is listed on the <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-6764">MITRE CVE dictionary</a> and <a href="https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-6764">NIST NVD</a>.</p>
<h2 id="header-action-and-updates">Action and updates<a name="action-and-updates" class="anchor" href="#action-and-updates" aria-labelledby="header-action-and-updates"></a></h2><p>New releases of v0.12.x, v4.x and v5.x on <strong>Wednesday the 2nd of December 2015, UTC</strong> will be made available with appropriate fixes for CVE-2015-8027 and CVE-2015-6764 (for v4.x and v5.x only) along with disclosure of the details of the bug to allow for complete impact assessment by users.</p>
<h2 id="header-contact-and-future-updates">Contact and future updates<a name="contact-and-future-updates" class="anchor" href="#contact-and-future-updates" aria-labelledby="header-contact-and-future-updates"></a></h2><p>Please contact security@nodejs.org if you wish to report a vulnerability in Node.js.</p>
<p>Please subscribe to the low-volume announcement-only <strong>nodejs-sec</strong> mailing list at <a href="https://groups.google.com/forum/#!forum/nodejs-sec">https://groups.google.com/forum/#!forum/nodejs-sec</a> to stay up to date with security vulnerabilities in Node.js and the projects maintained in the <strong>nodejs</strong> <a href="http://github.com/nodejs/">GitHub organisation</a>.</p>
]]></description><link>https://nodejs.org/en/blog/vulnerability/cve-2015-8027_cve-2015-6764</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/cve-2015-8027_cve-2015-6764</guid><dc:creator><![CDATA[Rod Vagg]]></dc:creator><pubDate>Wed, 25 Nov 2015 22:06:05 GMT</pubDate></item><item><title><![CDATA[V8 Memory Corruption and Stack Overflow (fixed in Node v0.8.28 and v0.10.30)]]></title><description><![CDATA[<p>A memory corruption vulnerability, which results in a denial-of-service, was
identified in the versions of V8 that ship with Node.js 0.8 and 0.10. In
certain circumstances, a particularly deep recursive workload that may trigger
a GC and receive an interrupt may overflow the stack and result in a
segmentation fault. For instance, if your work load involves successive
<code>JSON.parse</code> calls and the parsed objects are significantly deep, you may
experience the process aborting while parsing.</p>
<p>This issue was identified by Tom Steele of <a href="https://liftsecurity.io/">^Lift
Security</a> and Fedor Indunty, Node.js Core Team member
worked closely with the V8 team to find our resolution. </p>
<p>The V8 issue is described here <a href="https://codereview.chromium.org/339883002">https://codereview.chromium.org/339883002</a></p>
<p>It has landed in the Node repository here:
<a href="https://github.com/joyent/node/commit/530af9cb8e700e7596b3ec812bad123c9fa06356">https://github.com/joyent/node/commit/530af9cb8e700e7596b3ec812bad123c9fa06356</a></p>
<p>And has been released in the following versions:</p>
<ul>
<li><a href="https://nodejs.org/dist/v0.10.30">v0.10.30</a></li>
<li><a href="https://nodejs.org/dist/v0.8.28">v0.8.28</a></li>
</ul>
<h3 id="header-the-fix">The Fix<a name="the-fix" class="anchor" href="#the-fix" aria-labelledby="header-the-fix"></a></h3><p>The backport of the fix for Node.js is</p>
<pre><code>diff --git a/deps/v8/src/isolate.h b/deps/v8/src/isolate.h
index b90191d..2769ca7 100644
--- a/deps/v8/src/isolate.h
+++ b/deps/v8/src/isolate.h
@@ -1392,14 +1392,9 @@ class StackLimitCheck BASE_EMBEDDED {
  public:
   explicit StackLimitCheck(Isolate* isolate) : isolate_(isolate) { }

-  bool HasOverflowed() const {
+  inline bool HasOverflowed() const {
     StackGuard* stack_guard = isolate_-&gt;stack_guard();
-    // Stack has overflowed in C++ code only if stack pointer exceeds the C++
-    // stack guard and the limits are not set to interrupt values.
-    // TODO(214): Stack overflows are ignored if a interrupt is pending. This
-    // code should probably always use the initial C++ limit.
-    return (reinterpret_cast&lt;uintptr_t&gt;(this) &lt; stack_guard-&gt;climit()) &amp;&amp;
-           stack_guard-&gt;IsStackOverflow();
+    return reinterpret_cast&lt;uintptr_t&gt;(this) &lt; stack_guard-&gt;real_climit();
   }
  private:
   Isolate* isolate_;
</code></pre><h3 id="header-remediation">Remediation<a name="remediation" class="anchor" href="#remediation" aria-labelledby="header-remediation"></a></h3><p>The best course of action is to patch or upgrade Node.js.</p>
<h3 id="header-mitigation">Mitigation<a name="mitigation" class="anchor" href="#mitigation" aria-labelledby="header-mitigation"></a></h3><p>To mitigate against deep JSON parsing you can limit the size of the string you
parse against, or ban clients who trigger a <code>RangeError</code> for parsing JSON.</p>
<p>There is no specific maximum size of a JSON string, though keeping the max to
the size of your known message bodies is suggested. If your message bodies
cannot be over 20K, there&#39;s no reason to accept 1MB bodies.</p>
<p>For web frameworks that do automatic JSON parsing, you may need to configure
the routes that accept JSON payloads to have a maximum body size.</p>
<ul>
<li><a href="http://expressjs.com">expressjs</a> and <a href="http://krakenjs.com">krakenjs</a> used with the <a href="https://github.com/expressjs/body-parser#bodyparserjsonoptions">body-parser</a> plugin accepts a <code>limit</code> parameter in your JSON config</li>
<li><a href="http://hapijs.com">Hapi.js</a> has <code>payload.maxBytes</code> <a href="https://github.com/spumko/hapi/blob/master/docs/Reference.md">https://github.com/spumko/hapi/blob/master/docs/Reference.md</a></li>
<li><a href="http://mcavage.me/node-restify/#Bundled-Plugins">restify</a> bundled <code>bodyParser</code> accepts a <code>maxBodySize</code></li>
</ul>
]]></description><link>https://nodejs.org/en/blog/vulnerability/v8-memory-corruption-stack-overflow</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/v8-memory-corruption-stack-overflow</guid><dc:creator><![CDATA[Node.js Foundation]]></dc:creator><pubDate>Thu, 31 Jul 2014 19:00:00 GMT</pubDate></item><item><title><![CDATA[OpenSSL and Breaking UTF-8 Change (fixed in Node v0.8.27 and v0.10.29)]]></title><description><![CDATA[<p>Today we are releasing new versions of Node:</p>
<ul>
<li><a href="https://nodejs.org/dist/v0.8.27">node-v0.8.27</a></li>
<li><a href="https://nodejs.org/dist/v0.10.29">node-v0.10.29</a></li>
</ul>
<p>First and foremost these releases address the current OpenSSL vulnerability
<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0224">CVE-2014-0224</a>,
for both 0.8 and 0.10 we&#39;ve upgraded the version of the bundled OpenSSL to
their fixed versions v1.0.0m and v1.0.1h respectively.</p>
<p>Additionally these releases address the fact that V8 UTF-8 encoding would allow
unmatched surrogate pairs. That is to say, previously you could construct a
valid JavaScript string (which are stored internally as UCS-2), pass it to a
<code>Buffer</code> as UTF-8, send and consume that string in another process and it would
fail to interpret because the UTF-8 string was invalid.</p>
<p>Note, the results encoded by V8 in this case are exactly what was passed into
the encoding routine. There is no overflow, underflow, or the inclusion of
other arbitrary memory, merely an unmatched UTF-8 surrogate resulting in
invalid UTF-8.</p>
<p>As of these releases, if you try and pass a string with an unmatched surrogate
pair, Node will replace that character with the unknown unicode character
(U+FFFD). To preserve the old behavior set the environment variable
<code>NODE_INVALID_UTF8</code> to anything (even nothing). If the environment variable is
present at all it will revert to the old behavior.</p>
<p>This breaks backward compatibility for the specific reason that unsanitized
strings sent as a text payload for an RFC compliant WebSocket implementation
should result in the disconnection of the client. If the client attempts to
reconnect and receives another invalid payload it must disconnect again. If
there is no logic to handle the reconnection attempts, this may lead to a
denial of service attack. For instance <code>socket.io</code> attempts to reconnect by
default.</p>
<pre><code class="language-javascript">// Prior to these releases:
new Buffer(&#39;ab\ud800cd&#39;, &#39;utf8&#39;);
// &lt;Buffer 61 62 ed a0 80 63 64&gt;

// After this release:
new Buffer(&#39;ab\ud800cd&#39;, &#39;utf8&#39;);
// &lt;Buffer 61 62 ef bf bd 63 64&gt;

// This is an explicit conversion to a Buffer, but the implicit
// .write(&#39;ab\ud800cd&#39;) also results in the same pattern
websocket.write(new Buffer(&#39;ab\ud800cd&#39;, &#39;utf8&#39;));
// This would result in the client disconnecting.
</code></pre>
<p>Node&#39;s default encoding for strings is <code>UTF-8</code>, so even if you&#39;re not
explicitly creating <code>Buffer</code>s out of strings, Node may be doing so under the
hood. If what you&#39;re passing is not actually <code>UTF-8</code> then when you call
<code>.write(str)</code> you could be specific and say <code>.write(str, &#39;binary&#39;)</code> which
signals Node to pass the string through without interpreting it.</p>
<p>You can also mitigate this in pure JavaScript by sanitizing your strings, as an
example see
<a href="https://github.com/felixge/node-unicode-sanitize/blob/master/index.js">node-unicode-sanitize</a>
which will similarly replace unmatched surrogate pairs with the unknown unicode
character.</p>
<p>Thanks to Node.js alum Felix Geisendörfer for finding, getting the fixes
<a href="https://code.google.com/p/v8/source/detail?r=18683">upstreamed</a>, and helping
with the testing and mitigation. Also for helping to inform and improve the
process for Node.js security issues.</p>
<p>To float these fixes in your own builds you can apply the following patch with
<code>git am</code></p>
<ul>
<li>For v0.10 branch <a href="https://gist.github.com/tjfontaine/f869f373a8e9416809ba/raw/e3eb85201413a79d12ce24a7cb4b02edf0abc1a5/v0.10-invalid-utf8.patch">https://gist.github.com/tjfontaine/f869f373a8e9416809ba/raw/e3eb85201413a79d12ce24a7cb4b02edf0abc1a5/v0.10-invalid-utf8.patch</a></li>
<li>For v0.8 branch <a href="https://gist.github.com/tjfontaine/f869f373a8e9416809ba/raw/8633aba88fa867a88b1b3ab88d13671a78dab187/v0.8-invalid-utf8.patch">https://gist.github.com/tjfontaine/f869f373a8e9416809ba/raw/8633aba88fa867a88b1b3ab88d13671a78dab187/v0.8-invalid-utf8.patch</a></li>
</ul>
]]></description><link>https://nodejs.org/en/blog/vulnerability/openssl-and-utf8</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/openssl-and-utf8</guid><dc:creator><![CDATA[Node.js Foundation]]></dc:creator><pubDate>Mon, 16 Jun 2014 15:46:10 GMT</pubDate></item><item><title><![CDATA[DoS Vulnerability (fixed in Node v0.8.26 and v0.10.21)]]></title><description><![CDATA[<p>Node.js is vulnerable to a denial of service attack when a client
sends many pipelined HTTP requests on a single connection, and the
client does not read the responses from the connection.</p>
<p>We recommend that anyone using Node.js v0.8 or v0.10 to run HTTP
servers in production please update as soon as possible.</p>
<ul>
<li>v0.10.21 <a href="http://blog.nodejs.org/2013/10/18/node-v0-10-21-stable/">http://blog.nodejs.org/2013/10/18/node-v0-10-21-stable/</a></li>
<li>v0.8.26 <a href="http://blog.nodejs.org/2013/10/18/node-v0-8-26-maintenance/">http://blog.nodejs.org/2013/10/18/node-v0-8-26-maintenance/</a></li>
</ul>
<p>This is fixed in Node.js by pausing both the socket and the HTTP
parser whenever the downstream writable side of the socket is awaiting
a drain event.  In the attack scenario, the socket will eventually
time out, and be destroyed by the server.  If the &quot;attacker&quot; is not
malicious, but merely sends a lot of requests and reacts to them
slowly, then the throughput on that connection will be reduced to what
the client can handle.</p>
<p>There is no change to program semantics, and except in the
pathological cases described, no changes to behavior.</p>
<p>If upgrading is not possible, then putting an HTTP proxy in front of
the Node.js server can mitigate the vulnerability, but only if the
proxy parses HTTP and is not itself vulnerable to a pipeline flood
DoS.</p>
<p>For example, nginx will prevent the attack (since it closes
connections after 100 pipelined requests by default), but HAProxy in
raw TCP mode will not (since it proxies the TCP connection without
regard for HTTP semantics).</p>
<p>This addresses CVE-2013-4450.</p>
]]></description><link>https://nodejs.org/en/blog/vulnerability/http-server-pipeline-flood-dos</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/http-server-pipeline-flood-dos</guid><dc:creator><![CDATA[Node.js Foundation]]></dc:creator><pubDate>Tue, 22 Oct 2013 17:42:10 GMT</pubDate></item><item><title><![CDATA[HTTP Server Security Vulnerability: Please upgrade to 0.6.17]]></title><description><![CDATA[<h2>tl;dr</h2>

<ul><li><p>A carefully crafted attack request can cause the contents of the HTTP parser&#39;s buffer to be appended to the attacking request&#39;s header, making it appear to come from the attacker.  Since it is generally safe to echo back contents of a request, this can allow an attacker to get an otherwise correctly designed server to divulge information about other requests.  It is theoretically possible that it could enable header-spoofing attacks, though such an attack has not been demonstrated.</li>
<li>Versions affected: All versions of the 0.5/0.6 branch prior to 0.6.17, and all versions of the 0.7 branch prior to 0.7.8.  Versions in the 0.4 branch are not affected.</li>
<li>Fix: Upgrade to <a href="http://blog.nodejs.org/2012/05/04/version-0-6-17-stable/">v0.6.17</a>, or apply the fix in <a href="https://github.com/joyent/node/commit/c9a231d">c9a231d</a> to your system.</li></ul>

<h2>Details</h2>

<p>A few weeks ago, Matthew Daley found a security vulnerability in Node&#39;s HTTP implementation, and thankfully did the responsible thing and reported it to us via email.  He explained it quite well, so I&#39;ll quote him here:</p>
<blockquote>
<p>There is a vulnerability in node&#39;s <code>http_parser</code> binding which allows information disclosure to a remote attacker:

</p>
<p>In node::StringPtr::Update, an attempt is made at an optimization on certain inputs (<code>node_http_parser.cc</code>, line 151). The intent is that if the current string pointer plus the current string size is equal to the incoming string pointer, the current string size is just increased to match, as the incoming string lies just beyond the current string pointer. However, the check to see whether or not this can be done is incorrect; &quot;size&quot; is used whereas &quot;size_&quot; should be used. Therefore, an attacker can call Update with a string of certain length and cause the current string to have other data appended to it. In the case of HTTP being parsed out of incoming socket data, this can be incoming data from other sockets.

</p>
<p>Normally node::StringPtr::Save, which is called after each execution of <code>http_parser</code>, would stop this from being exploitable as it converts strings to non-optimizable heap-based strings. However, this is not done to 0-length strings. An attacker can therefore exploit the mistake by making Update set a 0-length string, and then Update past its boundary, so long as it is done in one <code>http_parser</code> execution. This can be done with an HTTP header with empty value, followed by a continuation with a value of certain length.

</p>
<p>The <a href="https://gist.github.com/2628868">attached files</a> demonstrate the issue:  </p>
<pre><code>$ ./node ~/stringptr-update-poc-server.js &amp;
[1] 11801
$ ~/stringptr-update-poc-client.py
HTTP/1.1 200 OK
Content-Type: text/plain
Date: Wed, 18 Apr 2012 00:05:11 GMT
Connection: close
Transfer-Encoding: chunked

64
X header:
 This is private data, perhaps an HTTP request with a Cookie in it.
0</code></pre>
</blockquote>
<p>The fix landed on <a href="https://github.com/joyent/node/commit/7b3fb22">7b3fb22</a> and <a href="https://github.com/joyent/node/commit/c9a231d">c9a231d</a>, for master and v0.6, respectively.  The innocuous commit message does not give away the security implications, precisely because we wanted to get a fix out before making a big deal about it.  </p>
<p>The first releases with the fix are v0.7.8 and 0.6.17.  So now is a good time to make a big deal about it.  </p>
<p>If you are using node version 0.6 in production, please upgrade to at least <a href="http://blog.nodejs.org/2012/05/04/version-0-6-17-stable/">v0.6.17</a>, or at least apply the fix in <a href="https://github.com/joyent/node/commit/c9a231d">c9a231d</a> to your system. (Version 0.6.17 also fixes some other important bugs, and is without doubt the most stable release of Node 0.6 to date, so it&#39;s a good idea to upgrade anyway.)  </p>
<p>I&#39;m extremely grateful that Matthew took the time to report the problem to us with such an elegant explanation, and in such a way that we had a reasonable amount of time to fix the issue before making it public. </p>
]]></description><link>https://nodejs.org/en/blog/vulnerability/http-server-security-vulnerability-please-upgrade-to-0-6-17</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability/http-server-security-vulnerability-please-upgrade-to-0-6-17</guid><dc:creator><![CDATA[Isaac Schlueter]]></dc:creator><pubDate>Mon, 07 May 2012 17:02:01 GMT</pubDate></item><item><title><![CDATA[Vulnerabilities]]></title><description><![CDATA[]]></description><link>https://nodejs.org/en/blog/vulnerability</link><guid isPermaLink="true">https://nodejs.org/en/blog/vulnerability</guid><dc:creator><![CDATA[Node.js Foundation]]></dc:creator></item></channel></rss>