Добрый день, Codeforces!
Совсем недавно, во время раунда Tinkoff Challenge — Финал, случайным образом я наткнулся на очень интересный баг в системе. Интересный потомучто простым смертным контестантам с помощью него можно в каком-то роде почуствовать себя менеджерами!
Ну и конечно, делюсь не потомучто хочу чтобы пользовались, а наоборот чтобы побыстрее исправили его!
Пожалуй, начну с того что саму уязвимость я целиком не знаю, но раз уж нашел его я по чистой случайности, то и тем кто ищут чем бы насолить, обнаружить и еще больше углубиться в нем не составит труда.
Так уж получилось, что во время раунда я проводил два мэшап контеста внутри закрытой группы. У одной из них время начала и окончания контеста в точности совпадали с раундом codeforces, в последствии чего я подозреваю и возник баг.
Во первых, в основной странице контеста в группе появились какие-то странные красные надписи, на которые я сразу не обратил внимания.
Лишь потом понял что система кларов раунда, и моего контеста конфликтуют — решил разобраться в чем дело
Первым делом, хотел сделать общее оповещение — не вышло, так как можно только по определенной задаче оповещать и у меня задач с раунда в списке не было. Думал что на этом все и лишь клары читать могу. Но нет! Оказалось что и публиковать/скрывать клары можно.
И вот результат:
А дальше, любопытный я сразу же хотел попробовать проверить ответить на клар — к сожалению или к счастью, как бы я тщательно не пытался кнопка отправить никак не нажималась.
За несколько секунд до конца контеста я вернул все как было, т.е. скрыл все клары которые я публиковал. И к моему удивлению, после контеста все вышесказанные баги/фичи остались как есть.
Как я и говорил в начале поста, я сразу решил что лучше написать Михаилу. А чтобы он мне поверил, я опубликовал единственный клар в котором говорится что кто-то кого-то подозрительно взламывает. На этом мои исследования подошли к концу, хотя все еще могу покопаться в том что осталось после раунда.
В завершении хочу лишь добавить что надеюсь эта уязвимость окажется последней в codeforces и данный факт послужит хорошим уроком для его сотрудников. Думаю когда проект приобретает значительные масштабы, то самое время побольше позаботиться о его информационной безопасности.
Всем добра!
Обновление: эта уязвимость больше не актуальна. По крайней мере мне не удалось воссоздать предыдущие обстоятельства. К моему удивлению не смотря на то что клар, мною ранее опубликованный, все еще виден, все вышесказанные возможности теперь не доступны.
Чтож, кажется это все же долгожданный конец моего поста.
Я искренне рад что мне посчастливилось еще больше улучшить нашу всеми любимую систему codeforces!
Всем удачи!