Я только что обновил библиотеку openssl на своем сервере Ubuntu 12.04, чтобы исправить ошибку heartbleed. Вот результат, который я получил для команды «openssl version -a»:
OpenSSL 1.0.0g 18 Jan 2012
built on: Fri Apr 11 09:20:16 UTC 2014
platform: linux-x86_64
options: bn(64,64) rc4(8x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,-- noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DWHIRLPOOL_ASM
OPENSSLDIR: "/usr/local/ssl"
Насколько я понимаю, дата «создания» должна быть после 7 апреля 2014 года, что, кажется, имеет место здесь. Я перезапустил Apache после внесения этих изменений, но я все еще вижу, что мой веб-сайт уязвим для ошибки Heartbleed.
Я что-то упустил?
Я обновил библиотеку ssl, загрузив последний исходный код и скомпилировав / установив его.
[Обновление] После комментариев Стефана ниже я напрямую обновил openssl с помощью apt-get. Я также обновил свой PATH, чтобы указать на недавно обновленную библиотеку openssl.
Вот что я вижу, когда делаю "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"
Согласно «встроенному», библиотека обновлена до последнего патча от 7 апреля. Однако мой веб-сайт все еще уязвим для сердечного приступа.
Пожалуйста, помогите!
Самый простой и быстрый способ защитить себя от Heartbleed - обновить OpenSSL из бинарных пакетов, предоставленных поставщиком. Не компилируйте из исходного кода, если вы не знаете, что делаете или не хотите тратить гораздо больше времени на обучение. Компиляция из исходного кода является более сложной задачей и пустой тратой времени, если все, что вам нужно сделать, это обновить программное обеспечение. Это может быть познавательным и поучительным.
OpenSSL 1.0.0g 18 Jan 2012 built on: Fri Apr 11 09:20:16 UTC 2014
Что-то здесь не так. Вы хотите 1.0.1g, а не 1.0.0g. Но Heartbleed - проблема только в OpenSSL 1.0.1 и 1.0.2. OpenSSL 1.0.0 не был уязвим. Вы загружали старые исходные файлы? Обратите внимание, что Ubuntu не всегда точно сообщает версию OpenSSL, и вам также необходимо обновить libssl.
Насколько я понимаю, дата создания должна быть после 7 апреля 2014 г., что, похоже, имеет место здесь.
Нет, посмотри еще раз. Ваша дата создания - «11 апреля, 09:20:16 UTC 2014». Это когда вы собрали этот исходник?
Обратите внимание, что если вы строите из исходного кода, вам необходимо применить правильные флаги. Прочтите уведомление о безопасности на http://www.openssl.org/news/secadv_20140407.txt
Затронутые пользователи должны перейти на OpenSSL 1.0.1g. Пользователи, которые не могут немедленно выполнить обновление, могут в качестве альтернативы перекомпилировать OpenSSL с помощью -DOPENSSL_NO_HEARTBEATS.
Поскольку вы не удалили уязвимую версию OpenSSL, она все еще находится в системе. Ваша новая установка не заменила файлы, а добавила новые. Поскольку существующие приложения связаны со старой библиотекой, они могут продолжать ее использовать. Так что лучше обновите вашу систему обычным способом, потому что для этого доступны фиксированные библиотеки.