Skip to content

Invalid encoding for signature: redundant leading 0s #354

@charego

Description

@charego

Related bugs:

  1. https://sourceforge.net/p/jsch/bugs/111/
  2. https://bugs.openjdk.java.net/browse/JDK-8174719

Synopsis:

Security fix in Java 8u121 exposed an encoding issue in some SSH libraries. In other words, these libraries were relying on buggy code in the JDK. Now that it's fixed in the JDK, these libraries mess up. Specifically: redundant 0s should be stripped from the signature.

Environment:

  • Java 8u144
  • sshj 0.21.1
  • connecting to Cisco devices (IOS XRs)
ERROR [net.schmizz.concurrent.Promise] <<kex done>> woke to: net.schmizz.sshj.transport.TransportException: Invalid encoding for signature
...
Caused by: net.schmizz.sshj.transport.TransportException: Invalid encoding for signature
    at net.schmizz.sshj.transport.TransportException$1.chain(TransportException.java:33)
    at net.schmizz.sshj.transport.TransportException$1.chain(TransportException.java:27)
    at net.schmizz.concurrent.Promise.deliverError(Promise.java:96)
    at net.schmizz.concurrent.Event.deliverError(Event.java:74)
    at net.schmizz.concurrent.ErrorDeliveryUtil.alertEvents(ErrorDeliveryUtil.java:34)
    at net.schmizz.sshj.transport.KeyExchanger.notifyError(KeyExchanger.java:386)
    at net.schmizz.sshj.transport.TransportImpl.die(TransportImpl.java:600)
    at net.schmizz.sshj.transport.Reader.run(Reader.java:67)
Caused by: net.schmizz.sshj.common.SSHException: Invalid encoding for signature
    at net.schmizz.sshj.common.SSHException$1.chain(SSHException.java:36)
    at net.schmizz.sshj.common.SSHException$1.chain(SSHException.java:29)
    at net.schmizz.sshj.transport.TransportImpl.die(TransportImpl.java:595)
    ... 1 common frames omitted
Caused by: net.schmizz.sshj.common.SSHRuntimeException: Invalid encoding for signature
    at net.schmizz.sshj.signature.SignatureDSA.verify(SignatureDSA.java:102)
    at net.schmizz.sshj.transport.kex.AbstractDHG.next(AbstractDHG.java:85)
    at net.schmizz.sshj.transport.KeyExchanger.handle(KeyExchanger.java:358)
    at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:503)
    at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:102)
    at net.schmizz.sshj.transport.Decoder.received(Decoder.java:170)
    at net.schmizz.sshj.transport.Reader.run(Reader.java:59)
Caused by: java.security.SignatureException: Invalid encoding for signature
    at sun.security.provider.DSA.engineVerify(DSA.java:283)
    at sun.security.provider.DSA.engineVerify(DSA.java:244)
    at java.security.Signature$Delegate.engineVerify(Signature.java:1219)
    at java.security.Signature.verify(Signature.java:652)
    at net.schmizz.sshj.signature.SignatureDSA.verify(SignatureDSA.java:100)
    ... 6 common frames omitted
Caused by: java.io.IOException: Invalid encoding: redundant leading 0s
    at sun.security.util.DerInputBuffer.getBigInteger(DerInputBuffer.java:152)
    at sun.security.util.DerValue.getBigInteger(DerValue.java:512)
    at sun.security.provider.DSA.engineVerify(DSA.java:281)
    ... 10 common frames omitted

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions