eatmore's blog

By eatmore, history, 6 years ago, In Russian

Всем привет. Я решил ещё раз поднять тему Flash Player в контексте его использования на Codeforces для взломов.

Эту тему уже поднимали неоднократно, давно и не очень. Все ответы администрации сводились к двум утверждениям: что Flash работает и что систему, основанную на Flash, трудно обойти. Оба эти утверждения ‒ ложь.

В последнее время я несколько раз пытался смотреть код других участников во время контеста, и у меня не разу не получилось. Каждый раз показывалось что-то такое. При этом я использовал последнюю версию Flash. При этом процесс plugin-container, в котором работает Flash, падал с необработанным исключением (SIGSEGV). Это то, что может произойти, если, например, решение задачи на C++ выходит за границы массива. Видимо, Flash Player по качеству кода недалеко ушёл от таких решений.

При таком качестве кода не удивительно, что у Flash плохо с безопасностью. MikeMirzayanov, конечно, скажет, что уязвимости есть не только в Flash. Но если в Chrome или Firefox найдут уязвимость, которая будет активно эксплуатироваться, то Google и Mozilla выпустят обновление как можно быстрее, а Adobe (как и Microsoft) будут ждать до следующего планируемого выпуска патчей (патчи выпускаются во второй вторник каждого месяца). Кроме того, использование Flash добавляет все его уязвимости к тем, что уже есть в браузере (это одна из причин, по которой браузеры отказываются от поддержки вообще всех плагинов, а не только Flash).

В общем, как я уже написал, Flash небезопасен. Flash не работает ‒ по крайней мере, под Linux. Из-за лицензионных ограничений, Flash под Linux нельзя скачать из репозитория, нужно качать и ставить обновления вручную (но это не важно, так как он всё равно не работает). Можно, конечно, специально для взломов использовать виртуальную машину с Windows (там Flash работает), но это неудобно. Я считаю, что необходимость в подобных действиях для полноценного участия в контестах ‒ свинство со стороны администрации.

Даже когда Flash работает, основанный на нём интерфейс для чтения кода, мягко говоря, оставляет желать лучшего. Код приходится читать в окошке посередине экрана, набранный корявым шрифтом, а прокрутка ‒ это вообще извращённый садизм. Да чтоб тот, кто это поделие придумал, до конца жизни писал код только через такой же интерфейс!

И наконец: MikeMirzayanov почему-то считает, что новички для того, чтобы нарушить правила, с лёгкостью установят Firebug, но при этом не додумаются установить декомпилятор для Flash. Так вот: декомпиляторы для Flash существуют, их легко найти, и первый же найденный декомпилятор легко декомпилирует Flash-файлы с Codeforces. И я удивлюсь, если ещё никто ни разу не копировал чужой код через функцию взлома. Впрочем, если это и так, то это скорей говорит о честности участников.

Теперь к главному. Я изучил, как работают Flash-файлы с Codeforces и, в частности, как они расшифровывают решения. Я собираюсь выложить эту информацию, чтобы показать, что «защита» на основе Flash не имеет преимуществ перед «защитой» на основе Javascript, и таким образом подтолкнуть администрацию к тому, чтобы отказаться от Flash. Также я сделал расширение для Chrome и Firefox, которое позволяет читать код без Flash. Его я тоже собираюсь выложить. Так или иначе, я избавлю себя и других участников от необходимости держать Flash ради Codeforces. Других сайтов, где без Flash что-то не работает, я не встречал уже давно.

UPD Продолжение: Почему Codeforces не нужен Flash.

  • Vote: I like it
  • +220
  • Vote: I do not like it