Java Card, the Java version made for smart cards, does not have strings, and thus no String.equals().
Thought I remembered this from a CCC conference about EMV chips or SIM cards (don't remember which) a few years ago. Googling seems to confirm it: https://community.oracle.com/thread/1751610?db=5
In this case, if you don't send some hash, it will authenticate you, allowing you to authenticate with user `admin` and no password.
> we tested out a case in which only a portion of the correct response hash is sent to the AMT web server. To our surprise, authentication succeeded!
> Next, we reduced the response hash to one hex digit and authentication still worked.
This doesn't imply that "no password" - an empty password would still result in a non-empty HTTP Authorization Digest response hash, which would not allow you to login. An empty/truncated digest response hash is not the same thing as an empty/truncated password.
It seems really hard to test from the point of an outside observer. I'd strongly suspect it's hard to test internally as well, which would indicate there are a bunch of bugs lurking in there.
This sounds a bit strange to me. Oracle releases a lot of updates for the JRE.
eg Java 8 is up to number 131 at the time of writing this, though they're probably (hopefully!) not all security updates:
• http://www.oracle.com/technetwork/java/javase/downloads/inde...
• http://www.oracle.com/technetwork/java/javase/8u-relnotes-22...
With that in mind, wouldn't an embedded Oracle JVM be a very bad idea from a security standpoint? (if network connected, and not updated of course)
A home made, completely un audit able, built in JVM (that apparently can't be updated based on your comments) seems crazy dangerous.
Just saying "it's probably ok, because it's java" as the op alluded to is a very dangerous line of thinking. that only works with one of the public, auditable implementations.
I dunno. it's a the devil you know vs the devil you don't problem. How do you feel about the security of intel software in general?
I'd be surprised to hear that using a Java, say, socket or HTTP lib, exposed you to more risk in general than using any other language/runtime/lib.
edit:
Note that this is only pseudocode and rumor has it that ME firmware is actually written mostly in Java. It's not immediately clear to me how to create equivalent bug in Java, the obvious string.equals() method doesn't ignore length mismatch.
edit2:
s/passwd/passwd_hash to satisfy pedants below ;)