URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 99815
[ Назад ]

Исходное сообщение
"Соревнование по созданию запутанного кода на языке Си "

Отправлено opennews , 04-Ноя-14 12:57 
Представлен (http://www.underhanded-c.org/) седьмой конкурс "Underhanded C Contest (http://underhanded.xcott.com/)", участникам которого предлагается создать небольшие и легко читаемые программы на языке Си, которые с виду не вызывают подозрений, но выполняют скрытые и непредсказуемые действия. Чем труднее при проведении аудита кода распознать скрытую вставку, тем выше ставится оценка участнику. Работы на конкурс будут приниматься до 1 января. Приз символический - сертификат на 200$ для покупки в магазине ThinkGeek. С работами победившими на конкурсе в прошлые годы можно познакомиться на данной странице (http://underhanded.xcott.com/?page_id=4).


В качестве задания в этом году предложен сценарий скрытого отслеживания спецслужбами активности пользователей в социальных сетях. Участникам дано задание подготовить код сервиса, позволяющего отправлять 140-символьные сообщения, в который встроена функция скрытого сохранения сообщений, удовлетворяющих определённой маске, содержимое которое должно быть сохранено в тайне (т.е. маска должна передаваться в виде хэша, не дающего владельцу узнать по каким ключевым словам ведётся фильтрация).

URL: http://www.underhanded-c.org/
Новость: http://www.opennet.dev/opennews/art.shtml?num=40992


Содержание

Сообщения в этом обсуждении
"Соревнование по созданию запутанного кода на языке Си "
Отправлено Кирилл , 04-Ноя-14 13:08 
> Представлен седьмой конкурс ..

Ну вот так вот и собираюсь кодовую базу АНБ-шники для своих коварных целей. Даже ТЗ по сути их задачи раскрывает.

И понятно почему именно Си выбран.


"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 04-Ноя-14 13:10 
Чтобы было сложнее - потому что усложнить работу с памятью больше, чем в C может не каждый

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 04-Ноя-14 14:27 
>Чтобы было сложнее - потому что усложнить работу с памятью больше, чем в C может не каждый

Работа с памятью очень простая и подчиняется принципу: нагадил - убери за собой. Да такое поведение несколько отличается от поведения животных, однако в этом и есть суть культуры.


"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 04-Ноя-14 16:50 
Во-во, джавакодерам, GO-кодерам и прочим, кто не осилил адресную арифметику, этой простой истины не понять.

"Соревнование по созданию запутанного кода на языке Си "
Отправлено YetAnotherOnanym , 04-Ноя-14 17:52 
Примечательно, что противоположный принцип (нагадил - уходи и не возвращайся, GC всё сделает) применяется в эрланге.

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 04-Ноя-14 20:21 
А сама виртуальная машина эрланга на чём написана? Не на С случайно?

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Demo , 04-Ноя-14 20:50 
> А сама виртуальная машина эрланга на чём написана? Не на С случайно?

На C#.


"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 04-Ноя-14 23:48 
Ну вот мы и пообсуждали запутанность кода... Вы хоть контекст обсуждения в заголовке читали? Причем тут вообще сборщик мусора? А давно шаманили, разбирая набор данных со строками и бинарными структурами? Из потока? Ах да, это не модно нынче, ну ну...

"Соревнование по созданию запутанного кода на языке Си "
Отправлено chinarulezzz , 05-Ноя-14 18:42 
>>Чтобы было сложнее - потому что усложнить работу с памятью больше, чем в C может не каждый
> Работа с памятью очень простая и подчиняется принципу: нагадил - убери за
> собой. Да такое поведение несколько отличается от поведения животных, однако в
> этом и есть суть культуры.

сишники безкультурные? Даже костыляете анализаторы утечек для этого недоязычка.


"Соревнование по созданию запутанного кода на языке Си "
Отправлено Demo , 04-Ноя-14 20:46 

> И понятно почему именно Си выбран.

Да. Лучше бы на питоне.


"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 05-Ноя-14 05:32 
> Да. Лучше бы на питоне.

Да тут Шигорин как-то приводил пример. С переменными на японском. Отформатировано, конечно, нормально, но понятнее от этого не становится.

И кстати на питоне как раз можно без особого палива пару раз бэкспейс нажать в какой-нибудь достаточно большой программи. И поди там разберись - задумано так или баг/фича.


"Соревнование по созданию запутанного кода на языке Си "
Отправлено chinarulezzz , 05-Ноя-14 18:39 
> пару раз бэкспейс нажать
> И поди там разберись

о дааа)) подсвечивается код, выводится номер строки, сообщение IndentationError: *** и поди там разберись.


