Что такое киберчемпионаты?
Специалист по Computer Science Денис Гамаюнов рассказывает о типах задач на киберчемпионатах, атмосфере соревнований в кибербезопасности и изменениях в университетском образовании
Более подробно в первоисточнике: https://postnauka.ru/faq/88629ПостНаука рассказывает о современных технологиях в проекте «Банк знаний», созданном совместно с Корпоративным университетом Сбербанка.
Сегодня прямо на наших глазах соревнования хакерских команд меняют подход к обучению в университетах в области Computer Science, и, на мой взгляд, это очень позитивные изменения. До сих пор образование в кибербезопасности строилось по классической университетской схеме: есть курсы, которые разрабатываются, допустим, год, а потом преподаватель лет пять читает один курс с небольшими изменениями, то есть инертность очень высока. И такое стандартное образование не позволяет ничего сделать, например, с атакой zero day, ботом или массово распространяющимся червем, потому что у студентов нет необходимой практики. Нужно знание, что называется, на пальцах.
Практика даже в лучших университетах, к сожалению, пока несовершенна. Например, в MIT проекты по безопасности в значительной степени привязаны к программному обеспечению, которое пишется в MIT, и это само по себе странно. Весь интернет живет на одном стеке технологий, а студенты MIT изучают свой экзотический софт, который, конечно, используется, но далеко не так распространен, как хотелось бы. Это их учит проектировать что-то новое, но практический опыт, который студенты получают на этих курсах, недостаточен для работы. Возможно, в любой сфере так, но в Computer Science этот разрыв особенно заметен.
Но теперь появились CTF-соревнования (capture the flag. — Прим. ред.). Смысл их в том, что организуются игры двух типов: на решение задач и типа Attack-Defense, то есть когда приходится атаковать или защищаться в течение ограниченного времени. Организаторы готовят историю. Например, она может состоять из сервера с уязвимостями, о которых команда ничего не знает. И у каждой команды есть экземпляр такого сервера или целая сеть из виртуальных машин с разными сервисами. В историю может быть включен интернет вещей, бывают какие-то устройства, на которые нужно уметь через USB или даже JTAG зайти и что-то посмотреть.
Каждая команда получает экземпляр такой среды, и они все с самого начала игры видят друг друга. Задача — быстро искать уязвимости, находить и атаковать чужие команды. И за каждую успешную атаку даются какие-то фишки, они называются флагами — по аналогии с «Зарницей». Соответственно, кто успешнее атакует, тот получает больше таких фишек за атаки. За защиту тоже дают очки, если в своих сервисах команда нашла уязвимости, пропатчила, обновила и при этом они продолжили работать, то есть сохранилась правильная функциональность. Для этого нужно самим разобраться в коде и написать патч, который исправляет эту уязвимость, либо как-то умно ее закрыть. Можно на уровне трафика анализировать и находить атаки и фильтровать их. В общем, вариантов масса.
Для этих соревнований создается обычно абсолютно уникальная среда. Она может делаться на популярных фреймворках, но уязвимости придумываются очень даже экзотических типов. В прошлом году на Defcon (большая конференция в США по вопросам кибербезопасности, которая проходит в Лас-Вегасе каждое лето) специально для CTF сделали новую компьютерную архитектуру со своей операционной системой. В обычных процессорах 64- или 32-битная адресация, совсем старые восьмибитные процессоры были, а они сделали девятибитную. И тем, кто играл в этом чемпионате, пришлось писать все с нуля.
Оказалось, что эти соревнования дают очень хорошую кривую обучения, причем во многом за счет соревновательного духа. Прелесть формата еще в том, что всегда есть задания попроще и задания посложнее, особенно те, которые сформулированы как конкретные задачи. И получается, что у каждого есть шанс впервые начать играть в CTF и что-то решить, а дальше участники начинают вовлекаться в это. И так как это командная игра, есть те, на кого можно равняться и расти. Часто люди настолько заражаются, что начинается самоподдерживающийся процесс такого обучения. CTF сейчас проходят часто, почти каждую неделю можно где-то поиграть. Они по всему миру доступны онлайн, и есть сайт ctftime.org, его делают русские ребята одной из команд. И эта система начинает встраиваться в университетское образование.
Первый CTF проходил на Defcon. В 1990-х годах организаторы просто поставили уязвимые банкоматы в холле, их можно было взламывать. На следующий год сделали рейтингование — кто быстрее взломает. И началось. Потом появились такие же академические соревнования, университет в Санта-Барбаре проводит свои чемпионаты с 2002 года, в России это началось примерно в 2007 году. Но если в США есть сотни университетских команд, то в России их гораздо меньше: в мировом рейтинге видно 15–20 команд.
Сейчас эти ребята, которые студентами или аспирантами поиграли в CTF, вернулись в вузы уже в роли преподавателей или экспертов и начали встраивать соревнования в программу обучения, строят семинары на том, чтобы готовить студентов к CTF. Из моего личного опыта это дает на выходе намного более технически подготовленных людей, которые одновременно могут иметь ту же университетскую теоретическую базу, что и обычно, но вдобавок к этому еще умеют руками работать и очень быстро адаптируются, потому что задания бывают самые неожиданные. Нужно быстро разбираться, осваивать какую-то новую технологию или новый язык программирования. Потому что читать статьи и разбираться в теории процессов — это одно, а уметь искать практические решения — совсем другое.
Это очень важно, особенно сейчас, потому что если раньше криптография имела сравнительно узкие области применения, то теперь везде стал использоваться блокчейн, то есть потребность в специалистах по прикладной криптографии выросла на порядок. Например, в «Эфире», Ethereum, — это одна из криптовалют — есть смарт-контракты. Это программы на специальном языке, которые автоматически проверяют условия, при которых платеж должен быть совершен. То есть можно очень быстро и эффективно реализовывать договоры. Например, вы договорились о продаже станка. И если он поставлен, определился в какой-то геолокации, то деньги должны отправиться автоматически. Но этот язык оказался настолько плохо реализован, что в нем сразу нашли большое число уязвимостей.
Появилась инновационная среда, в которую сразу начали инвестироваться большие деньги, но оказалось, что ее создали люди, программисты, которые хорошо знают, может быть, криптографию, но плохо разбираются в безопасности в целом. И сразу получается, что любой, кто чуть лучше разбирается в безопасности, может быстро все деньги со всех кошельков взять, себе перевести, и ничего с этим сделать нельзя.
Игровой формат обучения в области кибербезопасности оказался не только эффективным, но и своевременным и позволяет многократно увеличить количество грамотных специалистов, которые хорошо понимают современные технологии.