GHSA-655h-hg88-5qmf json
Rust XCB `xcb::Connection::connect_to_fd*` functions violate I/O safety
published last yr. modified last yr. also RUSTSEC-2025-0051
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
The API of `xcb::Connection` has constructors which allow an arbitrary `RawFd` to be used as a socket connection. On either failure of these constructors or on the drop of `Connection`, it closes the associated file descriptor. Thus, a program which uses an `OwnedFd` (such as a `UnixStream`) as the file descriptor can close the file descriptor and continue to attempt using it or close an already-closed file descriptor, violating I/O safety.
Starting in version 1.6.0, `xcb` provides `Connection::connect_with_fd` and `Connection::connect_with_fd_and_extensions` as safe alternatives and deprecates the problematic functions.
Patch / fix
- crates.io xcb 1.6.0
- github.com/rust-x-bindings/rust-xcb@da83097 commit
- github.com/rust-x-bindings/rust-xcb#283 pull request
Is GHSA-655h-hg88-5qmf in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerAffected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| crates.io | xcb | <1.6.0 >=0.0.0-0, <1.6.0 |
1.6.0 |
Classification
References
-
github.com
/rust-x-bindings/rust-xcb/pull/283
web
-
github.com
/rust-x-bindings/rust-xcb/commit/da830976870c1174e3b33eb0643177be3991c002
web
-
github.com
/rust-x-bindings/rust-xcb/issues/167
web, report
-
github.com
/rust-x-bindings/rust-xcb/issues/282
web, report
-
github.com
/rustsec/advisory-db/pull/2355
web
-
github.com
/rust-x-bindings/rust-xcb
package
-
rustsec.org
/advisories/RUSTSEC-2025-0051.html
web, advisory
-
crates.io
/crates/xcb
package
Sources
- GitHub Advisory GHSA-655h-hg88-5qmf
- OSV RUSTSEC-2025-0051
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.