Skip to content

chore(deps): bump the rust-dependencies group with 4 updates - #2360

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/rust-dependencies-58fef6295f
Closed

chore(deps): bump the rust-dependencies group with 4 updates#2360
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/rust-dependencies-58fef6295f

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 31, 2026

Copy link
Copy Markdown
Contributor

Bumps the rust-dependencies group with 4 updates: flate2, russh, napi and syn.

Updates flate2 from 1.1.9 to 1.1.10

Release notes

Sourced from flate2's releases.

1.1.10

What's Changed

New Contributors

Full Changelog: rust-lang/flate2-rs@1.1.9...1.1.10

Commits
  • ed93d4f Merge pull request #558 from rust-lang/lib-doc-update
  • fb5228d Merge pull request #559 from bushrat011899/no_std
  • 6ed3ba3 Add executable no_std example
  • faed8a0 Expand CI to test no_std compatibility and correctness
  • 2ba8e7e Add unstable no_std support behind flate2_unstable_nightly_alloc_io
  • 3fe1126 Centralize usage of std for error and io
  • 98e313a Add GzHeader::mtime_as_duration
  • 0642965 Switch to core implicit prelude and only use std where required
  • 454a63c Remove left-over dbg! statement
  • 2a490b7 Add runtime_detection feature
  • Additional commits viewable in compare view

Updates russh from 0.62.7 to 0.63.1

Release notes

Sourced from russh's releases.

v0.63.1

Security fixes

GHSA-47hw-gvq5-r2gm - client-side Handler callbacks reachable with invalid channel IDs

A mirror of GHSA-m65r-rprj-r5rg for the client side - Handler per-channel callbacks are called even when the server supplies an invalid (never opened) channel ID. Depending on what the handler does this can lead to a vulnerability.

GHSA-p8qx-h547-fjw9 - MAC-requiring block cipher can be negotiated without MAC and panic

Two peers disagreeing on supported MACs can end up negotiating none MAC for a cipher that requires one, which leads to the session task panicking.

v0.63.0

