Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

RUSTSEC-2026-0347: Buffered application data sent to outer server after ECH rejection

未关闭
#21 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
55/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
rust

调研方向

The fix is a dependency bump: the rustls version in Cargo.toml and Cargo.lock must resolve to 0.23.46 or later. Start with the rustls entries in Cargo.toml and Cargo.lock, then run cargo update -p rustls and cargo test. Done when the lockfile pins a patched rustls and the build and tests pass. Check the advisory page for any API changes that affect ECH handling in this crate.

由索引模型根据 Issue 内容生成。

描述

Buffered application data sent to outer server after ECH rejection

Details
Package rustls
Version 0.23.45
URL https://github.com/rustls/rustls/pull/3300
Date 2026-10-14
Patched versions >=0.23.46
Unaffected versions <0.23.44

When a server rejects Encrypted Client Hello (ECH), the client completes the
handshake using the outer ClientHello and authenticates the server against the
ECH config's public_name. At the end of that handshake, rustls encrypted and
queued any application data buffered via ClientConnection::writer() before
queueing the ech_required alert.

The application correctly receives
Error::PeerIncompatible(ServerRejectedEncryptedClientHello), but the next
write_tls() call (needed to send the alert) also sends the buffered
application data. Plaintext meant for the inner server therefore goes to the
client-facing server named by public_name.

That server is authenticated, so this is not exploitable by an unauthenticated
party, but it violates RFC 9849 section 6.1.6, which requires the client to
abort with ech_required "before sending any application data to the server".

This affects only clients that:

  • use EchMode::Enable (GREASE ECH is not affected),
  • write application data before the handshake completes, and
  • connect to a server that rejects their ECH config (for example, because it is stale).

The underlying ordering bug is older, but before 0.23.44 the client checked
the server certificate against the inner server name rather than public_name,
so certificate verification failed first and no data was sent.

See advisory page for additional details.

主要语言
Rust
星标
2
派生
0
平均合并
1 天 15 小时
30 天内合并 PR
3

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

stackabletech/stackable-odbc-trino 的其他 Issue

查看 stackabletech/stackable-odbc-trino 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。