Серьёзный такой, говорят, позволяет вытянуть до 64 килобайт памяти (за одну попытку, а попыток в одной сессии можно проделать сколь угодно много) из подключённого по SSL клиента или сервера. А там могут лежать ключи в открытом виде
( Read more... )
What is leaked primary key material and how to recover?
These are the crown jewels, the encryption keys themselves. Leaked secret keys allows the attacker to decrypt any past and future traffic to the protected services and to impersonate the service at will. Any protection given by the encryption and the signatures in the X.509 certificates can be bypassed.
wait a second, это описание того, что можно изъять из скомпрометированной системы. Но неясен сам механизм компрометации. Я не знаю как используется опенссл для ссл на линуксе, в опенвпн она используется для генерации сертификатов. Значит ли это, что кто-то может влезть в ВПН канал?
> позволяет вытянуть до 64 килобайт памяти > из подключённого по SSL клиента или сервера.
Это за один раз. А heartbeat'ов можно сгенерировать сколько угодно. На загруженном сервере выделяемый OPENSSL_malloc() указатель куда только не может попасть.
Ну и, собственно, анализ бага на основе анализа патча. Слово "говорят" из статьи можно убрать -- действительно позволяет, зараза :-)
Вкратце: приходит heartbeat вида [n|data], где n -- это uint16, обозначающий длину data. libssl кладёт data в кучу, составляет обратный пакет, кладёт туда из кучи n байт по указателю на data и отсылает (то есть, в нормальной ситуации, просто отсылает полученную data обратно). Проверку на n == len(data) никто не делал, поэтому, если n = 65535, а data = [], то отсылается просто 65535 байт из кучи, откуда Богmalloc(3) пошлёт.
Comments 14
вот взять опенвпн, на него это влияет или нет, если опенвпн использует уязвимую опенссл?
Reply
These are the crown jewels, the encryption keys themselves. Leaked secret keys allows the attacker to decrypt any past and future traffic to the protected services and to impersonate the service at will. Any protection given by the encryption and the signatures in the X.509 certificates can be bypassed.
Reply
побежал всё менять
Reply
Reply
> из подключённого по SSL клиента или сервера.
Это за один раз. А heartbeat'ов можно сгенерировать сколько угодно. На загруженном сервере выделяемый OPENSSL_malloc() указатель куда только не может попасть.
Reply
Reply
Вкратце: приходит heartbeat вида [n|data], где n -- это uint16, обозначающий длину data. libssl кладёт data в кучу, составляет обратный пакет, кладёт туда из кучи n байт по указателю на data и отсылает (то есть, в нормальной ситуации, просто отсылает полученную data обратно). Проверку на n == len(data) никто не делал, поэтому, если n = 65535, а data = [], то отсылается просто 65535 байт из кучи, откуда Богmalloc(3) пошлёт.
Reply
Leave a comment