[Daniel's week] February 14, 2025
Daniel Stenberg
daniel at haxx.se
Fri Feb 14 16:18:15 CET 2025
Hey ho!
## regressions
While I was still writing last week’s summary email, we received a report
about yet another regression in the then still fresh curl 8.12.0 release. We
had a few other regressions filed already, but the Friday crash report was the
one that took away the last doubt and made us decide we really needed to make
a patch release. People in the Kodi project experienced crashes when they used
the latest libcurl [1]. Fully reproducible too. While I really should learn to
expect this every time we ship a dot-zero version, I’m just such an optimist
that I think that noooo, this time surely everything will go smoothly.
Me, Stefan and Harry spent hours last Saturday on IRC, debugging the problem.
We found the reason, reproduced it, wrote up test cases, submitted a
pull-request that was soon confirmed to fix the problem as quite clearly even
a bunch of Kodi devs were active on the weekend and keen on getting this
working. Twenty-six hours after the crash was reported, we had a fix merged in
git.
By Monday morning I announced that we would do a patch release on Thursday;
curl 8.12.1. And so I did [2].
## AI slop
We got yet another AI slop security vulnerability reported [3]. It followed a
pattern we have seen before. The AI found a claimed problem in an internal
function that would be vulnerable if used in a particular way, clearly not
quite understanding the concept of a public API. No attacker can reach the
internal functions and no libcurl code uses the function in a way that would
trigger the problem. Clearly the AIs need to be educated better about API
boundaries and public and private functions in libraries.
As always, if the user would just have understood their own report they would
not have done it.
## tightening every bolt
The video recording of my talk I did at FOSDEM 2025 called tightening every
bolt went online [5]. It is a walk-through of all the procedures and
precautions we do in the curl project to ship a secure product.
## mascot
I ran a poll on Mastodon [6] and GitHub [7] asking the question if we should
get ourselves a mascot for the curl project. Over 70% out of 1,500 answers
said yes. I had previously asked the question what such a mascot would be, and
we have received an extensive list of creative, fun and thought-provoking
ideas.
I intend to ponder on the next step a little bit. Probably I should pick the
maybe four best ideas and then crowd-source ideas/layouts/designs for all the
four, then have some kind of vote among those. Once we have a winning mascot
concept, I would like to engage and cooperate with a real designer/illustrator
who can work with us and create the actual final creation to use.
Until then, I want to keep an open mind for exactly what and how this will
look like and what we should eventually call it.
## disabling cert checks: we have not learned much
This week I fell over a Mastodon post from the author of a fairly high profile
project that mentioned that they use curl (with PHP) and they linked to a just
merged pull-request. Curious about this, I took a quick look at the patch and
swiftly discovered that in their commit, the TLS server verification was
partly disabled. I replied to this effect, both in the commit and on Mastodon.
The original toot was shortly thereafter removed. I don’t know why.
I decided to quickly search for the same code pattern I had seen in that
commit on GitHub, only to realize there were hundreds of thousands of matches.
While some of them surely were false positives, a sufficiently large share of
them are not. An unsatisfactory state of affairs.
So I did my thing. I wrote a blog post about it [8].
## codeql
After the meeting I mentioned last week I had with the CodeQL team, I fired up
a new PR [9] in which I brought back the tool into the family of curl CI jobs
to see if it would make a difference big enough to make it worthwhile for us
to run it. I was told that with a new special config entry I would get more
relevant and better results.
It did produce a list of 113 new issues. Out of these, one was an unnecessary
conditional check that I fixed. The other 112 alerts were all things I did not
care much about and that are mostly opinions and sure-maybe-but items.
I have not decided where to go with this just yet. I might take this back to
the CodeQL people again and see what they say.
## OpenSSL QUIC
OpenSSL finally this week actually merged an API that allows other QUIC
implementations to use its TLS stack [4]. This is of course something the QUIC
community has been waiting for since many years back and I have written about
it many times before. This new API they now offer is not done like the one
previously debated (and that the OpenSSL forks provide) but is instead special
and different - which puzzles me greatly. I intend to write up a longer blog
post about this API move soon, as soon a little more details ideally have
fallen into place.
## cleanups
My curl code cleanups this week include removing superfluous memory
allocations in the threaded resolver and switching over number parsing to use
our own parser API for better integer overflow detection and easier maximum
checks. I have merged some work in both these areas but I have more polish
pending as well.
## coming up
Fingers crossed we don’t need to do another patch release.
## Links
[1] = https://github.com/curl/curl/issues/16236
[2] = https://daniel.haxx.se/blog/2025/02/13/curl-8-12-1/
[3] = https://hackerone.com/reports/2981245
[4] = https://github.com/openssl/openssl/pull/26683
[5] = https://youtu.be/Yr5fPxZvhOw
[6] = https://mastodon.social/@bagder/113973438175404365
[7] = https://github.com/curl/curl/discussions/16276
[8] = https://daniel.haxx.se/blog/2025/02/11/disabling-cert-checks-we-have-not-learned-much/
[9] = https://github.com/curl/curl/pull/16263
--
/ daniel.haxx.se
More information about the daniel
mailing list