"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 06-Ноя-14 13:55 
Не всегда:

flag = 1
....
for item in items:
    if item = 1:
        bad_items.append(item)
        flag = 0
...


flag = 1
....
for item in items:
    if item = 1:
        bad_items.append(item)
    flag = 0
...


"Соревнование по созданию запутанного кода на языке Си "
Отправлено chinarulezzz , 06-Ноя-14 14:52 
>[оверквотинг удален]
>         bad_items.append(item)
>         flag = 0
> ...
> flag = 1
> ....
> for item in items:
>         if item = 1:
>                 bad_items.append(item)
>         flag = 0
> ...

и не понятно ничего, задумано так, или фича, ага ;-) таким же образом можно фигурную скобку переместить куда не/надо, и поди разберись... Детский сад какой-то)) Глянь настоящую неоднозначность http://underhanded.xcott.com/. Смысловое значение конструкций языка говорит что вроде всё ок, а на самом деле не ок. На нормальных языках эта бессмысленность не проканает. И слава богу.


"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 05-Ноя-14 05:30 
> собираюсь кодовую базу АНБ-шники

Спалился ^^ :)


"Соревнование по созданию запутанного кода на языке Си "
Отправлено Ilya Indigo , 04-Ноя-14 13:31 
Конкурс учредили случаем не АНБ-шники, для негласного набора разработчиков, например openSSL, или прочих проектов, куда нужно внедрить не очевидный бэкдор, и по возможности, что бы код был запутанным?

"Соревнование по созданию запутанного кода на языке Си "
Отправлено anonymus , 05-Ноя-14 01:26 
Как раз наоборот. Конкурс учредили те, кто хочет привлечь внимание к проблеме вездесущести АНБ. Шаг первый в противостоянии с ним - продемонстрировать на практике, какими широкими возможностями он обладает, и насколько уязвима разработка.

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 04-Ноя-14 13:49 
"Давай поиграем в игру" http://q.viva64.com/
http://habrahabr.ru/company/pvs-studio/blog/237219/

Примеры взяты из реальных проектов.


"Соревнование по созданию запутанного кода на языке Си "
Отправлено mine , 04-Ноя-14 16:22 
Проблема проблем - в кодстайле и нечитаемых апи винды.

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 05-Ноя-14 05:46 
> "Давай поиграем в игру" http://q.viva64.com/

КГ/AМ, оно мне половину примеров не засчитало лишь за то что я кликнул немного неидеально. Не, ну хотя-бы всю невалидную конструкцию в целом можно засчитывать, или где? А то клацаем на явно неверном выражении. Обана - неверно. Оказывается - за то что клацнул не на переменную а на скобку рядом с ней. Однако.


"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 04-Ноя-14 14:06 
systemd

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 04-Ноя-14 14:08 
По крайней мере код там читабельный, придерживаются стандартов ядра. Тут дело в другом...

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Led , 05-Ноя-14 01:44 
> По крайней мере код там читабельный

Обычно об этом вопит тот, кто его не читал.


"Соревнование по созданию запутанного кода на языке Си "
Отправлено некто1120 , 06-Ноя-14 15:22 
> > По крайней мере код там читабельный
> Обычно об этом вопит тот, кто его не читал.

Я читал, но просто из интереса, без практических целей. Ничего страшного не нашёл (но и глубоко не копался).