Features

  • 09f6582: Support host certificates on the client side (#752) (@​biao29) #752

    • This changes the signature of Handler::check_server_key to take a new PublicKeyOrCertificate enum instead of &PublicKey
  • d7601ae: Support host certificates on the server side (#641) (Georg von Zengen) #641

    • Adds a Config::certificates that functions similarly to Config::keys

Fixes

  • f2354c7: improve strict kex checks (Eugene)
  • 0363fde: fixed PKCS#8 parsing panicking on incorrect contents (Eugene)
  • 46c927a: use constant-time comparison for agent unlock (Eugene)
  • 8da8967: sanitize Curve25519 params (Eugene)

Full Changelog: Eugeny/russh@v0.62.7...v0.63.0

v0.63.0-beta.1

Features

  • 09f6582: Support host certificates on the client side (#752) (@​biao29) #752
  • d7601ae: Support host certificates on the server side (#641) (Georg von Zengen) #641

Full Changelog: Eugeny/russh@v0.62.7...v0.63.0-beta.1

Commits

Updates napi from 3.12.1 to 3.12.2

Release notes

Sourced from napi's releases.

napi-v3.12.2

Fixed

  • (napi) memory safety in PromiseRaw callbacks and AbortSignal conversion (#3458)
Commits
  • 444bf29 chore(napi): release v3.12.2 (#3459)
  • 2ffb055 fix(napi): memory safety in PromiseRaw callbacks and AbortSignal conversion (...
  • 511ead2 chore(deps): update dependency oxc-parser to ^0.146.0 (#3457)
  • 220b402 chore(deps): update dependency oxc-parser to ^0.145.0 (#3456)
  • 70c1493 chore(release): publish
  • aeba312 fix(cli): compatible with emnapi v1 & v2 (#3454)
  • d532909 chore(deps): update dependency oxc-parser to ^0.144.0 (#3453)
  • b8ba732 fix(deps): update emnapi to v2.0.0-alpha.4 (#3451)
  • 06349eb chore(deps): update cross-platform-actions/action action to v1.4.0 (#3452)
  • a5b5f27 chore(release): publish
  • Additional commits viewable in compare view

Updates syn from 3.0.3 to 3.0.4

Release notes

Sourced from syn's releases.

3.0.4

  • Allow safe fn in impl Parse for ForeignItemFn (#2078)
Commits
  • b5d62a6 Release 3.0.4
  • abf019c Merge pull request #2078 from dtolnay/foreginitemfn
  • d454333 Allow safe fn in impl Parse for ForeignItemFn
  • 8011b1c Update test suite to nightly-2026-08-18
  • 56a8d83 Raise rayon thread size for tests
  • f2c5c50 Ignore assert_is_empty pedantic clippy lint
  • 0eba76d Update test suite to nightly-2026-08-05
  • baaebce Update test suite to nightly-2026-07-25
  • b886a38 Update test suite to nightly-2026-07-24
  • 3c41416 Update test suite to nightly-2026-07-23
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Bumps the rust-dependencies group with 4 updates: [flate2](https://github.com/rust-lang/flate2-rs), [russh](https://github.com/warp-tech/russh), [napi](https://github.com/napi-rs/napi-rs) and [syn](https://github.com/dtolnay/syn).


Updates `flate2` from 1.1.9 to 1.1.10
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](rust-lang/flate2-rs@1.1.9...1.1.10)

Updates `russh` from 0.62.7 to 0.63.1
- [Release notes](https://github.com/warp-tech/russh/releases)
- [Commits](Eugeny/russh@v0.62.7...v0.63.1)

Updates `napi` from 3.12.1 to 3.12.2
- [Release notes](https://github.com/napi-rs/napi-rs/releases)
- [Commits](napi-rs/napi-rs@napi-v3.12.1...napi-v3.12.2)

Updates `syn` from 3.0.3 to 3.0.4
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](dtolnay/syn@3.0.3...3.0.4)

---
updated-dependencies:
- dependency-name: flate2
  dependency-version: 1.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-dependencies
- dependency-name: russh
  dependency-version: 0.63.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-dependencies
- dependency-name: napi
  dependency-version: 3.12.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-dependencies
- dependency-name: syn
  dependency-version: 3.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update rust code labels Aug 31, 2026
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 31, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
bashkit ac9cb47 Commit Preview URL

Branch Preview URL
Aug 31 2026, 09:44 AM

chaliy added a commit that referenced this pull request Aug 31, 2026
… fixes (#2365)

## What changed

Takes the `rust-dependencies` group bump that Dependabot opened as #2360
(`flate2`
1.1.9→1.1.10, `napi` 3.12.1→3.12.2, `syn` 3.0.3→3.0.4, `russh`
0.62.7→0.63.1) and adds the
code change `russh` 0.63 requires, which #2360 could not make on its
own.

**`russh` 0.63.1 is a security release for code we actually run as an
SSH client:**

- **GHSA-47hw-gvq5-r2gm** — client-side `Handler` callbacks were
reachable with invalid
(never-opened) channel IDs. This is the client-side mirror of
GHSA-m65r-rprj-r5rg.
- **GHSA-p8qx-h547-fjw9** — two peers disagreeing on supported MACs
could negotiate `none`
  MAC for a cipher that requires one, panicking the session task.

It also carries stricter kex checks, a PKCS#8 parsing panic fix,
constant-time agent
unlock, and Curve25519 parameter sanitization.

Neither GHSA is in the RustSec advisory database yet, so `cargo audit`
is green on `main`
today *despite* `russh` 0.62.7 being affected. The bump is what fixes
it; our audit tooling
would not have told us.

**Behavior change — SSH host certificates.** `russh` 0.63 widened
`Handler::check_server_key` to receive a `PublicKeyOrCertificate`, so a
server can now
present a CA-signed host *certificate* instead of a raw key. Bashkit has
no CA trust store,
so under `strict_host_key_checking` (the default) a certificate is
**rejected** — including
when the public key it wraps is itself a configured trusted key.
Matching the embedded key
would extend trust on the strength of a signature chain we never
validated, and would
ignore the certificate's validity window, principals and critical
options. Configuring the
host's public key directly stays the supported path. Non-strict mode is
unchanged: it still
accepts anything after warning.

Recorded as **L-SSH-001** in `knowledge/operations/limitations.md`, with
TM-SSH-006 updated
in both the knowledge threat model and the user-facing rustdoc one.

## Why

Dependabot #2360 was red on five checks. It bumped `russh` across a
breaking 0.x boundary
without the adaptation, so the crate did not compile:

```
error[E0053]: method `check_server_key` has an incompatible type for trait
  --> crates/bashkit/src/builtins/ssh/russh_handler.rs:39:28
   |
39 |         server_public_key: &russh::keys::PublicKey,
   |                            ^^^^^^^^^^^^^^^^^^^^^^^ expected `russh::keys::PublicKeyOrCertificate`,
   |                                                    found `russh::keys::PublicKey`
```

and `cargo vet` had six unvetted new versions.

## Before / After

Before — on #2360's head (`ac9cb47`):

```
Check    failure     Lint     failure     Test     failure
Examples failure     Audit    failure
```

```
Vetting Failed!
6 unvetted dependencies:
  flate2:1.1.10  miniz_oxide:0.9.1  napi:3.12.2
  russh:0.63.1   syn:3.0.4          zlib-rs:0.6.7
```

After — locally on this branch:

```
$ cargo test -p bashkit --features ssh --lib builtins::ssh::russh_handler
test result: ok. 16 passed; 0 failed; 0 ignored; 2692 filtered out

$ cargo vet --locked
Vetting Succeeded (27 fully audited, 5 partially audited, 587 exempted)

$ cargo clippy --all-targets --features http_client,ssh,sqlite -- -D warnings
Finished `dev` profile

$ cargo fmt --check && just check-okf && just check-doc-links
knowledge: OKF v0.2 conformant (40 concepts, 7 index files, 1 log file)
docs OK: 157 relative links and 6 dependency versions across 45 files
```

Five new host-key tests cover the decision, the important one being that
a certificate is
refused *even when the key it certifies is trusted*:

```
test_strict_accepts_matching_public_key ... ok
test_strict_rejects_unmatched_public_key ... ok
test_strict_rejects_certificate_even_when_inner_key_is_trusted ... ok
test_strict_rejects_certificate_with_wildcard_host ... ok
test_non_strict_accepts_certificate ... ok
```

The certificate fixture is a real OpenSSH ed25519 host certificate (an
`ssh-key` crate test
vector), not a hand-rolled blob.

## Risk

- **Medium.** Touches SSH host-key verification, a security boundary.
- The certificate path is new surface that `russh` 0.62 could never
reach, so nothing that
worked before stops working — a deployment relying on certificate-based
host keys would
  have been failing already.
- `supply-chain/` changes come from `cargo vet regenerate exemptions`.
Beyond the six
version bumps it also pruned nine exemptions now covered by a refreshed
Mozilla import
(`anstream`, `anstyle-parse`, `anstyle-query`, `anstyle-wincon`,
`colorchoice`,
`is_terminal_polyfill`, `once_cell_polyfill`, `simdutf8`, `strsim`) and
added the
corresponding `simdutf8` audit to `imports.lock`. These are coupled: the
prune is only
  valid because of the import.
- `russh` 0.62.7→0.63.1 is recorded as an **exemption**, not a delta
audit. The existing
`russh` deltas in `audits.toml` are human review attestations, and I am
not in a position
to sign one. If you want this version genuinely audited, that is a
follow-up:
  `just vet-certify russh 0.63.1`.

## Checklist
- [x] Tests added or updated
- [x] Backward compatibility considered

---
_Generated by [Claude
Code](https://claude.ai/code/session_0131Yeb4LuBMYu9Z43k9e1xf)_

chaliy commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Superseded by #2365, which is merged.

This PR could not go green on its own: russh 0.63 changed Handler::check_server_key to take a PublicKeyOrCertificate instead of &PublicKey, so bashkit did not compile (E0053), and cargo vet had six unvetted new versions. #2365 carries the same four bumps plus the code adaptation, the host-certificate trust decision (rejected in strict mode, recorded as L-SSH-001), and the regenerated supply-chain/ files. All 47 checks passed there.

Worth noting for the record: russh 0.63.1 is a security release for the client path this repo uses — GHSA-47hw-gvq5-r2gm (client-side Handler callbacks reachable with never-opened channel IDs) and GHSA-p8qx-h547-fjw9 (MAC-requiring cipher negotiable without a MAC, panicking the session task). Neither advisory is in the RustSec database yet, so cargo audit was reporting main clean while 0.62.7 was affected.

Closing.


Generated by Claude Code

@chaliy chaliy closed this Aug 31, 2026
@dependabot @github

dependabot Bot commented on behalf of github Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

This pull request was built based on a group rule. Closing it will not ignore any of these versions in future pull requests.

To ignore these dependencies, configure ignore rules in dependabot.yml

@dependabot
dependabot Bot deleted the dependabot/cargo/rust-dependencies-58fef6295f branch August 31, 2026 21:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant