[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mina-dev
Subject:    [jira] [Created] (SSHD-269) Random Data corruption with Remote Port Forwarding
From:       "Abhishek Ganguly (JIRA)" <jira () apache ! org>
Date:       2013-12-13 6:12:08
Message-ID: JIRA.12684417.1386915065665.30768.1386915128597 () arcas
[Download RAW message or body]

Abhishek Ganguly created SSHD-269:
-------------------------------------

             Summary: Random Data corruption with Remote Port Forwarding
                 Key: SSHD-269
                 URL: https://issues.apache.org/jira/browse/SSHD-269
             Project: MINA SSHD
          Issue Type: Bug
    Affects Versions: 0.9.0
         Environment: WIN7 + JDK7, Centos+OpenJDK7
            Reporter: Abhishek Ganguly
            Priority: Critical


A TCP connection set up over Remote Port Forwarding feature randomly garbles the \
data. On further testing I found that the TCP stream from remote-to-local is \
unaffected whereas the local-to-remote is bad.

To reproduce,
1. setup a basic sshd. listen on port 22. call the host 'remote'.
2. on 'local' machine set up putty (ssh client) as follows:
2.1 Host name: remote
2.2 Port: 22
2.3 Connection-SSH: Dont start a shell or command at all
2.4 Connection-SSH-tunnels:: source-port: remote-port, destination: \
localhost:localport 2.5 Connection type: Remote [Click ADD]
2.6 Open connection

this makes a tunnel from remoteserver:remoteport to localhost:localport

3. set up a basic TCP server on localhost:localport
3.1 start serving predictable byte arrays. {0000111112222....}
4. set up a basic TCP client. connect to remoteHost:remotePort
4.1 the connection automatically gets forwarded to localhost:localport where my own \
TCP server is running. hence a TCP connection is setup over the tunnel. 5. start \
consuming the byte array from server. 5.1 match the incoming bytes to expected \
sequence.

you will see that the sequence is oftentimes garbled.

6. let the client send a similar predictable byte stream to server.
6.1 from client take OutputStream from the socket and push a long but predictable \
byte array in it. 6.2 from server get InputStream out of socket and read the bytes

you will see that irrespective of array length, all the bytes are safely delivered.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic