Heartbleed vulnerability tester
github.com
github.com
* Live version: http://filippo.io/Heartbleed/
OpenSSL 1.0.1e-fips
One came up positive, One negative. Shouldn't it be negative for both?
$ openssl version -a
OpenSSL 1.0.1 14 Mar 2012
built on: Mon Apr 7 20:33:29 UTC 2014
platform: debian-amd64
options: bn(64,64) rc4(8x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN
-DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4
-Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2
-Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,
--noexecstack -Wall -DOPENSSL_NO_TLS1_2_CLIENT -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50
-DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5
-DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM
-DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/usr/lib/ssl"
In any case, it could be that something else (not built with OpenSSL) is listening on port 443 in the one that's "safe".Or, another example, when you want to know for sure that you've restarted your webserver and you weren't doing something stupid like running a version of nginx that was statically linked against openssl.
http://filippo.io/Heartbleed/#trustcenter.websecurity.symant...
It's vulnerable as well.
$ ./heartbleeder yahoo.com
VULNERABLE - yahoo.com:443 has the heartbeat extension enabled and is vulnerable to CVE-2014-0160
I can understand when some random service has vulnerability like this. But big corporations like yahoo should resolve this immediately.
$ ./Heartbleed yahoo.com:443
(bunch of returned bytes)
2014/04/08 12:59:46 yahoo.com:443 - VULNERABLE
Near the front of the returned bytes is the sequence "yheartbleed.filippo.ioYELLOW SUBMARINE". That is some padding buried inside the Heartbleed source code.I assume that the returned bytes are a peek inside the memory of a yahoo.com server, and we can see the padding supplied by Heartbleed, followed by some more bytes that depend on the server state.
Am I interpreting that correctly?
(And yes, you interpreted that correctly. Notice that this online test does not request even a fraction of the 64k possible, and you can always repeat it to get more)
Has anyone a link to test client implementations? (E.g Browsers,... Windows,... Android, Apps, etc)
Other OpenSSL-using clients are definitely vulnerable though - best bet to tell if you're vulnerable is to check the OpenSSL version.
I tested it using openssl's s_server (with a quickly generated cert using tinyca) and then connecting to https://localhost:12345
openssl s_server -accept 12345 -tlsextdebug -cert cert.pem | grep ^TLS
TLS client extension "server name" (id=0), len=14
TLS client extension "renegotiation info" (id=65281), len=1
TLS client extension "status request" (id=5), len=5
TLS client extension "next protocol" (id=13172), len=0pikachu@BATTLEGYM ~/heartbleeder $ date
Tue Apr 8 08:37:08 PDT 2014
pikachu@BATTLEGYM ~/heartbleeder $ ./heartbleeder mail.yahoo.com
INSECURE - mail.yahoo.com:443 has the heartbeat extension enabled and is vulnerable
pikachu@BATTLEGYM ~/heartbleeder $
Heh. Eliding the hex values of the password might have been a good idea.