Конкурс «Закулисный C»
Конкурс Underhanded C представлял собой соревнование по программированию , целью которого было создание вредоносного кода, но проходящего тщательную проверку и выглядящего как честная ошибка, даже если она была обнаружена . В правилах конкурса определены задача и вредоносный компонент. Заявки должны выполнить задачу злонамеренным образом, как это определено конкурсом, и скрыть злой умысел. Участникам разрешается использовать компилируемые языки типа C для создания своих программ. [1]
Конкурс организовал доктор Скотт Крейвер. [2] кафедры электротехники Бингемтонского университета . Первоначально конкурс был вдохновлен конкурсом Дэниела Хорна Obfuscated V осенью 2004 года. [3] В конкурсах 2005–2008 годов призом был подарочный сертификат ThinkGeek на 100 долларов . Приз конкурса 2009 года был увеличен до 200 долларов из-за очень позднего объявления победителей, а призом конкурса 2013 года также является подарочный сертификат на 200 долларов.
Конкурсы
[ редактировать ]2005
[ редактировать ]Задача конкурса 2005 года заключалась в базовой обработке изображений , такой как повторная выборка или сглаживание, но скрытой вставке « отпечатков пальцев в изображение уникальных и полезных данных ». В работах-победителях 2005 года использовались неинициализированные структуры данных, повторное использование указателей и встраивание машинного кода в константы .
2006
[ редактировать ]В конкурсе 2006 года требовались заявки для подсчета вхождений слов, но время выполнения на разных платформах было совершенно разным. Для выполнения задачи в записях использовались ошибки реализации форка, проблемы оптимизации, различия в порядке байтов и различные различия в реализации API. Победитель вызывал strlen() в цикле, что приводило к квадратичной сложности, которая была оптимизирована компилятором Linux, но не Windows.
2007
[ редактировать ]Для участия в конкурсе 2007 года требовалось зашифровать и расшифровать файлы с помощью надежного и легкодоступного алгоритма шифрования, позволяющего за достаточно короткое время взломать небольшой процент (1–0,01%) зашифрованных файлов. Конкурс начался 16 апреля и завершился 4 июля. В работах использовались неправильные реализации RC4, неправильные вызовы API и неправильные прототипы функций.
2008
[ редактировать ]Конкурс 2008 года требовал от участников отредактировать прямоугольную часть изображения PPM таким образом, чтобы эту часть можно было реконструировать. Разрешался любой метод «блокирования» прямоугольника при условии, что исходные пиксели были удалены, а реконструкция пикселей не обязательно должна быть идеальной. [4] (хотя при оценке будет учитываться соответствие реконструкции исходному файлу). Конкурс начался 12 июня и завершился 30 сентября. Записи имели тенденцию либо исключать регион с помощью извлекаемой псевдослучайной маски, либо добавлять замаскированные данные в конец формата файла. Обе программы, занявшие второе место, использовали неправильно определенные макросы, в то время как победитель, выбрав работу с необычным текстовым форматом, обнулил значения пикселей, сохранив при этом количество цифр.
2009
[ редактировать ]Конкурс 2009 года требовал от участников написать программу, которая анализирует директивы маршрутизации, но перенаправляет часть багажа на основе какого-то безобидного на вид комментария в файле входных данных, разделенном пробелами. Конкурс начался 29 декабря 2009 г. и должен был завершиться 1 марта 2010 г. [5] Однако в течение трех лет никакой активности не наблюдалось. Победители были объявлены только 1 апреля 2013 года: один абсолютный победитель и шесть, занявшие вторые места. [6] [7]
2013
[ редактировать ]Конкурс 2013 года был объявлен 1 апреля 2013 года и должен был состояться 4 июля 2013 года; Результаты были объявлены 29 сентября 2014 года. [8] Речь шла о вымышленном социальном сайте ObsessBook. Задача заключалась в том, чтобы написать функцию для вычисления DERPCON (степени достижимого личного соединения) между двумя пользователями, которая «случайно» вычисляет слишком малое расстояние для специального пользователя.
2014
[ редактировать ]Конкурс 2014 года был объявлен 2 ноября 2014 года и должен был состояться 1 января 2015 года. Результаты были объявлены 1 июня 2015 года. [9] Целью было написать код наблюдения для Twitter , похожей на службы социальной сети , чтобы выполнить секретный правительственный запрос на наблюдение; но по неочевидным причинам код должен незаметно передавать пользователю информацию о слежке. Общий подход заключается в том, чтобы скрыть запись в пользовательские данные как запись в данные наблюдения, и победившая запись сделала это, реализовав ошибочную функцию проверки времени, которая перезаписывает входные данные.
2015
[ редактировать ]Конкурс 2015 года был объявлен 15 августа 2015 года и должен был состояться 15 ноября 2015 года. Результаты были объявлены 15 января 2016 года. Сценарием был процесс ядерного разоружения между Народной Славной Демократической Республикой Алисы и Славной Демократической Народной Республикой. Боба ( Алиса и Боб ), и миссия заключалась в написании тестовой функции для сравнения потенциально расщепляющегося материала с эталонным образцом, которая при определенных обстоятельствах помечала бы боеголовку как содержащую расщепляющийся материал, хотя на самом деле это не так. Около трети представленных материалов использовали отравление NaN ошибочными операциями с плавающей запятой, что генерирует больше NaN в последующих вычислениях и всегда дает значение false для сравнения.Победившая работа использовала путаницу типов данных между double и float, чтобы исказить значения.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Возобновление конкурса закулисного C» . Я Программист. 6 апреля 2013 года . Проверено 4 октября 2014 г.
- ↑ Страница преподавателей и сотрудников кафедры ЭЭ Бингемтонского университета. Архивировано 29 мая 2010 г., в Wayback Machine.
- ^ «Часто задаваемые вопросы по конкурсу «Закулисный C»» . Конкурс «Закулисный C» . Проверено 28 февраля 2015 г.
- ↑ Правила конкурса 2008 г. Архивировано 22 марта 2015 г. в Wayback Machine.
- ^ The Underhanded C Contest » , xcott.com (архивировано из оригинального архива от 6 октября 2014 г., на Wayback Machine 18 июля 2011 г.)
- ^ «Конкурс Underhanded C» Кроме того, мы ищем хороших аспирантов» . 8 января 2010 года. Архивировано из оригинала 8 января 2010 года . Проверено 12 марта 2019 г.
- ^ «Конкурс закулисного C» . Архивировано из оригинала 9 апреля 2013 года . Проверено 3 апреля 2013 г.
- ^ Скотт Крейвер (29 сентября 2014 г.). «Победители 2013 года» . Проверено 22 июня 2017 г.
- ^ Скотт Крейвер (2 ноября 2014 г.). «Седьмой конкурс Underhanded C открыт» . Проверено 18 декабря 2014 г.