Bug in SunNativeProvider

Valerie Peng valerie.peng at oracle.com
Thu Jan 4 23:07:50 UTC 2018


Great, thanks!
Valerie

On 1/4/2018 4:51 AM, Jan Kalina wrote:
> Described issues was accepted into Oracle JDK issues:
>
> 1) SunNativeProvider.INSTANCE initialization: 
> https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8194073
> 2) Uninitialized cb->initiator_address: 
> https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8194630
>
> (fixing patches are included in reports too)
>
>
> On Fri, Dec 22, 2017 at 5:44 PM, Jan Kalina <jkalina at redhat.com 
> <mailto:jkalina at redhat.com>> wrote:
>
>     Hi, I was just able to prepare usable reproducer (attaching in ZIP
>     file) and fixing patch of JDK (attaching too).
>     Before I was able to make my usecase working, I has found second
>     issue too - I has included it too.
>
>     Issues and their reproducing:
>
>     1) already described problem of wrong initialized
>     SunNativeProvider.INSTANCE
>
>     This can be reproduced by recreating GSSManager before
>     createGSSContext - ProviderList.factories
>     will be initialized as part of initSecContext/acceptSecContext
>     which will cause using wrong initialized
>     SunNativeProvider.INSTANCE and described exception.
>
>     2) when channel binding is used SIGSEGV occure
>
>     This can be reproduced by setting channel binding without
>     initAddr/acceptAddr.
>     This is caused by sending uninitialized (with random length)
>     cb->initiator_address from JDK to the kerberos.
>     (It is used by krb library for messages checksum calculation even
>     when addrtype is GSS_C_AF_NULLADDR.)
>
>     Attached reproducer-gss.zip reproduces both issues and attached
>     patch fixes both.
>
>     I would welcome merging into OpenJDK. (I am covered by OCA of Red Hat)
>
>     This issue affect both tested JDKs, JKD8u121 and upstream JDK9
>     from mercurial master.
>
>     Thanks,
>     Jan
>
>     On Wed, Dec 20, 2017 at 1:42 AM, Valerie Peng
>     <valerie.peng at oracle.com <mailto:valerie.peng at oracle.com>> wrote:
>
>
>         I will take a look. Do you happen to have a test case that I
>         can reproduce the issue?
>         Thanks,
>         Valerie
>
>
>         On 12/14/2017 9:20 AM, Jan Kalina wrote:
>>         Attaching patch, which fixes described issue for me.
>>
>>         On Thu, Dec 14, 2017 at 4:03 PM, Jan Kalina
>>         <jkalina at redhat.com <mailto:jkalina at redhat.com>> wrote:
>>
>>             I has found bug in SunNativeProvider:
>>
>>             When debug messages are enabled, JDK confirms GSS library
>>             was loaded with mechs:
>>
>>             [GSSLibStub_init] libName=/usr/lib64/libgssapi_krb5.so.2.2
>>             SunNativeGSS: Loaded GSS library:
>>             /usr/lib64/libgssapi_krb5.so.2.2
>>             SunNativeGSS: Native MF for 1.2.840.113554.1.2.2
>>             SunNativeGSS: Native MF for 1.3.6.1.5.2.5
>>             SunNativeGSS: Native MF for 1.3.6.1.5.5.2
>>
>>             But when I try to use it, it claims mechanism with given
>>             OID are not supported:
>>
>>             GSSException: Provider SunNativeGSS does not support
>>             mechanism 1.2.840.113554.1.2.2
>>                 at
>>             java.security.jgss/sun.security.jgss.ProviderList.getMechFactory(ProviderList.java:253)
>>                 at
>>             java.security.jgss/sun.security.jgss.ProviderList.getMechFactory(ProviderList.java:209)
>>                 at
>>             java.security.jgss/sun.security.jgss.GSSManagerImpl.getMechanismContext(GSSManagerImpl.java:234)
>>                 at
>>             java.security.jgss/sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:337)
>>                 at
>>             java.security.jgss/sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:302)
>>
>>             *When I has try to debug it, I has found the
>>             SunNativeProvider is created in two instances:*
>>
>>             First instance is created on initialization of
>>             SunNativeProvider.INSTANCE, but it is BEFORE
>>             the mechs are passed into SunNativeProvider.MECH_MAP. The
>>             second instance is created
>>             correctly in ProviderList constructor.
>>
>>             The problem is, in some situations is used the too soon
>>             created SunNativeProvider.INSTANCE,
>>             so the to call throws exception above.
>>
>>             *I think sufficient fix would be to move
>>             SunNativeProvider.INSTANCE declaration after*
>>             *the static constructor (filling the **MECH_MAP) in
>>             SunNativeProvider file.*
>>
>>             Would be possible to fix this?
>>             Should I send a patch?
>>
>>             Thanks
>>             Jan Kalina
>>
>>
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/security-dev/attachments/20180104/d9ab32e1/attachment.htm>


More information about the security-dev mailing list