Компания Apple признала наличие бага в Mac OS X 10.9.1, который позволяет перехватывать трафик, зашифрованный по SSL. Несколько дней назад вышли соответствующие обновления безопасности iOS 7.0.6 и 6.1.6 для iOS 7 и 6. Как выяснилось, баг присутствует и в последней версии Mac OS X.
Уязвимы все программы, которые используют SSL-библиотеку от Apple, в том числе браузер Safari, почтовый клиент Mail, приложения Calendar, FaceTime, Keynote, Twitter, iBooks. На браузеры Chrome и Firefox уязвимость не распространяется, потому что они не используют библиотеку sslKeyExchange.c от Apple.
Уязвимость вызвана тривиальной ошибкой в исходном коде, где используется две строки goto fail
подряд. Первая из них корректно связывается с оператором if, а вторая вызывает завершение программы.
static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams,
uint8_t *signature, UInt16 signatureLen)
{
OSStatus err;
...
if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
goto fail;
...
Проверить наличие уязвимости на конкретном устройстве OS X можно, если попробовать зайти по ссылке https://www.imperialviolet.org:1266/. Если она открывается на порту 1266, то баг в наличии.
Как вариант, можно воспользоваться утилитой otool. Уязвимая библиотека sslKeyExchange.c имеет номер версии 55471.
otool -L `which ssh` | grep 55471
«Мы в курсе проблемы и уже подготовили программное обновление, которое выйдет очень скоро», — сказали представители Apple в интервью Reuters. Неофициальный патч можно взять здесь.
В то же время кто-то зарегистрировал сайт gotofail.com, посвящённый багу Apple.
Автор: alizar