{"id":30858,"date":"2026-11-03T10:16:17","date_gmt":"2026-11-03T09:16:17","guid":{"rendered":"https:\/\/daniel.haxx.se\/blog\/?p=30858"},"modified":"2026-11-03T10:16:17","modified_gmt":"2026-11-03T09:16:17","slug":"scrutinize-our-assessments","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2026\/11\/03\/scrutinize-our-assessments\/","title":{"rendered":"Scrutinize our assessments"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I recently blogged about how the curl project switched to <a href=\"https:\/\/daniel.haxx.se\/blog\/2026\/10\/20\/do-minor-curl-vulnerabilities-in-the-open\/\" data-type=\"post\" data-id=\"30809\">doing all handling of vulnerabilities at severity LOW and MEDIUM in the public<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let me now describe how you can follow along this process and help out. Add your opinions, comments and assessments to help the curl project stay honest, do even better and manage the load.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Issues<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vulnerability reports are now submitted directly in <a href=\"https:\/\/github.com\/curl\/curl\/issues\">curl&#8217;s issue tracker on GitHub<\/a>. Judging by the initial set received, the persons submitting them do not particularly highlight the security angle in the title but it is instead implied or specified in the issue description. I hope people react if we somehow miss it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tags<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We use a set of tags to manage vulnerability reports on GitHub. They are all prefixed by <em>vuln:<\/em>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">vuln:ASSESS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every submitted issue that has a claimed or suspected security angle &#8211; a possible vulnerability &#8211; first gets the <code><strong>vuln:ASSESS<\/strong><\/code> tag set (by one of the curl maintainers). This tag marks the issue as one that we should evaluate, assess and determine first if it is a vulnerability, and if it is, what severity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anyone is free to leave their comment and thinking to help us come to a conclusion.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This tag is removed again when an assessment has been done.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">vuln:NONE<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This issue was assessed in regards to its vulnerability risk and we deem that it has none; or it is so low that it is considered to be less than severity LOW. This issue is treated as <em>just a bug<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If  someone objects provides a reasonable and convincing argument, we can reassess.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">vuln:LOW<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This issue is a confirmed vulnerability at severity LOW. We work on a fix for this that we merge as soon as it works and then we close this issue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If  someone objects to the severity and provides a reasonable and convincing argument, we can reassess.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">vuln:MEDIUM<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This issue is a confirmed vulnerability at severity MEDIUM. We work on a fix for this that we merge as soon as it works and then we close this issue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If  someone objects to the severity and provides a reasonable and convincing argument, we can reassess.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Advisories<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Confirmed vulnerabilities get a CVE and a dedicated security advisory that we work on separately from the issue and its fix <a href=\"https:\/\/github.com\/curl\/curl-www\/pulls\">in the curl-www repository<\/a>. The CVE and its advisory get published in sync with the pending curl release. They are left as open in-progress pull-requests until then, using <a href=\"https:\/\/github.com\/curl\/curl-www\/pulls?q=is%3Apr+state%3Aopen+label%3Avuln%3ALOW\">vuln:LOW<\/a> or <a href=\"https:\/\/github.com\/curl\/curl-www\/pulls?q=is%3Apr+state%3Aopen+label%3Avuln%3AMEDIUM\">vuln:MEDIUM<\/a> tags.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each advisory has all the information about a single curl vulnerability. A detailed description, all the info, CWE, CVE, affected version ranges, if it is a C mistake, in which curl &#8220;area&#8221; it happens, a link to the original report, etc. The idea being that this single markdown file has all necessary information anyone might want and need about this specific vulnerability.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Public vs published<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The work on these vulnerabilities is immediately public and the second we register and assign a CVE Id (the actual numerical identifier) to a problem, you can learn about its existence.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We do however not <em>publish<\/em> the issue and all relevant metadata to the CVE database until the publication date, which is the same date as the curl release date when we ship the first release that contains the fix for the vulnerability.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So information is <em>public<\/em> in the curl repositories early on, but it is not <em>published<\/em> until perhaps several weeks later, and it is at that later moment that it gets picked up by other tools and ecosystems and then gets widely known.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently blogged about how the curl project switched to doing all handling of vulnerabilities at severity LOW and MEDIUM in the public. Let me now describe how you can follow along this process and help out. Add your opinions, comments and assessments to help the curl project stay honest, do even better and manage &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2026\/11\/03\/scrutinize-our-assessments\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Scrutinize our assessments<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":29597,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,133],"tags":[33,518,428],"class_list":["post-30858","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-curl","category-security","tag-curl-and-libcurl","tag-cve","tag-security"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/30858","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=30858"}],"version-history":[{"count":23,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/30858\/revisions"}],"predecessor-version":[{"id":30923,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/30858\/revisions\/30923"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media\/29597"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=30858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=30858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=30858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}