You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@iceberg.apache.org by "github-actions[bot] (via GitHub)" <gi...@apache.org> on 2026/10/24 00:48:14 UTC
[I] RUSTSEC-2026-0385: Non-constant-time mask generation and `u128` comparisons [iceberg-rust]
github-actions[bot] opened a new issue, #3517:
URL: https://github.com/apache/iceberg-rust/issues/3517
> Non-constant-time mask generation and `u128` comparisons
| Details | |
| ------------------- | ---------------------------------------------- |
| Package | `ctutils` |
| Version | `0.4.2` |
| URL | [https://github.com/RustCrypto/utils/pull/1569](https://github.com/RustCrypto/utils/pull/1569) |
| Date | 2026-10-23 |
| Patched versions | `>=0.4.4` |
## Summary
The `ctutils::Choice` type has mask generation functions for each unsigned
integer size (`u8`, `u16`, `u32`, `u64`, `u128`). These are `const fn` and
therefore can't reuse the `asm!`-backed mask generation in the `cmov` crate
that's otherwise used to ensure constant-time.
In releases prior to v0.4.4, the generated code from these functions could
include a branch on commonly used platforms. This has been corrected in this
release and now verified on several platforms using BINSEC.
Additionally, `u128` comparison operations provided via `ctutils::Choice` and
intended to work in constant-time were generating branches on 32-bit targets.
This has been resolved via a special case implementation of these functions
for such targets.
## Impact
Branch instructions on secret values can potentially leak such values via
covert channels. This can enable attackers to potentially recover such secrets.
## Resolution
This has been resolved by calling `Choice::to_u8()` when generating the mask,
which in turn uses `black_box` as an optimization barrier. Verification that
this resulted in the desired change in the generated assembly across a variety
of target CPU architectures was performed by BINSEC, which now runs
automatically in CI using `cargo checkct`.
See [advisory page](https://rustsec.org/advisories/RUSTSEC-2026-0385.html) for additional details.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [I] RUSTSEC-2026-0385: Non-constant-time mask generation and `u128` comparisons [iceberg-rust]
Posted by "kevinjqliu (via GitHub)" <gi...@apache.org>.
kevinjqliu closed issue #3517: RUSTSEC-2026-0385: Non-constant-time mask generation and `u128` comparisons
URL: https://github.com/apache/iceberg-rust/issues/3517
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org