Можете привести пример плохого кода, ОТЛИЧНЫЙ от тех, о которых традиционно кричат тролли:
1. "они хранят возвращаемое значение в переменной r, а не variableStoringTheValueToBeReturnedFromTheFunction",
2. "у них тут switch (if/elseif) на 100500 вариантов занимает больше 20 строк",
3. "у них тут есть функции длиннее 3 строк, и комментарии короче 20 строк"
4. "они используют goto для выхода из вложенного цикла"

?


"Соревнование по созданию запутанного кода на языке Си "
Отправлено chinarulezzz , 05-Ноя-14 18:43 
> По крайней мере код там читабельный, придерживаются стандартов ядра. Тут дело в
> другом...

там быдлокод читабельный)))


"Соревнование по созданию запутанного кода на языке Си "
Отправлено 530 , 04-Ноя-14 18:25 
И как всегда победили индусы???

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 04-Ноя-14 23:20 
Запутанная программа на с++: ставим в любом месте goto и переходим на ассемблерную вставку на пару сотен строчек.

"Соревнование по созданию запутанного кода на языке Си "
Отправлено тоже Аноним , 05-Ноя-14 00:04 
Это нечто противоположное заданию.
На самом деле, в заголовке зря употреблен эпитет "запутанный".
Имеется в виду код с подвохом - он легко читается и вполне понятен, но при этом делает не то, что кажется на первый взгляд.
То есть потенциально проходящий даже независимый аудит СПО...

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 05-Ноя-14 05:47 
> Запутанная программа на с++: ставим в любом месте goto

...и все дружно пойдут выяснять: а куда оно ведет.

> и переходим на ассемблерную вставку на пару сотен строчек.

"Незаметно копаем на дороге в центре города пятиметровую яму, в надежде что никто не заметит".



"Соревнование по созданию запутанного кода на языке Си "
Отправлено Отражение луны , 04-Ноя-14 23:54 
Не тот язык немного. Им нужно было выбрать php, тогда соревнования стали бы действительно жесткими.

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 05-Ноя-14 08:06 
Brainfuck тогда уж, можно и незапутанный - один хрен, никто не поймет, что код делает.

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 05-Ноя-14 05:23 
оо малварь будет крепчать, деньга в карман мошенника потянется

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 05-Ноя-14 05:46 
Да кому это нужно? Ну тока если АНБ народ на работу нанимать.

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 05-Ноя-14 16:30 
Вообще, можно, например, объявить какой-то класс x с методом y, который делает что-то хорошее, а потом объявить класс X - потомок x, а метод y перегрузить, чтоб делал что-то плохое. и в одной подпрограмме объявить локальный объект z класса x, который отрабатывает как положено, а в другой - объект z класса X, в котором вызов того же с виду метода даст другой результат.

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 05-Ноя-14 21:34 
начальный уровень

"Соревнование по созданию запутанного кода на языке Си "
Отправлено A , 05-Ноя-14 21:55 
казалось бы, при чем здесь Си

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 07-Ноя-14 14:29 
Не поленился перейти по ссылке и посмотреть условия, в FAQ:

Can I use C++ instead of C?

If you actually want to do something like that, then sure. No COBOL, please.

Так что вышеприведенный коммент неуместен.


"Соревнование по созданию запутанного кода на языке Си "
Отправлено Аноним , 05-Ноя-14 22:48 
Это для JS ты написал? Молодец.

"Соревнование по созданию запутанного кода на языке Си "
Отправлено Mt , 06-Ноя-14 11:42 
The underhanded goal is this: write surveil() in such a way that the act of surveillance is subtly leaked to the user or to the outside world. PiuPiu can not reveal the act of surveillance, but your function is technically able to edit the Piu or user structure during scanning. Find a way to alter that data (this alone is a bit of a challenge, since you are not supposed to alter the data, just scan it) in such a way that an informed outsider can tell if someone is being archived. The leakage should be subtle enough that it is not easily noticed.

И хоть бы кто-то написал что цель задания была - написать код таким образом, чтобы факт проверки аккуратно "утек" наружу. Задача-то существенно сложнее и интереснее чем кажется из новости.