А, это вы, Штирлиц!
Jul. 17th, 2024 11:01 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Убил вчера полдня, разбираясь почему при апгрейде openssl с 3.0.11 на 3.0.13 стала падать в сегфолт osslsigncode при подписи ключом с рутокена.
Выяснилось что автором коммита, который всё сломал, был beldmit (ох сколько мы с ним вместе эту openssl в свое время хакали).
no subject
Date: 2024-07-17 08:59 am (UTC)no subject
Date: 2024-07-17 09:40 am (UTC)Кому ломать там хватает. Там контрибуторов сотни, если не тыщи. Забавно что я наткнутся именно на багу, сделанную хорошо лично знакомым человеком.
no subject
Date: 2024-07-17 05:16 pm (UTC)no subject
Date: 2024-07-17 05:23 pm (UTC)Чем-то это мне напоминает ту историю, когда оторвали генератор случайных чисел совсем, убрав обращение к неинициализированной памяти, которая там была слабым но дополнительным источником случайности.
Вот был бы у меня лишний токен, можно было бы поразвлекатья, и добить эту проблему до полного понимания.
Впрочем если на свете бывает pkcs11 модуль с который токен эмулирует, то его, пожалуй должно хватить. Здесь все проблемы во взаимодействии pkcs11 engine и openssl. Т.е. pkcs11 engine ожидает от EVP_PKEY чего-то не того, что попытался засунуть туда ты.
И те дополнительные два абзаца в документации, которые дописал туда Томас, ну никак не проясняют вопрос, чего именно должна обеспечить libcrypto для engine и чего engine не должна ожидать.
no subject
Date: 2024-07-19 04:59 am (UTC)Скажите мне добрые люда, а openssl кто-нибудь с ASan собирал? Его под этот санитайзер зачищали?
no subject
Date: 2024-07-19 05:27 am (UTC)no subject
Date: 2024-07-19 10:51 am (UTC)Ага... это хорошо...
no subject
Date: 2024-07-19 05:37 am (UTC)А толку его гонять под asan, когда соответствующий кусок кода тестами не покрыт?
Тут как я писал выше, нужен pkcs11-модуль, эмулирующий токен, для того чтобы тестировать ту часть кода, которая работает с pkcs11 engine.
В принципе, большая часть тестов на высокоуровневые функции (работа с ключами, CMS и прочими подобными штуками, не криптоалгоритмы) тестируется посредством утилиты openssl. А она далеко не все умеет. Например, насколько я помню, не умеет доставать с токена сертификат. Хотя в библиотеке такая функция есть. Просто никто не собрался сдизайнить интерфейс командной строки к ней.
Как там сделана работа с ключами с -keyform ENGINE, покрываются ли все возможные пути, и в частности тот, который использован в osslsigncode - это смотреть надо. Есть подозрение, что нет.
no subject
Date: 2024-07-19 10:50 am (UTC)Если бы оно вообще не было бы подпилено под ASan, то тогда бы вообще ничего не помогло, потому что ASan начал бы выдавать пачками false positive при попытке воспроизведения бага. А если на штатных тестах false positives вычищены, то запуск с ASan'ом даже в ручном режиме может дать полезные результаты на замусоренные штатной фолсой.
Тому кто научит меня создавать дублей, готов поставить бутылку столетнего коньяка. Даже ящик.