Объявлены победители восьмого конкурса по созданию скрытного кода на языке Си

2016-02-04

Объявлены победители восьмого соревнования "Underhanded C Contest", участникам которого предлагалось создать небольшие и легко читаемые программы на языке Си, которые с виду не вызывают подозрений, но выполняют скрытые и непредсказуемые действия. Чем труднее при проведении аудита кода распознать скрытую вставку, тем выше ставится оценка участнику. Победитель получил приз в 1000 долларов.

Конкурс проведён совместно с Фондом "Инициатива по уменьшению ядерной угрозы" (Nuclear Threat Initiative). В качестве задания было предложено создание закладки, приводящей к ложному срабатыванию проверки состояния ядерного оружия, позволяя незаметно удалить радиоактивные материалы из боеголовки. Работы подавляющего большинства участников были основаны на использовании неопределённых значений чисел с плавающей запятой (NaN, например, получается в результате sqrt(-1.0) или 0/0), которые в вычислениях с другими числами порождают NaN-результат и в операциях сравнении воспринимаются как "false".

Победителем соревнования признан код, искажающий результаты спектрального анализа через манипуляции с переменными с плавающей запятой (на вход функции, ожидающей массив из 4-байтных чисел одинарной точности передавался массив из 8-байтных чисел двойной точности, таким образом каждое 8-байтовое число трактовалось как два разных 4-байтовых).