{"id":11928,"date":"2019-02-06T08:21:36","date_gmt":"2019-02-06T07:21:36","guid":{"rendered":"https:\/\/daniel.haxx.se\/blog\/?p=11928"},"modified":"2019-02-06T08:21:36","modified_gmt":"2019-02-06T07:21:36","slug":"curl-7-64-0-like-theres-no-tomorrow","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2019\/02\/06\/curl-7-64-0-like-theres-no-tomorrow\/","title":{"rendered":"curl 7.64.0 &#8211; like there&#8217;s no tomorrow"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"alignright is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol.png\" alt=\"\" class=\"wp-image-8943\" width=\"251\" height=\"219\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol.png 789w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-200x175.png 200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-450x394.png 450w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-768x672.png 768w\" sizes=\"auto, (max-width: 251px) 100vw, 251px\" \/><\/figure><\/div>\n\n\n\n<p>I know, has there been eight weeks since <a href=\"https:\/\/daniel.haxx.se\/blog\/2018\/12\/12\/7-63-0-the-endless-path\/\">the previous release<\/a> already? But yes it has &#8211; I double-checked! And then as the laws of nature dictates, there has been yet another fresh curl version released out into the wild.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Numbers<\/h1>\n\n\n\n<p style=\"text-align:center\"><strong>the 179th release<br>5 changes<br>56 days (total: 7,628)<\/strong><br><strong>76 bug fixes (total: 4,913)<\/strong><br><strong>128 commits (total: 23,927)<br>0 new public libcurl functions (total: 80)<br>3 new curl_easy_setopt() options (total: 265)<\/strong><br><strong>1 new curl command line option (total: 220)<\/strong><br><strong>56 contributors, 29 new (total: 1,904)<\/strong><br><strong>32 authors, 13 new (total: 658)<\/strong><br><strong>\u00a0 3 security fixes (total: 87)<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Security fixes<\/h2>\n\n\n\n<p>This release we have no less than three different security related fixes. I&#8217;ll describe them briefly here, but for the finer details I advice you to read the dedicated pages and documentation we&#8217;ve written for each one of them.<\/p>\n\n\n\n<p><a href=\"https:\/\/curl.haxx.se\/docs\/CVE-2018-16890.html\">CVE-2018-16890<\/a> is a bug where the existing range check in the NTLM code is wrong, which allows a malicious or broken NTLM server to send a header to curl that will make it read outside a buffer and possibly crash or otherwise misbehave.<\/p>\n\n\n\n<p><a href=\"https:\/\/curl.haxx.se\/docs\/CVE-2019-3822.html\">CVE-2019-3822<\/a> is related to the previous but with much worse potential effects. Another bad range check actually allows a sneaky NTLMv2 server to be able to send back crafted contents that can overflow a local stack based buffer. This is potentially in the worst case a remote code execution risk. I think <strong>this might be the worst security issue found in curl in a long time<\/strong>. A small comfort is that by disabling NTLM, you will avoid it until patched.<\/p>\n\n\n\n<p><a href=\"https:\/\/curl.haxx.se\/docs\/CVE-2019-3823.html\">CVE-2019-3823<\/a> is a potential read out of bounds of a heap based buffer in the SMTP code. It is fairly hard to trigger and it will mostly cause a crash when it does.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Changes<\/h2>\n\n\n\n<ol class=\"wp-block-list\"><li><a href=\"https:\/\/curl.haxx.se\/bug\/?i=2956\">curl now supports<\/a> Mike West&#8217;s cookie update known as <a href=\"https:\/\/tools.ietf.org\/html\/draft-ietf-httpbis-cookie-alone\">draft-ietf-httpbis-cookie-alone.<\/a> It basically means that cookies that are set as &#8220;secure&#8221; has to be set over HTTPS to be allow to override a previous secure cookie. Safer cookies.<\/li><li>The &#8211;resolve option as well as CURLOPT_RESOLVE now support <a href=\"https:\/\/github.com\/curl\/curl\/pull\/3406\">specifying a wildcard as port number<\/a>.<\/li><li>libcurl <a href=\"https:\/\/curl.haxx.se\/bug\/?i=3350\">can now send trailing headers<\/a> in chunked uploads using the new options.<\/li><li>curl now <a href=\"https:\/\/curl.haxx.se\/bug\/?i=2873\">offers options<\/a> to <em>enable<\/em> HTTP\/0.9 responses, The default is still enabled, but the plan is to <a href=\"https:\/\/github.com\/curl\/curl\/blob\/e49ca2a11573d2fd0f451a6ab3b3dab5dc9b918d\/docs\/DEPRECATE.md#http09\">deprecate that<\/a> and in 6 months time switch over the to default to off.<\/li><li>curl now uses <a href=\"https:\/\/github.com\/curl\/curl\/pull\/3318\">higher resolution timer accuracy on windows<\/a>.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Bug-fixes<\/h2>\n\n\n\n<p>Check out the full change log to see the whole list. Here are some of the bug fixes I consider to be most noteworthy:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>We re-implemented the code coverage support for autotools builds due to a license problem. It turned out the previously used macro was GPLv2 licensed in an unusual way for autoconf macros.<\/li><li>We make sure &#8211;xattr never stores URLs with credentials, following the security problem reported on a related tool. Not considered a security problem since this is actually what the user asked for, but still done like this for added safety.<\/li><li>With -J, curl should not be allowed to append to the file. It could lead to curl appending to a file that was in the download directory since before.<\/li><li>&#8211;tls-max didn&#8217;t work correctly on macOS when built to use Secure Transport.<\/li><li>A couple of improvements in the libssh-powered SSH backend.<\/li><li>Adjusted the build for OpenSSL 3.0.0 (the coming future version).<\/li><li>We no longer refer to Schannel as &#8220;winssl&#8221; anywhere. winssl is dead. Long live Schannel!<\/li><li>When built with mbedTLS, ignore SIGPIPE accordingly!<\/li><li>Test cases were adjusted and verified to work fine up until February 2037.<\/li><li>We fixed several parsing errors in the URL parser, mostly related to IPv6 addresses. Regressions introduced in <a href=\"https:\/\/daniel.haxx.se\/blog\/2018\/10\/31\/curl-7-62-0-moar-stuff\/\">7.62.0<\/a>.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Next<\/h2>\n\n\n\n<p>The next release cycle will be one week shorter and we expect to ship next release on March 27 &#8211; just immediately after curl turns 22 years old. There are already several changes in the pipe so we expect that to become 7.65.0.<\/p>\n\n\n\n<p>We love your help and support! <a href=\"https:\/\/github.com\/curl\/curl\/issues\">File bugs<\/a> you experience or see, submit <a href=\"https:\/\/github.com\/curl\/curl\/pulls\">pull requests<\/a> for the features or corrections you work on!<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I know, has there been eight weeks since the previous release already? But yes it has &#8211; I double-checked! And then as the laws of nature dictates, there has been yet another fresh curl version released out into the wild. Numbers the 179th release5 changes56 days (total: 7,628)76 bug fixes (total: 4,913)128 commits (total: 23,927)0 &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2019\/02\/06\/curl-7-64-0-like-theres-no-tomorrow\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">curl 7.64.0 &#8211; like there&#8217;s no tomorrow<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":10505,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[33,95],"class_list":["post-11928","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-curl","tag-curl-and-libcurl","tag-release"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/11928","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/comments?post=11928"}],"version-history":[{"count":7,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/11928\/revisions"}],"predecessor-version":[{"id":12017,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/11928\/revisions\/12017"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media\/10505"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=11928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=11928"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=11928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}