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