23.02 // Лишний goto поломал SSL/TLS в iOS
Анализ внезапно выпущенного на днях обновления iOS до версии 7.0.6 выявил замечательную ошибку, позволяющую сайту отдавать iOS-устройствам одноразовые ключи, подписи которых вообще не имели отношения к его сертификату. Т.е. приводящей к фактически полной неработоспособности всего механизма SSL/TLS.
Причина ошибки – лишний goto (привет копипасту), который всегда приводил к переходу в конец функции, минуя проверку sslRawVerify.
А вообще, увидев в 21 веке такое количество goto в коде[link1], хочется передать отдельный привет отпраздновавшему на той неделе 80 лет Вирту. Спагетти-код неистребим.
Источник: http://bugtraq.ru/rsn/archive/2014/02/02.html
Ссылки
[link1] http://opensource.apple.com/source/Security/Security-55471/libsecurity_ssl/lib/sslKeyExchange.c