Повышение осведомленности в области информационной безопасности в компании
Рассмотрение подходов по обучению разработчиков и администраторов безопасной разработке программного обеспечения. Разработка способа обучения основам обеспечения безопасности при разработке программного обеспечения. Проверка разработанной методики.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 01.12.2019 |
Размер файла | 6,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ОБРАЗОВАНИЯ
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ
«ВЫСШАЯ ШКОЛА ЭКОНОМИКИ»
Факультет Бизнес-информатики
Выпускная квалификационная работа - МАГИСТЕРСКАЯ ДИССЕРТАЦИЯ
Повышение осведомленности в области информационной безопасности в компании
Козлов Никита Вячеславович
Научный руководитель
Профессор Левашов Михаил Васильевич
СОДЕРЖАНИЕ
АННОТАЦИЯ
1.ВВЕДЕНИЕ
1.1 ЦЕЛИ И ЗАДАЧИ
2. СУЩЕСТВУЮЩИЕ РЕШЕНИЯ
2.1 КРИТЕРИИ СРАВНЕНИЯ РЕШЕНИЙ
2.2 БИЛЕТЫ НА МЕРОПРИЯТИЯ ПО ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ
2.3 ТЕСТЫ НА ПРОНИКНОВЕНИЕ
2.4 ПРОГРАММА BUG BOUNTY
2.5 ЛЕКЦИИ ПО ОСВЕДОМЛЕННОСТИ О ПРОБЛЕМАХ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ ДЛЯ ВСЕЙ КОМПАНИИ
2.6 ПРОВЕДЕНИЕ ЛЕКЦИЙ ДЛЯ РАЗРАБОТЧИКОВ
2.7 ВНУТРЕННИЕ ОБРАЗОВАТЕЛЬНЫЕ ПРОГРАММЫ
2.8 СРАВНЕНИЕ РЕШЕНИЙ
3. ПРЕДЛАГАЕМОЕ РЕШЕНИЕ
3.1 ПРОГРАММА ТЕСТИРОВАНИЯ
3.2 ПРОГРАММА ЛЕКЦИЙ
3.3 ПРОГРАММА СОРЕВНОВАНИЙ
3.3.1 ЗАДАЧА COOKIE MONSTER
3.3.2 ЗАДАЧА OCTOCAT
3.3.3 ЗАДАЧА PORTER
3.3.4 ЗАДАЧА ROUTER
3.3.5 ЗАДАЧА SIMARILL STORE
3.3.6 ЗАДАЧА SIMARILL STORE 2
3.3.7 ЗАДАЧА KAVICHKA
3.3.8 ЗАДАЧА EAGLE EYE
3.3.9 ЗАДАЧА PICK WISELY
3.3.10 ЗАДАЧА BLOGGER
4. ПРОВЕРКА РЕШЕНИЯ
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
АННОТАЦИЯ
Вопрос обеспечения информационной безопасности в компании не теряет актуальность со временем. Во многих компаниях, разработка программных продуктов занимает важную роль в процессе деятельности. Существует множество подходов по обучению разработчиков и администраторов безопасной разработке программного обеспечения. В данной работе проведено сравнение некоторых из этих подходов и на его основе разработан способ обучения основам обеспечения безопасности при разработке программного обеспечения. Также в работе представлены результаты проверки данной методики в компании.
1.ВВЕДЕНИЕ
программный обеспечение безопасность администратор
Тема информационной безопасности в разработке программных продуктов не теряет своей актуальности из года в год. По данным компании Positive Technologies за 2018 год, в 19 % проанализированных экспертами веб-приложениях, были найдены уязвимости, которые позволяли злоумышленнику получить полный контроль как над самим приложением, так и над операционной системой сервера [1].
За последние 5 лет доля сайтов с уязвимостями различной степени риска не уменьшается, что мы видим на Рисунке 1. На данный момент ничего не указывает на то, что эти доли сильно уменьшатся в последующие года.
Рисунок 1 Доля сайтов с уязвимостями различной степени риска
Рейтинг из 10 самых распространенных ошибок составили участники открытого проекта обеспечения безопасности веб-приложений OWASP[2][3]. На 2017 год он включает в себя следующие пункты:
1. Инъекции.
2. Ошибки аутентификации.
3. Раскрытие чувствительных данных.
4. Внешние сущности XML.
5. Ошибки контроля доступа.
6. Ошибки конфигураций параметров системы, отвечающих за информационную безопасность.
7. Межсайтовое выполнение скриптов.
8. Ошибки десериализации.
9. Использование компонентов с известными уязвимостями.
10. Недостаточное логирование и мониторинг.
Этот рейтинг составлен с учетом распространенности проблем и тех рисков, которые они несут. Все эти проблемы разработчики могут и должны устранять сами, но, чаще всего, им для этого не хватает компетенций, времени или мотиваци.
Все эти проблемы могут быть вызваны многими причинами. Ошибки могут быть в процессах. Например, в компании нет практик по перекрестной проверки кода на проблемы информационной безопасности. Также в большинстве компаний нет систематизированного обучения и передачи знаний, найденные уязвимости не раскрываются и не проводятся мероприятия по предотвращению появления такого класса уязвимостей в будущем. Менеджеры могут оказывать давление в пользу количества улучшений продукта, а не их качества, таким образом разработчики не будут заинтересованы улучшать безопасность веб-приложения.
Еще могут быть технические ошибки, такие как отсутствие базовых проверок приложений, например отсутствие проверки зависимостей приложений или отсутствие логирования действий пользователей и инцидентов информационной безопасности.
Последний класс причин можно отнести к самим разработчикам. Зачастую, в вузах уделяется недостаточное внимание проблемам информационной безопасности и разработчики не получают каких-либо навыков поиска, эксплуатации и устранения уязвимостей. Следовательно разработчики имеют очень ограниченное представление о возможных векторах атаки на их веб-приложения. Также недостаточное информирование о проблемах информационной безопасности порождает такую ошибку мышления, когда кажется, что эти проблемы очень редки и можно не уделять им достаточного внимания.
Ситуация в крупных компаниях такая же как и в маленьких. По данным платформы hackeone.com, где исследователи сообщают крупным компаниям о проблемах с информационной безопасностью в их приложениях, за 2018 год было получено 78,275 сообщений о проблемах [4]. С июня 2018 года по июль 2018 года, на платформе было выплачено 31 миллион долларов, в качестве награды за найденные уязвимости. На платформе также размещаются даже государственные организации, такие как европейская комиссия, министерство обороны Сингапура и департамент защиты США.
1.1 ЦЕЛИ И ЗАДАЧИ
1. Сравнить существующие решения по обучению разработчиков информационной безопасности.
2. Разработать решение по повышению осведомленности разработчиков о проблемах информационной безопасности.
3. Проверить разработанное решение.
2. СУЩЕСТВУЮЩИЕ РЕШЕНИЯ
2.1 КРИТЕРИИ СРАВНЕНИЯ РЕШЕНИЙ
Для оценки эффективности обучения используются несколько моделей[5][6]. Модель Киркпатрика[7][8] состоит из четырех уровней, их можно увидеть на рисунке 2. Первый уровень реакции - как участники отреагировали на обучающие мероприятия. Второй уровень обучения - насколько хорошо участники усвоили материал. Третий уровень поведения - насколько успешно участники применяют полученные знания на практике. Последний, четвертый уровень результатов, были ли достигнуты намеченные результаты. В данной работе мы сможем относительно просто применить данную модель.
Рисунок 2 Модель Киркпатрика
Также есть модель Джека Филлипса[6][9]. Она предполагает расчет возврата на инвестиции, сколько денег принесло обучения, относительно стоимости самого обучения, формулу можно увидеть на рисунке 3. Эта модель очень удобна, если есть возможность оценить доход от проведенного обучения, что в данном случае проблематично.
Рисунок 3. Модель Филлипса
Другим способом оценки может стать модель Стаффлбима[6], она состоит из четырех взаимосвязанных частей, их можно увидеть на рисунке 4. Оценка результата обучения, оценка процесса обучения, оценка ресурсов организации на момент начала обучения и оценивается контекст в котором проходит обучение. Данная модель больше подходит для долгосрочного обучения менеджмента компании.
Рисунок 4 Модель Стаффлбима
Похожая на модель Стаффлбима, модель Берна[6]. Модель включает в себя этапы оценки целей и потребностей обучения, оценка знаний и умений сотрудников организации, оценка реакции участников и оценка результатов обучения, их можно увидеть на рисунке 5. Как и модель Стаффлбима она больше подходит для оценки долгосрочных программ обучения.
Рисунок 5 Модель Берна
Таким образом больше всего подходит модель Крикпатрика, при этом она является самой распространенной моделью оценки эффективности обучения[5][8]. Для более точной оценки программ обучения рассмотрим модель Крикпатрика подробнее.
На уровне “Реакция” оценивают следующие элементы:
? Вовлеченность, как активно обучающиеся участвуют и вносят вклад в свое обучению. Сюда входят как персональная ответственность, насколько учащийся сам увлекается и проявляет внимание, так и интерес к программе, как преподаватель увлекает аудиторию.
? Релевантность, как материал соотносится с повседневной деятельностью учащихся, могут ли они применить полученные знания.
? Удовлетворенность, остались ли учащиеся субъективно довольны программой.
На уровне “Обучение” оценивают элементы:
? Знания, как степень того, насколько обучающиеся знают информацию, и умения, как степень того, насколько обучающиеся могут применить полученную информацию и выполнить задачу.
? Установки, на сколько учащиеся верят в то, что занятия будут для них полезны и помогут с их ежедневными задачами.
? Уверенность, на сколько обучающиеся уверены в том, что смогут применить полученные знания в реальных условиях. Смогут ли повторить то, что узнали во время обучения.
? Решимость, на сколько учащиеся хотят применить полученные знания на практике, готовы ли они это делать, чувствуют ли в этом необходимость.
На уровне “Поведение” оценивают элементы:
? Критическое поведение или критические навыки - оцениваются несколько ключевых навыков, которые будут иметь наибольший эффект на рабочем месте, если будут регулярно применяться.
? Требуемые драйверы - оцениваются сформированные процессы, которые позволяют закрепить полученные навыки на рабочем месте. Такими процессами могут быть закрепление: тренинг на рабочем месте, напоминания, рабочие задания; поддержка: менторство, наставничество; вознаграждение: премии за применение знаний, поощрения за передачу знаний; мониторинг: плановые опросы, ключевые метрики отделов и сотрудников, планирование задач и тд.
На уровне “Результаты” оценивают элементы:
? Требуемые результаты - общие результаты компании после проведения обучения. Это общее и высокоуровневое определение на уровне миссии и цели компании.
? Ключевые индикаторы - измерение краткосрочных метрик, например количество инцидентов за промежуток времени, количество найденных ошибок за время аудита, качество продукции и так далее. Этот элемент отвечает за то, как полученные сотрудниками навыками влияют на конкретные цели и задачи.
В качестве еще одного параметра, который может влиять на принятие решение, какую обучающую программу проводить стоит добавить “Стоимость проведения”. Так как зачастую у компаний относительно небольшие бюджеты на мероприятия такого рода.
2.2 БИЛЕТЫ НА МЕРОПРИЯТИЯ ПО ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ
Бывает, что в компании есть бюджет на обучающие мероприятия, например билеты на конференции. курсы, семинары или вебинары. Таким образом компании помогают своим сотрудникам развиваться. Для того, чтобы курсы или вебинары были полезны компании, обычно нужно получить разрешение непосредственного руководителя.
Этот способ относительно недорогой, но при этом может страдать результативность обучения для компании. Даже если тематика обучения подходит компании, цели сотрудника и компании могут сильно различаться. Например, компании нужно, чтобы разработчики научились администрировать облачную архитектуру, а разработчики могут хотеть найти на курсах новую работу или просто интересно провести время.
Одним из таких мероприятий по обучению может стать и конференция по информационной безопасности. В России, на 2018 год, самые известные конференции по этой теме - ZeroNight[10] и PHDays[11]. На них выступает множество докладчиков с презентациями на совершенно разные темы. Есть направления для разработчиков, где слушателей знакомят с самыми базовыми понятиями информационной безопасности. Есть направления по уязвимостям в бинарных программах, где разбирают как проводить обратную разработку таких программ, находить и эксплуатировать уязвимости в них. Есть направления по криптографии, где обсуждаются проблемы старых шифров и преимущества новых. Так что каждый слушатель найдет чем заняться[12].
Если сравнивать их в терминах модели Киркпатрика, то реакция на конференции обычно очень положительна. Всем интересно посмотреть стенды различных брендов, послушать лекции, увидеться с людьми из индустрии.
При этом обучение обычно находится на очень низком уровне, материал не структурирован относительно целей компании или знаний разработчика, нет тестов или вопросов, другими словами проверки знаний.
Поведение также находится на довольно низком уровне, на таких докладах не рассказывается как применять навыки в конкретной компании, шансы на то, что разработчик сможет применить что-то конкретное после посещения такого мероприятия очень малы. Сводную таблицу можно увидеть ниже (Таблица 1).
Аналогичная ситуация наблюдается и с результатами такого обучения. Если разработчику не повезло услышать что-то относящееся к его работе, то результатов, скорее всего, не будет.
Таблица 1
Уровень |
Значение |
|
Реакция |
Высокое |
|
Обучение |
Низкое |
|
Поведение |
Низкое |
|
Результаты |
Низкое |
|
Цена |
Низкое |
После таких мероприятий разработчики могут задуматься о проблемах информационной безопасности и даже некоторое время активно развиваться в этом направлении, но обычно на конференциях не дают видимых, с точки зрения компании, результатов.
2.3 ТЕСТЫ НА ПРОНИКНОВЕНИЕ
Отчасти обучающий момент есть в тестах на проникновение. Разработчики сталкиваются с проблемами информационной безопасности в своем коде и вынуждены их исправить. Тестами на проникновение в России занимается много компаний, например Group-IB, Positive Technologies, Bizone. Во время тестов на проникновение, эксперты в информационной безопасности проводят анализ исходных кодов, инфраструктуры и тестирование веб-сервисов. По результатам тестирования заказчику предоставляется отчет со всеми найденными уязвимостями, шагами по их воспроизведению, описание и оценка опасности данной уязвимости. Также в отчете есть шаги или рекомендации по устранению данных уязвимостей [13].
Если оценить тестирование на проникновение в рамках модели Киркпатрика, то реакция на такое событие со стороны разработчиков обычно негативная, так как им явно показывают на их некомпетентность в какой-то области, также появляются задачи, которые не влияют на их оценку продуктивности, но которые нужно сделать. Им приходится изучать некоторый предмет в конкретный момент времени помимо их воли.
Обучение можно оценить на средний уровень, так как разработчики познакомятся с новыми концептами информационной безопасности и на практики будут взаимодействовать с ним. Им придется изучить конкретную уязвимость и исправить её, что является хорошим обучением. При этом будет затронута только небольшая область информационной безопасности, относительно конкретной проблемы.
Поведение скорее всего будет на низком уровне, так как во время обучения будут затронуты только прикладные аспекты очень малого количества уязвимостей. Разработчик может даже не понять причин, вызвавших такое поведение системы.
Результаты при этом можно оценить на средний уровень, так как на момент проведения большинство уязвимостей будет найдено и устранено. При том, что поведение останется на низком уровне, то в долгосрочной перспективе уязвимости, скорее всего, будут появляться с такой же частотой. Сводную таблицу можно увидеть ниже (Таблица 2).
Таблица 2
Уровень |
Значение |
|
Реакция |
Низкое |
|
Обучение |
Среднее |
|
Поведение |
Низкое |
|
Результаты |
Среднее |
|
Цена |
Высокое |
2.4 ПРОГРАММА BUG BOUNTY
Некоторые крупные компании открывают программу Bug Bounty, например на сайте hackerone.com [14]. Правила программы Bug Bounty заключается в том, что любой эксперт по информационной безопасности может провести тест приложений данной компании и получить награду за найденные уязвимости.
Компания указывает список сервисов и приложений, которые они хотят протестировать с точки зрения информационной безопасности на сайте, например hackerone.com[14][16][17]. Исследователи видят это объявление, проводят тесты, находят уязвимости и предоставляют компании отчеты, схожие с отчетами экспертов по информационной безопасности во время тестирования на проникновение. Они включают в себя описание уязвимости, шаги по воспроизведению, описание и оценку опасности данной уязвимости и возможные шаги по ее устранению.
С точки зрения модели Киркпатрика, это очень похоже на тестирование на проникновение, с единственным отличием, что правки поступают более размеренно, и при этом качество отчетов может быть довольно низким. Следовательно таблица будет такая же как и для тестирования на проникновение (Таблица 3).
Таблица 3
Уровень |
Значение |
|
Реакция |
Низкое |
|
Обучение |
Среднее |
|
Поведение |
Низкое |
|
Результаты |
Среднее |
|
Цена |
Высокое |
2.5 ЛЕКЦИИ ПО ОСВЕДОМЛЕННОСТИ О ПРОБЛЕМАХ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ ДЛЯ ВСЕЙ КОМПАНИИ
Также компании часто проводят лекции по основам информационной безопасности для всей компании [15]. Такие лекции включают в себя обучение базовым терминам информационной безопасности, таким как фишинг, вирус и социальный инжиниринг. Лекции направлены на повышение общего понимания проблем и угроз информационной безопасности. Сотрудники должны понимать, что вводить пароль от корпоративной почты можно только на сайте корпоративной почты, что нужно всегда проверять сайт, на котором оставляешь какие-либо данные. Также они должны знать, что нельзя доверять всем письмам и запускать исполняемые файлы из них.
Эти лекции хорошо работают для общего понимания проблем информационной безопасности всеми сотрудниками компании. Но такие лекции не включают в себя секций специфичных для разработчиков, таких как нахождение и устранение уязвимостей, практик написания безопасного кода и другим проблем связанных только с разработкой программного обеспечения.
По модели Киркпатрика, реакция находится на высоком уровне. Обучающие программы такого плана относительно не сложные и интересно подготовлены. Понять материал может каждый, так что его легко и интересно слушать.
Обучение находится на низком уровне, так как материал не специфичен для разработчиков и процессов разработки.
Поведение находится на низком или среднем уровне, так как разработчики начинают думать о проблемах информационной безопасности и интересоваться ими. Но возможно им не хватит начальных знаний, чтобы сохранить темпы развития.
Результаты находятся на низком уровне, так как разработчики не получают знаний и навыков поиска и устранения уязвимостей. Сводную таблицу можно увидеть ниже (Таблица 4).
Таблица 4
Уровень |
Значение |
|
Реакция |
Высоко |
|
Обучение |
Низкое |
|
Поведение |
Низкое - среднее |
|
Результаты |
Низко |
|
Цена |
Высокое |
2.6 ПРОВЕДЕНИЕ ЛЕКЦИЙ ДЛЯ РАЗРАБОТЧИКОВ
Некоторые компании, такие как Яндекс или Mail.ru проводят как внутренние так и внешние лекции для разработчиков на различные темы. Иногда там затрагиваются вопросы информационной безопасности. Таким образом команды безопасности этих компаний делятся знаниями как разрабатывать более безопасные продукты и как обезопасить существующие.
Также у Яндекса проходил курс по информационной безопасности для специалистов по информационной безопасности. Они сделали его публично доступным, выложив на сайт youtube.com, сам курс можно найти по адресу https://habr.com/ru/company/yandex/blog/414821/
Компания Mail.ru проводит “Security Meetup”, на котором выступают специалисты из разных компаний со своими наработками и исследованиями [18].
Эти мероприятия по своей структуре похожи на небольшие конференции, как по качеству содержания лекций, так и по пользе для разработчиков. Так как материалы не подбираются под конкретную компанию, то все оценки такие же как у билетов на мероприятий по информационной безопасности (Таблица 5).
Таблица 5
Уровень |
Значение |
|
Реакция |
Высокое |
|
Обучение |
Низкое |
|
Поведение |
Низкое |
|
Результаты |
Низкое |
|
Цена |
Низкое |
2.7 ВНУТРЕННИЕ ОБРАЗОВАТЕЛЬНЫЕ ПРОГРАММЫ
Некоторые компании готовы проводить полномасштабные специализированные занятия для всех сотрудников. Например в компании Cisco запустили специальную платформу под названием Cisco Security Ninja[19]. Она была сделана на основе тренингов компании Adobe [20].
Тренинги включают в себя циклы занятий для различных специальностей внутри компании, в частности для инженеров, занимающихся программной частью, для инженеров, разрабатывающих устройства, для менеджеров и для инженеров тестирования (см Рисунок 6).
Рисунок 6 Специализации в Cisco Security Ninja
Сами занятия разделены по уровням сложности и состоят из лекций, практических занятий, обучению других сотрудников, исправлений реальных проблем в программном обеспечении и исследованиях (см. Рисунок 7). Программа была запущена в 2014 году, а уже в марте 2015-го года 20000 сотрудников получили пояс.
Рисунок 7 Направления занятий Cisco Security Ninja
В соответствии с уровнями модели Киркпатрика, реакция и обучения проходят на очень высоком уровне, про поведение и результаты таких данных нет. По косвенным признакам их можно оценить как средние или высокие. Цена при этом довольно высока, так как нужны сотрудники, которые постоянно занимаются такой платформой. Сводную таблицу можно увидеть ниже (Таблица 6).
Таблица 6
Уровень |
Значение |
|
Реакция |
Высоко |
|
Обучение |
Высоко |
|
Поведение |
Высоко |
|
Результаты |
Высоко |
|
Цена |
Высоко |
2.8 СРАВНЕНИЕ РЕШЕНИЙ
Таким образом видно, что мероприятия можно разбить на 3 класса: относительно недорогие лекции и конференции с плохими результатами; дорогие непрофильные мероприятия, которые могут дать средние или низкие результаты; очень дорогая разработка внутренней системы обучения. Можно объединить лучшие части каждого способа и создать недорогую программу обучения разработчиков и администраторов основам информационной безопасности при разработке программного обеспечения. Сводную таблицу можно увидеть ниже (Таблица 7).
Таблица 7
Мер-е\Ур-нь |
Реакция |
Обучение |
Поведение |
Результаты |
Цена |
|
Билеты на конференции |
Высоко |
Низко |
Низко |
Низко |
Низко |
|
Тесты на проникновение |
Низко |
Средне |
Низко |
Средне |
Высоко |
|
Программа Bug Bounty |
Низко |
Средне |
Низко |
Средне |
Высоко |
|
Лекции по осведомленности |
Высоко |
Низко |
Низко-средне |
Низко |
Высоко |
|
Лекции для разработчиков |
Высоко |
Низко |
Низко |
Низко |
Низко |
|
Внутренние образовательные программы |
Высоко |
Высоко |
Высоко |
Высоко |
Оченьвысоко |
3. ПРЕДЛАГАЕМОЕ РЕШЕНИЕ
Проведя анализ существующих решений, была разработана трехступенчатая программа обучения разработчиков. Как видно из анализа решений, лучшее решение, это решение направленное на текущую кампанию и на ее разработчиков. Таким образом обучение должно включать в себя предварительное тестирование, чтобы понять уровень разработчиков и администраторов на момент начала занятий. Также в программу должны войти лекции, как самый эффективный, с точки зрения передачи знаний, способ. Для максимальной результативности программу лекций нужно закрепить на практике. Не всегда есть возможность практиковаться с помощью существующих в компании приложений. Для этого подойдут заранее подготовленные задачи, которые можно провести в формате соревнований, для повышения вовлеченности обучающихся, за счет соревновательного момента.
3.1 ПРОГРАММА ТЕСТИРОВАНИЯ
Тестирование состоит из трех блоков вопросов. Первый блок, общая информированность в вопросах информационной безопасности, включает в себя знание знаменитых инцидентов, мероприятий и ресурсов. Второй блок, вопросы на знание рейтинга OWASP и общей терминологии, например: “Что такое инъекция в SQL запрос? Как защититься от такого типа уязвимостей?”. Третий блок включал в себя вопросы про безопасную разработку, например: “как правильно хранить логины и пароли пользователей” и “как перевести сайт на https”.
Пример такого тестирования можно найти по ссылке https://docs.google.com/forms/d/e/1FAIpQLSfeS7CcFDq9GqtTVH23dkbznY31mBlu45MNs7ft8t_drZK4aw/viewform?usp=sf_link
3.2 ПРОГРАММА ЛЕКЦИЙ
Лекции проводятся по основам эксплуатации веб-приложений и методикам поиска уязвимостей. В данном цикле разработчики познакомятся с рейтингом проблем информационной безопасности веб-приложений OWASP, источниками информации и программами для поиска уязвимостей.
Лекции включают в себя:
? знакомство с рейтингом OWASP
? полный разбор нескольких уязвимостей веб-приложений:
_ Reflected XSS
_ Stored XSS
_ DOM XSS
_ инъекция в SQL
_ раскрытие чувствительных данных веб-приложения
_ инъекция в путь до файла
_ проблемы с разграничением доступа пользователей
_ ошибки конфигурации
_ проблемы десериализации
_ использование компонент с известными уязвимостями.
Пример такой таких лекций можно найти по следующим ссылкам:
https://docs.google.com/presentation/d/1RaGiBQ-YRscPISFCWNkzomcNC6Wa5GxrwcPtB4YmY40/edit?usp=sharing
https://docs.google.com/presentation/d/1il-ZW1uwrzODYfX1aYS1gr7FFtyG9OplYuUGfgZVUJo/edit?usp=sharing
3.3 ПРОГРАММА СОРЕВНОВАНИЙ
Соревнования проходят в формате “Захват флага”, в качестве платформы может использоваться инфраструктура CTFd (https://github.com/CTFd/CTFd). Формат CTF подразумевает, что все участники имеют доступ к одинаковым заданиям, решая которые они получают очки рейтинга. За решение каждого задания даются очки пропорциональные его сложности и количеству людей, решивших его.
В данном цикле, задания разделены на 3 категории: web, crypto, stegano. В каждой задачи категории web участнику дано веб-приложение, которое содержит некоторую уязвимость. Найдя и эксплуатируя эту уязвимость, участник получает так называемый “флаг” - строку случайных символов, который мог обменять в проверяющей системе (CTFd) на игровые очки. В категории crypto участники получают блок шифротекста и подсказку каким алгоритмом был зашифрован исходный текст. Расшифровав данный файл, участник получает флаг, по аналогии с веб-приложениями. В категории stegano, флаг спрятан внутри метаданных какого-нибудь формата файлов.
С учетом рейтинга OWASP были составлены следующие задачи. Разбор задач сделан на основании одного из стендов cyberchallenge.
3.3.1 ЗАДАЧА COOKIE MONSTER
Описание
При посещении вами данного веб-сайта сбор информации может осуществляться посредством cookie-файлов и других технологий. Используя данный веб-сайт, вы даете свое согласие на использование нами cookie-файлов в соответствии с данными Условиями…
Решение:
На главной странице сайта нет ничего с чем можно взаимодействовать, значит клиент взаимодействует с сервером как-то иначе. Из названия задания можно понять, что нужно обратить внимание на cookie файлы. Чтобы их посмотреть, нужно зайти в меню разработчика браузера.
Нажать правой кнопкой мыши в любом месте страницы, выбрать пункт меню “Inspect”, выбрать вкладку “Application”, в этой вкладке найти пункт меню “Cookies”. Видим, что для данного сайта сервер выставляет cookie “role” со значением “user”.
Возможно контроль доступа осуществляется с использованием cookie файлов. Попробуем перебрать другие возможные роли “admin”, “administrator”, “root”. Сделать это можно двойным нажатием по значению cookie файла, переписав данное значение и перезагрузив страницу.
При использовании роли “admin”, видим на главной странице флаг.
Ответ: CC{y4dC3raadSI_yay_i_like_cookies}
3.3.2 ЗАДАЧА OCTOCAT
Описание:
Решение:
Из названия сервиса можно догадаться, что речь идет о системе контроля версий gii. Проверить доступна ли она для скачивания можно попробовав скачать конфигурационный файл. Воспользуемся для этого утилитой httpie (https://httpie.org).
Видно, что конфигурационные файлы действительно присутствуют. Скачать и восстановить всю папку можно с помочью утилиты https://github.com/internetwache/GitTools
В папке octocat нет никаких файлов, но можно посмотреть историю обновлений:
В последнем изменении были удалены какие-то важные данные, чтобы их посмотреть нужно воспользоваться командой git show
Ответ: CC{CseK6Eo762c_octocat_is_fuuuuuuuun}
3.3.3 ЗАДАЧА PORTER
Описание:
Веб-сервис расположен на каком-то из портов в диапазоне 1000-2000 на сервере. Сможешь ли ты найти его?
Решение:
Для того чтобы узнать какой порт находится в режиме прослушивания, воспользуемся утилитой nmap. Скачать её можно с сайта https://nmap.org/.
Воспользовавшись утилитой можно найти сервис на порту 1337.
Если сделать http запрос к сервису (например с помощью утилиты httpie https://httpie.org/), получим следующую страницу
Видно, что флаг находится на странице flag.html. Сделав http запрос на эту страницу, участники получат флаг.
Ответ: CC{ra8Zb53uJeA_this_was_a_trick}
3.3.4 ЗАДАЧА ROUTER
Описание:
Купил, подключил, а настроить забыл:(
Решение:
На данной веб странице можно найти название роутера (сетевого маршрутизатора) “ZYXEL PRESTIGE 900”. С помощью поиска в интернете можно найти логин и пароль администратора, которые установлены на устройствах такого типа по умолчанию.
Используя найденные логин и пароль можно попасть на главную страницу интерфейса администратора роутера. На данной странице и находится искомый флаг.
Ответ: CC{router_password_is_sooo_weak}
3.3.5 ЗАДАЧА SIMARILL STORE
Описание:
Мы открыли новый интернет-магазин. Достаточно ли у тебя денег, чтобы купить самый дорогой товар?
Внимание! В этом интернет-магазине можно обнаружить целых два флага. Другой флаг надо сдавать во вторую задачу.
Решение:
Данный сервис представляет из себя интернет магазин с двумя товарами. На счету пользователя изначально 100 единиц некоторой валюты. Самый дорогой предмет стоит 999999 единиц валюты, самый дешевый 1 единицу валюты. Путем логических рассуждений можно догадаться, что задача состоит в том, чтобы купить предмет на который не хватает денег.
Посмотрев код главной страницы сайта (как в задаче No Comments), или перехватив запрос при покупке (например с помощью утилиты Burp Suite https://portswigger.net/burp), видно, что цена предмета передается на сервер с клиентской части.
Поменять это значение также можно с помощью инструментов разработчика в браузере. В браузере Chrome для этого нужно нажать правой кнопкой мыши на любом месте экрана и выбрать раздел меню “Inspect”. В появившемся окне нужно найти данный тег input и поменять значение цены самого дорогого предмета. Сделать это можно двойным нажатием на атрибут тега.
Дальше требуется “купить” этот предмет, нажав на обычную кнопку “Купить”.
После покупки предмета пользователь попадает на страницу с флагом
Ответ: CC{lembas_elvish_waybread}
3.3.6 ЗАДАЧА SIMARILL STORE 2
Описание:
Мы открыли новый интернет-магазин. Сможешь ли ты найти то, что мы прячем от посторонних глаз?
Внимание! В этом интернет-магазине можно обнаружить целых два флага. Другой флаг надо сдавать в первую задачу.
Решение:
Данный сервис представляет из себя интернет магазин с двумя товарами. На счету пользователя изначально 100 единиц некоторой валюты. Самый дорогой предмет стоит 999999 единиц валюты, самый дешевый 1 единицу валюты. Путем логических рассуждений можно догадаться, что задача состоит в том, чтобы купить предмет на который не хватает денег.
Посмотрев код главной страницы сайта (как в задаче No Comments), или перехватив запрос при покупке (например с помощью утилиты Burp Suite https://portswigger.net/burp), видно, что идентификаторы товаров (параметр id) являются порядковыми. Следовательно можно попробовать перебрать эти идентификаторы, на случай, если есть скрытые товары.
Чтобы понять как работает сервис, откроем консоль разработчика, нажав правой кнопкой мыши в любом месте на странице и выбрав пункт меню “Inspect”, и далее выбрав вкладку “Network”.
Нажав клавишу “Купить”, можно увидеть post http запрос на страницу http://silmarilstore.2018.example.com/buy
С параметрами id и price
Чтобы модифицировать запрос, воспользуемся утилитой Burp Suite (https://portswigger.net/burp). Инструкции по настройке можно найти на сайте.
Перехваченный запрос на покупку может выглядеть так
Для перебора значений параметра id воспользуемся утилитой Intruder, которая входит в состав BurpSuite. Для этого нужно нажать правой клавишей мыши и выбрать пункт меню “Send to Intruder”. Далее нужно выбрать вкладку “Positions” и оставить специальные символы только вокруг параметра id. Цену на всякий случай желательно установить равную 0.
Значения параметра для перебора можно задать на вкладке “Payloads”. Тип параметра “Numbers”, а значения от 1 до 20 с шагом 1.
Запустить перебор можно клавишей Start Attack. Видно, что из всех значений параметра id, явно выделяются значения 1,2 и 7.
Если посмотреть результат покупки предмета со значением 7, там окажется флаг.
Ответ: CC{when_in_doubt_follow_your_nose}
3.3.7 ЗАДАЧА KAVICHKA
Описание:
Необходимо выполнить вход под учетной записью администратора. Обычное такое задание с кавычками. Классика…
Решение:
Перебор стандартных комбинаций логин-пароль в этом сервисе ничего не даст. Далее можно попробовать простейшую SQL инъекцию
username: admin
password: ' or 'a'='a
После того как инъекция сработает, на главной странице приложения будет флаг
Ответ: CC{4crgYRC45NY_is_this_flag}
3.3.8 ЗАДАЧА EAGLE EYE
Описание:
Мы решили, что безопасность - это слишком просто и открыли кофейню! Приходите к нам! Ждем отзывы!
Решение:
На сайте можно сразу же обнаружить форму обратной связи. После ее отправки на странице ничего интересного не происходит. Можно предположить, что администратор просматривает эти сообщения в специальном интерфейсе администратора, следовательно можно попробовать применить инъекцию в HTML.
Проблема в том, что даже если получится выполнить JavaScript код на странице администратора, результат мы не увидим. Попробуем сделать запрос на сторонний сервис, чтобы, для начала, проверить гипотезу о том, что сообщение просматривают в браузере. Для этого подойдет сервис PostBin (https://postb.in/). Этот сервис показывает все HTTP запросы на сгенерированную страницу.
Создадим специальную ссылку вида https://postb.in/38eMCm6l, для того чтобы посмотреть, сработает ли наша инъекция.
Теперь попробуем провести инъекцию в форму обратной связи:
На странице PostBin видим полученный запрос
Следовательно наша гипотеза была верна. Попробуем заполучить cookie файлы администратора, чтобы получить его права.
На странице PostBin видим флаг:
Ответ: CC{can_i_haz_ur_f1ag_p1z_cuz_i_am_b1ind}
3.3.9 ЗАДАЧА PICK WISELY
Описание:
Вместо описания: https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%B4%D0%BE%D0%BA%D1%81_%D0%9C%D0%BE%D0%BD%D1%82%D0%B8_%D0%A5%D0%BE%D0%BB%D0%BB%D0%B0
Решение:
Простое взаимодействие с сервисом ничего не дает, но попробовав перехватить запрос с помощью утилиты BurpSuite (https://portswigger.net/burp, инструкции по установке можно найти на сайте), видим, что cookie файлы в каком-то необычном формате
По виду этого параметра, можно догадаться, что файл закодирован в формате base64, декодировать его можно внутри утилиты BurpSuite в разделе Decoder:
С помощью поиска в интернете и логических рассуждений, можно понять, что внутри параметра state хранится данные, сериализованы с помощью библиотеки Pickle (https://docs.python.org/3/library/pickle.html). Эта библиотека известна тем, что при десериализации объекта, полученного из ненадежного источника, может произойти удаленное исполнение кода.
Попробуем создать такое состояние, десериализация которого приведет к исполнению кода. Чтобы узнать результат выполнения кода, воспользуемся сервисом PostBin (https://postb.in/).
Выполнив следующий код получаем новое значение cookie параметра state.
gANjcG9zaXgKc3lzdGVtCnEAWDQAAAB3Z2V0IGh0dHBzOi8vcG9zdGIuaW4vS1RvZEV1Njg/cmVzdWx0PSQobHMgfCBiYXNlNjQpcQGFcQJScQMu
Подставим это значение с помощью утилиты Repeater, входящей в состав BurpSuite. Для этого нужно нажать правой кнопкой мыши на любой запрос и выбрать пункт меню `Send to Repeater'.
Подставим полученное значение в параметр state, отправим запрос и получим результат в PostBin:
Декодировав полученное значение в разделе Decoder программы BurpSuite, получаем результат
Осталось прочитать файл flag.txt
Проделав предыдущие шаги еще раз, получаем ответ
Ответ: CC{math_is_my_friend_i_like_it_but_i_like_coding_too}
3.3.10 ЗАДАЧА BLOGGER
Описание:
Я стану великим белым хакером! Сделаю блог про мои великие взломы...
(простая уязвимость не даст вам флаг)
Решение:
Сайт представляет из себя блог с одной единственной записью. Обратив внимание на параметры URL (http://example.com/post?id=helloworld.html), можно заметить, что файл, который нужно прочитать, передается в открытом виде. Попробуем прочитать любой другой файл на файловой системе.
Прочитав исходные коды сервиса, понимаем, что файл спрятан не в нем, а, скорее всего, на файловой системе сервиса. Если запросить несуществующий файл, приложение переходит в режим отладки:
Из сообщения можно понять, что сервис использует сервер werkzeug (https://github.com/pallets/werkzeug), отладочный режим которого может позволить исполнять код на сервере.
При попытке получит такой доступ, пользователь увидит сообщение с запрашиваемым пин кодом
Поиск в интернете позволяет найти инструкцию по получению этого пин кода https://www.kingkk.com/2018/08/Flask-debug-pin%E5%AE%89%E5%85%A8%E9%97%AE%E9%A2%98/
С помощью инструкции и возможности чтения файлов, которую дает нам предыдущая уязвимость, генерируем пин код:
Ответ: CC{daaaaaamn_everything_is_vulnerable_even_my_static_site}
4. ПРОВЕРКА РЕШЕНИЯ
Проверка решения осуществлялась в компании ООО “Эвотор”, в рамках зимней практики. Было проведено предварительное тестирование, прочитаны 3 лекции и проведены соревнования по информационной безопасности.
В результате тестирования узнали, что разработчики очень плохо осведомлены о проблемах информационной безопасности и почти не разбираются в терминологии. На лекциях присутствовала треть разработчиков и администраторов компании. В соревнованиях приняли участие 9 человек, значимые результаты показали 5 участников. Победитель соревнования решил 13 из 18 задач.
По модели Киркпатрика данное решение можно оценить так. Уровень реакции средний или высокий, так как сложность лекций определяется текущим уровнем подготовки разработчиков. Обучение находится на высоком уровне, так как все полученные знания закрепляются практическими задачами. Поведение и результаты сложно оценить за такой короткий промежуток времени. Вероятнее всего они находятся на среднем уровне, так как данный курс является вводным и относительно непродолжительным. Цена находится на среднем уровне, так как нужно оплатить время лектора и время разработчиков на развертку инфраструктуры для решения задач. Сводную таблицу можно увидеть ниже (Таблица 8).
Таблица 8
Уровень |
Значение |
|
Реакция |
Среднее - высокое |
|
Обучение |
Высокое |
|
Поведение |
Среднее |
|
Результаты |
Среднее |
|
Цена |
Среднее |
ЗАКЛЮЧЕНИЕ
Сравнение показало, что данные решения разбиваются на три категории, каждая из которых не подходит множеству компаний. Конференции и встречи специалистов не дают значимого результата для компании, непрофильные активности не дают долгосрочного результата, а построение своей системы обучения очень ресурсоемко.
Предложенное решение состоит из предварительного тестирования, которое позволяет оценить текущий уровень разработчиков. На результатах тестирования основаны лекции и практические задачи. Стоимость проведения такого мероприятия относительно невысока, так как нужно оплатить только время лектора и время на настройку инфраструктуры.
Проверка данного решения показала, что с его помощью можно оценить текущий уровень разработчиков, донести общие термины, понятия, практики до большинства разработчиков, а также выявить энтузиастов в области информационной безопасности внутри компании.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. https://www.ptsecurity.com/ru-ru/research/analytics/web-application-vulnerabilities-statistics-2019/.
2. https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project.
3. https://www.owasp.org/images/7/72/OWASP_Top_10-2017_%28en%29.pdf.pdf.
4. https://www.hackerone.com/blog/Hacker-Powered-Security-Report-2018.
5. http://iem.tsu.ru/sites/default/files/news_files/edutech_no2_2016.pdf.
6. https://www.science-education.ru/ru/article/view?id=16909.
7. http://trenerskaya.ru/article/view/model-ocenki-effektivnosti-obucheniya-donalda-kirkpatrika.
8. https://files.eric.ed.gov/fulltext/ED577281.pdf.
9. http://id-yug.com/images/id-yug/Bulatov/2017/5/PDF/2017-V5-161-164.pdf.
10. https://2018.zeronights.ru/.
11. https://www.phdays.com/ru/.
12. https://www.phdays.com/ru/program/schedule/.
13. https://habr.com/ru/company/vyshtech/blog/352078/.
14. https://hackerone.com/directory.
15. https://www.kaspersky.com/blog/k-asap/25411/.
16. https://bugbounty.mail.ru/en.
17. https://yandex.com/bugbounty/.
18. https://corp.mail.ru/ru/press/events/33/.
19. https://habr.com/ru/company/cisco/blog/268999/.
20. https://www.adobe.com/content/dam/acom/en/security/pdfs/adb_security-culture-wp.pdf.
Размещено на Allbest.ru
...Подобные документы
Требования к разработке программного обеспечения. Анализ существующих уровней и классификаций требований. Предложение расширенной классификации с дополнительными атрибутами. Стадии разработки программного обеспечения. Наблюдение за бизнесом заказчика.
дипломная работа [2,4 M], добавлен 24.08.2016Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Разработка спецификации программного обеспечения и на ее основе кода программного продукта. Отладка программы "трассировкой", ее тестирование и оптимизация.
курсовая работа [501,4 K], добавлен 07.12.2016Методика исследования и анализа средств аудита системы Windows с целью обнаружения несанкционированного доступа программного обеспечения к ресурсам вычислительных машин. Анализ угрозы информационной безопасности. Алгоритм работы программного средства.
дипломная работа [2,9 M], добавлен 28.06.2011Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных программных средств. Тестирование программного обеспечения. Оптимизация программного кода.
курсовая работа [974,0 K], добавлен 21.12.2016Угрозы безопасности программного обеспечения и классификация средств атаки на средства защиты ПО. Методы и средства защиты программ от компьютерных вирусов и средств исследования программ. Анализ стандартов в области информационной безопасности.
дипломная работа [1,4 M], добавлен 29.06.2012Использование операционных систем. Контрольно-испытательные методы анализа безопасности программного обеспечения. Логико-аналитические методы контроля безопасности программ и оценка технологической безопасности программ на базе метода Нельсона.
контрольная работа [22,6 K], добавлен 04.06.2012Цели и задачи программной инженерии. Понятие программного обеспечения. Шесть принципов эффективного использования программного обеспечения. Виды программного обеспечения: общесистемное, сетевое и прикладное. Принципы построения программного обеспечения.
курсовая работа [30,4 K], добавлен 29.06.2010Анализ локально-вычислительной сети компании. Выбор общего программного обеспечения, обеспечения для инженерного отдела, бухгалтерии, сервера. Состав программного обеспечения вычислительной системы и его конфигурация. Сетевые операционные системы.
курсовая работа [405,4 K], добавлен 08.02.2016Практические аспекты использования прикладного программного обеспечения при разработке базы данных "Аудиторный фонд ГБОУ СПО "Старооскольский педагогический колледж". Системы управления базами данных. Описание и функциональные возможности приложения.
курсовая работа [360,4 K], добавлен 07.10.2014Сущность информации, ее классификации и виды. Анализ информационной безопасности в эпоху постиндустриального общества. Исследование проблем и угроз обеспечения информационной безопасности современного предприятия. Задачи обеспечения защиты от вирусов.
курсовая работа [269,0 K], добавлен 24.04.2015Классификация угроз информационной безопасности. Ошибки при разработке компьютерных систем, программного, аппаратного обеспечения. Основные способы получения несанкционированного доступа (НСД) к информации. Способы защиты от НСД. Виртуальные частные сети.
курсовая работа [955,3 K], добавлен 26.11.2013Понятие технологии разработки программного обеспечения и модели жизненного цикла. Сущность объектно-ориентированного подхода. Строительные блоки, общие механизмы языка моделирования UML, диаграммы классов, состояний, взаимодействий и компонентов.
курсовая работа [262,5 K], добавлен 10.07.2014Разработка автоматизированной информационной системы для учета и контроля выполнения ремонтных работ, и предоставления услуг по разработке программного обеспечения компании "МегионСофтОйл", разработка алгоритмов приложений программной системы и модулей.
дипломная работа [5,3 M], добавлен 29.06.2012Понятие программной инженерии как применения определенного систематического измеримого подхода при разработке, эксплуатации и поддержке программного обеспечения. Модели процесса разработки программного обеспечения. Управление программными проектами.
презентация [870,6 K], добавлен 12.11.2014Анализ программного обеспечения, ограничивающего вредоносную деятельность на ПК. Анализ возможностей встроенных программ и программ сторонних производителей, а также необходимых настроек операционной системы (ОС) в плане информационной безопасности.
курсовая работа [3,2 M], добавлен 02.01.2010Понятие программного обеспечения, вопросы его разработки и использования. Общая характеристика системного программного обеспечения и работа операционной системы. Специфика процесса управления разработкой программного обеспечения и его особенности.
курсовая работа [636,2 K], добавлен 23.08.2011Схемы взаимодействия между заказчиком и разработчиком программного обеспечения. Качество программного обеспечения и определение основных критериев его оценка на современном этапе, особенности управления на стадиях жизненного цикла, анализ достаточности.
презентация [114,7 K], добавлен 14.08.2013Современные инструменты разработки программного обеспечения для СУТП. Универсальные языки программирования и сравнение их со SCADA-системами. Разработка программного обеспечения с использованием многоканальных измерительных преобразователей Ш9327.
дипломная работа [2,3 M], добавлен 13.07.2011Изучение основных видов угроз программного обеспечения. Выявление наиболее эффективных средств и методов защиты программного обеспечения. Анализ их достоинств и недостатков. Описания особенностей лицензирования и патентования программного обеспечения.
курсовая работа [67,9 K], добавлен 29.05.2013Обзор существующего программного обеспечения для информационной поддержки деятельности системного администратора машиностроительного техникума. Анализ выбора средств разработки. Требования к разработке. Экономическая эффективность разработанной системы.
дипломная работа [108,5 K], добавлен 27.03.2013