Repository navigation
a2ui-server: sealed transport on ogar-encryption; refuse reflected frames - #53
Conversation
…ected frames SealedTransport is now a frame layer over ogar-encryption's SealedStream (OGAR #360), the generic form of this module's own transport. Wire form and nonce layout are unchanged. open_frame used to take the direction from the sealed blob and never check it against the transport's own. Both directions share the session key, so a server's own down-frame reflected back at its up transport opened and was accepted as a client frame. It is now refused (TransportError::WrongDirection). seal_frame returns Result: the send counter refuses to wrap instead of overflowing (TransportError::CounterExhausted). Direction is re-exported from ogar-encryption; the variants and byte values are the same. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
What
SealedTransportis now a thin frame layer overogar_encryption::stream::SealedStream(OGAR #360, merged), the generic form of this module's own transport. Wire form and nonce layout are unchanged:[direction:1][counter:8 LE][ciphertext || tag],FRAME_VERSIONas associated data.Security fix: reflected frames
open_frametook the direction from the sealed blob and never compared it with the transport's own. Both directions use the session key, so a server's ownNodeDeltareflected back at itsuptransport opened and was accepted as a client frame. It is now refused withTransportError::WrongDirection(a_reflected_frame_is_refused).API changes
seal_framereturnsResult<Vec<u8>, TransportError>: the send counter refuses to wrap (CounterExhausted) instead of overflowing.DesktopSession::rendermaps it toDesktopError::Transport.TransportErrorgainsWrongDirectionandCounterExhausted.Directionis re-exported fromogar-encryption; same variants, same byte values.Cargo.lockmovesogar-encryption(and the other OGAR crates on the same branch) to current main.Verification
cargo test(workspace): green.cargo clippy --all-targets -- -D warnings: clean.cargo fmt --check: clean.🤖 Generated with Claude Code
https://claude.ai/code/session_01G22yT6htkcdyXsihxxXdrg
Generated by Claude Code