Информационная безопасность в открытых проектах (РИФ...

15
Информационная безопасность в открытых проектах Алексей Брагин, Pierre Schweitzer

Transcript of Информационная безопасность в открытых проектах (РИФ...

Page 1: Информационная безопасность в открытых проектах (РИФ 2015)

Информационная безопасность в открытых проектах

Алексей Брагин, Pierre Schweitzer

Page 2: Информационная безопасность в открытых проектах (РИФ 2015)

О докладчике

• Алексей Брагин, [email protected]

• Активный участник СПО с 2000 г.

• 10+ лет разработки и руководства ReactOS

• Разносторонние интересы• Программирование• Бизнес• Финансы• Управление• Наука

• Соавтор доклада – Pierre Schweitzer• Сфера интересов – информационная безопасность, инфраструктура

Page 3: Информационная безопасность в открытых проектах (РИФ 2015)

О докладчике

• Координатор проекта ReactOS

• Преподаватель в МГТУ им. Н.Э.Баумана

• Научный руководитель НИРС

• Участник рабочей группы по ОС МинСвязи

• Член комиссии по модернизации Научного совета РАН по проблемам европейской интеграции и модернизации

Page 4: Информационная безопасность в открытых проектах (РИФ 2015)

ИБ в открытых проектах

1. Безопасность (надёжность) исходного кода

2. Безопасность инфраструктуры

3. Безопасность самого проекта

Page 5: Информационная безопасность в открытых проектах (РИФ 2015)

1. Безопасность кода в открытых проектах

• Критические уязвимости в 2014 году – в открытых проектах• Heartbleed (OpenSSL, CVE-2014-016)

• Shellshock (Bash, CVE-2014-6271)

Page 6: Информационная безопасность в открытых проектах (РИФ 2015)

OpenSSL – открытая библиотека SSL/TLS

• OpenSSL – очень широко используемый проект• Нет коммерческой поддержки

• Отсутствует аудит кода

• Все только используют, но не помогают

• Только 2 человека работает над ним полное рабочее время

Page 7: Информационная безопасность в открытых проектах (РИФ 2015)

Bash – командный процессор, оболочка

• Bash – очень широко используемый проект• Нет коммерческой поддержки

• Отсутствует аудит кода

• Все только используют, но не помогают

• 1 мейнтейнер

Page 8: Информационная безопасность в открытых проектах (РИФ 2015)

Как с этим бороться?

• Аудит исходного кода, в т.ч. независимый

• Рецензирование (review) всех вносимых изменений• Возможно позволило бы обнаружить heartbleed/shellshock

• Негативное тестирование• Обычно – тестирование на обнаружение регрессий• Нужно – тестирование с совершенно некорректными значениями параметров.

Позволило бы обнаружить heartbleed/shellshock

• Статический анализ кода• Не помогло в случае Heartbleed/shellshock

• Fuzzing – (полу)автоматическое тестирование, подающее на вход различные неправильные, неожидаемые и случайные значения

• Позволило бы обнаружить heartbleed/shellshock

Page 9: Информационная безопасность в открытых проектах (РИФ 2015)

Apple “goto fail” – что могло помочь?

• Правильный стиль написания кода

• Правильные методы разработки

• copy/paste вносит ошибки

• Опции компилятора• Игнорирование

предупреждений компилятора – верный путь к ошибкам

hashOut.data = hashes + SSL_MD5_DIGEST_LEN;

hashOut.length = SSL_SHA1_DIGEST_LEN;

if ((err = SSLFreeBuffer(&hashCtx)) != 0)

goto fail;

if ((err = ReadyHash(&SSLHashSHA1, &hashCtx)) != 0)

goto fail;

if ((err = SSLHashSHA1.update(&hashCtx, &clientRandom)) != 0)

goto fail;

if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)

goto fail;

if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)

goto fail;

goto fail; /* err здесь равно 0, т.е. «успех» */

if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)

goto fail;

err = sslRawVerify(...);

fail: /* Epic */

Page 10: Информационная безопасность в открытых проектах (РИФ 2015)

1. Безопасность кода в открытых проектах

• Уязвимость в открытом проекта – не значит, что проект провальный.

• Люди ошибаются

• Разработчики не могут просчитать все сценарии работы кода

• Common Weakness Enumeration – CWE MITRE• Общие шаблоны ошибок

• Пример того, как была предотвращена уязвимость в ReactOS• https://www.reactos.org/node/932

Page 11: Информационная безопасность в открытых проектах (РИФ 2015)

2. Безопасность инфраструктуры

• Проект свободный, исходные коды открыты

• Но не стоит игнорировать уязвимости хостинга, на котором он работает

• Учётные записи пользователей

• Те же принципы системного администрирования как и для любой серьёзной инфраструктуры

• Политики безопасности• Системы Intrusion Detection System / Prevention System• Обновление ОС/ПО• Firewall• Аудит безопасности

Page 12: Информационная безопасность в открытых проектах (РИФ 2015)

Инфраструктура СПО

• Утечка данных – всегда имеет огромные последствия• Не важно – из компании или из открытого проекта

• Всего-лишь один из векторов атаки

• А что, если злоумышленники похитят данные для внесения изменений в код (коммитов) от имени разработчика этого проекта?

• Не волнуйтесь, вас тоже рано или поздно взломают

• ReactOS – не исключение, ситуация подробно описана• https://www.reactos.org/node/928

Page 13: Информационная безопасность в открытых проектах (РИФ 2015)

3. Безопасность самого проекта

• Надёжность хранения данных – это тоже безопасность!

• Резервное копирование – залог успеха• В этом ошибаются очень и очень многие

• Управление правами доступа в команде

• Где размещать код?• Что делать, если хостинг закрывается

(Например, Google Code)

Page 14: Информационная безопасность в открытых проектах (РИФ 2015)

Сила открытого кода

• Открытый код должен больше дублироваться• во многих местах по всему миру

• децентрализация

• В реальности всё не так…• Например, TrueCrypt (из-за плохой лицензии)

Page 15: Информационная безопасность в открытых проектах (РИФ 2015)

• Вопросы и предложения