tomaswolf opened a new pull request, #449:
URL: https://github.com/apache/mina-sshd/pull/449

   Alternate proposal to #446 for implementing "strict KEX". This is a minimal 
single-purpose PR for this feature.
   
   - One commit implementing the functionality in `AbstractSession`.
   - One commit adding unit tests to verify sessions are disconnected on 
spurious messages.
   - One commit adding container tests for interoperability testing.
   
   The implementation in `AbstractSession` is a bit leaner than the original 
proposal because it makes use of the already existing `initialKexDone` flag, 
doesn't use atomic variables where not necessary, and has no optional settings 
to bother with. But most importantly the issue is not clouded by unrelated 
changes or spurious reformatting.
   
   There are _no_ configuration settings to disable the "strict KEX" 
implementation. "Strict KEX" is a hardening of a core SSH protocol; I will not 
provide knobs to dumb down and make that protocol implementation less secure. 
If someone absolutely wants to disable this, he or she can subclass the session 
(for instance ClientSessionImpl) and override doStrictKexProposal() to not do 
anything.
   
   The unit tests in `StrictKexTest` work with all transport back-ends (NIO2, 
Netty, and Mina).
   
   The container tests test an Apache MINA sshd client against an OpenSSH 
server, using Alpine 20231219/OpenSSH 9.6 for a strick-kex-enabled server, and 
CentOS 7/OpenSSH 7.4 for one that doesn't have strict KEX. These tests 
explicitly ensure that communication and re-KEX work with or without "strict 
KEX".
   
   Note that other container tests in the overall test suite already would fail 
if strict KEX was implemented wrongly, but I prefer having explicit tests for 
this.
   
   There are no container tests using an OpenSSH client and an Apache MINS sshd 
server. Besides being somewhat harder to implement, they wouldn't add much 
value. The KEX sub-protocol is symmetric and is wholly implemented in 
`AbstractSession`, which is the same for client and server.


-- 
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: dev-unsubscr...@mina.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org
For additional commands, e-mail: dev-h...@mina.apache.org

Reply via email to