Winners of the 7th
Underhanded C Contest are now online.
…
Every year, we will
propose a challenge to coders to solve a simple data processing
problem, but with covert malicious behavior. Examples include
miscounting votes, shaving money from financial transactions, or
leaking information to an eavesdropper. The main goal, however, is to
write source code that easily passes visual inspection by other
programmers.
Задача: написать
код, решающий некую несложную проблему,
таким образом, чтобы этот код был прост,
легко читаем, понятен и, при этом, содержал
в себе скрытую багу. Фишка в том, чтобы,
несмотря на легкость аудита глазками,
аудиторы пропустили бы багу.
Лучший саботажник
получает символическую награду.
Отдельно
доставляет задание, которое надо
саботировать:
есть некая
соц.сеть, ПиуПиу, в которой можно
обмениваться сообщениями по 140 символов.
Правительство требует, чтобы сообщения,
соответствующие неким шаблонам,
записывались в некий архив, незаметно
для пользователей.
Победитель
соревнования очень ловко закопал багу
в коде аудита, насыщенном макросами.
Хотя, опытный глаз, я думаю, без особых
проблем обнаружил бы подозрительное
место:
#define AUDIT(value) \ ({ \ if (check_clock_skew()) \ fprintf(stderr, "ERROR: Clock skew detected! Times reported will be incorrect.\n"); \ else \ { \ memcpy(audit_ptr, (char*)&value, sizeof(value)); \ audit_ptr += sizeof(value); \ } \ value; \ }) |
Занятно и
поучительно
original post http://vasnake.blogspot.com/2015/06/winners-of-7th-underhanded-c-contest.html
Комментариев нет:
Отправить комментарий