Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-16803

Apache Mina implementation tries to supply a username to a SOCKS4 proxy, even when the proxy does not need one

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Obsolete
    • Icon: Major Major
    • fuse-6.3-R19-GA
    • jboss-fuse-6.3
    • Camel
    • None
    • False
    • False
    • % %
    • Todo
    • Undefined

      A number of Camel components, or libraries referenced by Camel components, use Apache Mina for SSL. Mina supports SOCKS4, and this problem only arises when using a SOCKS4 proxy.

      SOCKS4 does not support authentication, but the client can supply a username. This is not mandatory, but the Mina SOCKS4 implementation tries to process the username, which leads to the following NPE:

      2021-06-02 14:17:38,229 | ERROR | ioProcessor-1019 | AbstractProxyLogicHandler        | 158 - org.apache.mina.core - 2.0.13 | Unable to send Socks request:
      java.lang.NullPointerException
              at org.apache.mina.proxy.handlers.socks.Socks4LogicHandler.writeRequest(Socks4LogicHandler.java:72)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.proxy.handlers.socks.Socks4LogicHandler.doHandshake(Socks4LogicHandler.java:59)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.proxy.filter.ProxyFilter.sessionCreated(ProxyFilter.java:291)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionCreated(DefaultIoFilterChain.java:459)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$700(DefaultIoFilterChain.java:48)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.sessionCreated(DefaultIoFilterChain.java:913)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.core.filterchain.IoFilterAdapter.sessionCreated(IoFilterAdapter.java:74)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionCreated(DefaultIoFilterChain.java:459)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireSessionCreated(DefaultIoFilterChain.java:452)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.core.service.IoServiceListenerSupport.fireSessionCreated(IoServiceListenerSupport.java:212)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.core.polling.AbstractPollingIoProcessor.addNow(AbstractPollingIoProcessor.java:510)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.core.polling.AbstractPollingIoProcessor.handleNewSessions(AbstractPollingIoProcessor.java:479)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:68)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1088)[158:org.apache.mina.core:2.0.13]
              at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)[158:org.apache.mina.core:2.0.13]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1160)[:1.8.0]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)[:1.8.0]
              at java.lang.Thread.run(Thread.java:818)[:2.9 (08-02-2019)]
       

      The relevant implementation is here:

      https://github.com/apache/mina/blob/2.0.13/mina-core/src/main/java/org/apache/mina/proxy/handlers/socks/Socks4LogicHandler.java#L72

      Note that it assumes a non-null value of `username`, but the caller is under no obligation to supply one.

      This problem was raised on Fuse 6.3, but Fuse 7 also supplies Mina, and those Camel components that use Mina will (I imagine) continue to use it. Later versions of Mina have the same limitaiton.

       

       

       

            ggrzybek Grzegorz Grzybek
            rhn-support-kboone Kevin Boone
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: