Re: [SECURITY ADVISORY] curl: CVE-2025-0665: eventfd double close
Demi Marie Obenour <[email protected]> Wed, 5 Feb 2025 12:15:23 -0500
| Newsgroups | gmane.comp.security.oss.general,gmane.comp.web.curl.general,gmane.comp.web.curl.library |
|---|---|
| Message-ID | <Z6OcuMJupHURWFvR@itl-email> |
On Wed, Feb 05, 2025 at 09:21:39AM +0100, Daniel Stenberg wrote: > eventfd double close > ==================== > > Project curl Security Advisory, February 5th 2025 - > [Permalink](https://curl.se/docs/CVE-2025-0665.html) > > VULNERABILITY > ------------- > > libcurl would wrongly close the same eventfd file descriptor twice when taking > down a connection channel after having completed a threaded name resolve. > > INFO > ---- > > This flaw requires libcurl to get built with the threaded resolver > > It requires that *eventfd* is used in the curl build. This feature is only > used on 64-bit architectures. > > The eventfd socket is used for inter-thread messaging and since the > communication was originally written to use `socketpair()` only, there was two > `close()` calls done and the superfluous one was left accidentally used > because of an `#ifdef` mistake. > > This bug was reported (and fixed) immediately after the 8.11.1 release, but > the security impact was not considered until later. This bug causes libcurl to > act unreliably which many users will have noticed and either avoided eventfd > or the vulnerable version, thus somewhat reducing the impact of this problem. > > It can also be worth noting that both `close()` calls are typically called > within a few dozens of instructions, severely limiting the ability for an > external party to control which other file descriptor this can be made to > affect. > > This bug is **not** considered a *C mistake*. It is not likely to have been > avoided had we not been using C. I think this is actually a C mistake. In most higher-level languages, it is idiomatic to use higher-level APIs that prevent closing the same file descriptor multiple times, and Rust enforces this in the type system. -- Sincerely, Demi Marie Obenour (she/her/hers) Invisible Things Lab
signature.asc
(application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEopQtqVJW1aeuo9/sszaHOrMp8lMFAmejnLQACgkQszaHOrMp 8lP+aw/9G0CSIg6DzfYtUnc5SMvOpdwkbxHGir1fjKfhomH2PdYEJx8CzKtOyjwW S3WjvaKYTytD41Jry1Uvt7m/7LAnC+RxwjuuHxBK73YhS+gDC2N0zwSBH4y2NTrJ VsfXAbhrq9fjT4uJVPMzqou/+SjR472KUiJkv541ml/bv5tVfbvGPadstCvSG9Ac 7MOq+fHIu2t1RIhYa5vvXsfiMeftUS96srg2DXjYe3bW4a5IzDjVEudCHsGqmV6A Y6d3MBgKVZ+LzrdvkuuDVeEyhJUzZrtoIy/kh9Si0LF0jyDyuYZa/QroDiGnPG+Y ZcprvG9Boj7Nj0A+afn10RuJ4Pndgf2K0qVcskOLDcZM39RSX5fTDDKMCVz290Rb ha4wDa89HtQ8OV1rPN2gdaKrxs+SKB2otXCZD1eIpJlLN5lsSivYgxKEVxCHCn/5 s7wyOcMduPEwJGGYCe9dU/btJ25nnT64ytINLOuwiHtKdMSpz4sP/tYfSOz/DnXg VHoceW1tina6VtiJwer5OmaoTwjZZmS6tNjFUnPYd9BpO23I2+7oOdUbN1v0jTpU SopMiFk/H4wG93zpvkDc46MnjgUhNYUbJt4Xmwcym2O6C5HiihRDjdDdiWMcJe6/ n3C+ddEg9DQW+/UpWB+4HGCPjzhwizfUCXTYe1SXKXRJdr/P7Gw= =zqLX -----END PGP SIGNATURE-----