90 likes | 340 Views
Глобальная уязвимость HeartBleed и почему некоторые продукты не были ей подвержены. Брагин Станислав. История появления уязвимости. 31 декабря 2011 года волонтер Робин Зегельман вносит расширение TSL Heartbeat в исходный код OpenSSL ( keepalive mechanism ).
E N D
Глобальная уязвимость HeartBleedи почему некоторые продукты не были ей подвержены. Брагин Станислав.
История появления уязвимости • 31 декабря 2011 года волонтер Робин Зегельман вносит расширение TSL Heartbeat висходный код OpenSSL (keepalive mechanism) • 14 марта 2012 после аудита кода, выполненного доктором Стивеном Хенсоном, расширение Heartbeat выходит в составе версии 1.0.1 OpenSSL • Через два года 7 апреля 2014 года объявлено о существовании уязвимости HeartBleedизвестной так под названиями “Уязвимость с красивой картинкой” и “Поменяй все пароли”
Влияние уязвимости • Позволяет получить до 64к случайного фрагмента памяти сервера (в том числе ключи шифрования и пароли) • Атака не отслеживается и повторяется неограниченное количество раз • Затрагивает по разным оценкам от четверти до половинысерверов, рабочих станций и устройств, использующих SSL/TLS • По словам Брюса Шнайдера рейтинг опасности по шкале от 1 до 10 – 11.
Немного об SSL • SSL/TLS обеспечивает защищенные коммуникации для большого количества протоколов высокого уровня. • HTTP, SMTP, LDAP, SIP, FTP – это несколько примеров протоколов, защищенных SSL/TLS • При взаимодействии клиент и сервер могут использовать различный набор расширений, одним из которых является HeartBeet Application Layer SSPI Layer Win32 Application .Net Application Internet Explorer SSPI SSP Layer Kerberos NTLM Schannel Negotiate Other Channel
HeartBleed – ошибка переполнения буфера String Buffer Random value Critical data …AAAAAAAAAAAAAAAAAAAAAAAAA… 218429037 VulnerableCode() { WCHAR Buffer[BUFLEN]; Copy(UserData, Buffer); return;}
И снова небезопасные функции С p = &s->s3->rrec.data[0] [...] hbtype = *p++; n2s(p, payload); pl = p; [...] buffer = OPENSSL_malloc(1 + 2 + payload + padding); bp = buffer; [...] memcpy(bp, pl, payload);
Как наши продукты избежали уязвимости • Другая реализация SSL/TLS - SCHANNEL • На Juniper Windows In-Box Junos Pulse VPN client - внешне ПО которое поставляется с Windows 8.1иподвержен Heartbleed. Обновление вышло в течении месяца. • https://technet.microsoft.com/library/security/2962393 • Использование цикла безопасной разработки SDL • memcpy - запрещенная функция • http://msdn.microsoft.com/en-us/library/bb288454.aspx • Другие практики SDL препятствуют появлениюподобной уязвимости • SDL Practice #4: Perform Security and Privacy Risk Assessments • SDL Practice #7: Use Threat ModelingSDL Practice #10: Perform Static Analysis • SDL Practice #11: Perform Dynamic AnalysisSDL Practice #12: Fuzz TestingSDL Practice #13: Attack Surface Review • http://www.microsoft.com/security/sdl/default.aspx https://technet.microsoft.com/library/security/2962393
Общий вид цикла безопасной разработки SDL Technology and Process Accountability Education Ongoing Process Improvements
Спасибо за внимание! Вопросы?