Привет, Хабр. Меня зовут Антон Иванов, я СТО «Лаборатории Касперского». В нашем корпоративном блоге много статей, посвящённых нюансам информационной безопасности. Что вполне логично: если не мы, то кто? Однако может создаться впечатление, будто типичный труженик сферы ИБ — хардкорный секьюрити-гик, у которого под подушкой полное собрание сочинений Кевина Митника, на ноутбуке — Kali Linux, а при виде солонки нездорово разыгрывается фантазия.
Сейчас информационная безопасность — обширная область с очень размытым краем. Не всегда можно понять, где кончается обычная разработка и начинается ИБ-разработка. Ниже я расскажу, почему пытаться провести эту грань вообще контрпродуктивно. А также — почему мы занимаемся машинным зрением для беспилотников и что изобрёл автор квиксорта (помимо квиксорта).
Сейчас информационная безопасность — обширная область с очень размытым краем. Не всегда можно понять, где кончается обычная разработка и начинается ИБ-разработка. Ниже я расскажу, почему пытаться провести эту грань вообще контрпродуктивно. А также — почему мы занимаемся машинным зрением для беспилотников и что изобрёл автор квиксорта (помимо квиксорта).
ИБ в России больше, чем ИБ
Как-то так было у Евтушенко. Впрочем, Россия здесь скорее для красного словца — речь идёт о мировой тенденции. Времена, когда антивирус делался в условном гараже тремя условными энтузиастами с кругами под глазами, прошли давно и безвозвратно. И хотя мы будем говорить в первую очередь о нашей специфике (ну просто потому, что её я лучше знаю), так происходит везде. Точнее, произошло везде.
![](https://habrastorage.org/getpro/tmtm/articles/tld/images/23816255/tild3732-3030-4565-b433-393438306466__image1.jpg)
Не каждый айтишник ясно представляет, на что похож инфобез сегодня
Это общая тенденция, не специфичная для ИБ. С романтических времён в IT всё усложнилось. Технологии, методологии, организация работы. Например, такая практика, как DevOps, — нелегко было бы объяснить программисту из начала нулевых, что это и зачем нужно. Также выросла специализация. Скажем, дизайн интерфейсов: UX-специалист этот дизайн продумывает, а специально обученный разработчик воплощает в жизнь. Функционал, скрывающийся за интерфейсом, разрабатывает вообще третий человек.
Зачем я проговариваю очевидное? Потому что, когда речь идёт об экзотике типа инфобеза, — перед глазами всё равно встаёт образ того самого гаража, где работают трое секьюрити-гиков и нет места IT-спецу с распространённым стеком технологий.
Да, в ИБ-компаниях есть роли, требующие особой квалификации. Скажем, специалист по пентесту или по анализу угроз. Но есть и точно такие же роли, как в любых других IT-компаниях. Девопс, системный администратор, аналитик, фронтендер. Причём не «секьюрити фронтендер», а самый обыкновенный, с React и Redux.
Экосистема контроля и счастья
Есть и ещё одна тенденция, тоже ярко выраженная в ИБ: движение от продукта к экосистеме. Когда-то «информационная безопасность» и «антивирус» были почти синонимами. Сейчас антивирус — лишь один из инструментов наряду с устройствами, услугами, всяким SaaS’ом. Инструменты объединяются в экосистему, в которой клиент защищён и счастлив.
Потребности и ожидания клиента уже выходят за рамки классического инфобеза. Так, в одних антивирусах есть функция родительского контроля, в других — браузерные расширения, блокирующие рекламу (у нас всё это тоже есть, но речь об индустрии в целом). В некоторые антивирусы встроены твикеры, оптимизирующие работу системы. Бизнесу твикеры не интересны, а вот «родительский контроль» — контроль безопасности рабочего места — нужен.
На заводах, стадионах и в аэропортах нужна защита от дронов. Для этого мы разработали систему Kaspersky Antidrone — она детектирует дрон и заставляет сесть или вернуться в точку взлёта. Машинное зрение, программирование микроконтроллеров — это уже не совсем то, с чем ассоциируют ИБ.
Знание — сила
Противодействие дронам — яркий, но не единственный пример того, что в ИБ могут найти применение самые разнообразные компетенции — не только умение выполнять двоичный код в уме и знание наизусть вирусных сигнатур.
Конечно, в первую очередь речь идёт всё-таки о смежных областях. Например, криптография. Вирусы-шифровальщики — на сегодняшний день одна из самых частых разновидностей зловредов. Лучший способ борьбы с шифровальщиком — это, разумеется, не допустить заражения. Но если оно уже произошло, можно попытаться расшифровать данные собственноручно. Иногда это получается, и злоумышленник остаётся без своих (точнее, жертвы) биткоинов.
![](https://habrastorage.org/getpro/tmtm/articles/tld/images/23816255/tild6532-3138-4530-b537-373936326166__image3.jpg)
В инфобезе может неожиданно пригодиться то, что в универе казалось академической бесполезностью
Ещё одна смежная область, которая уже почти 10 лет вызывает наш интерес, — доказательное программирование, т. е. программирование в сочетании с формальной верификацией написанной программы. В этой парадигме любой код сопровождается декларацией того, что именно он делает, а также строгим математическим доказательством, что он делает именно это. Идея не новая, одна из первых систем формальной верификации была предложена в 1969 году Чарльзом Хоаром. Да, тем самым, автором квиксорта. На практике, однако, этот подход до сих пор применяется редко. Причина проста: значительное усложнение (и, соответственно, удорожание) разработки. Формальная верификация используется лишь эпизодически, для критичных участков кода. В 99 % случаев хорошее тестовое покрытие даёт достаточно уверенности и спокойствия. В конце концов, лучший код — это код, написанный вовремя.
В «Лаборатории Касперского» мы используем доказательное программирование в разработке KasperskyOS — нашей собственной операционной системы, защищённость которой подтверждаем при помощи формальных методов. Более подробно о ней можно почитать здесь.
К слову о системах: ничто так не красит ИБ-специалиста, как знания в области операционных систем и системного программирования. Чтобы защищать систему, желательно понимать её устройство. А если понимаешь, можно не только защищать, но и улучшать её работу или даже использовать эти знания, чтобы создать собственную ОС, с доказательствами и гарантиями.
Я ещё и вышивать могу
Если говорить о совсем неожиданных вещах, то, например, у нас есть специально обученный сотрудник, который досконально знает офисные форматы файлов. Для кого-то это прозвучит не очень солидно. Но вот вам факт: в стандарте ISO/IEC 29 500−1:2016 ровно 5035 страниц. Этот стандарт — первая часть спецификации файлового формата Office Open XML, всего частей четыре. Конкретный офисный формат вроде .docx строится поверх этой спецификации и добавляет ещё около тысячи страниц. Помимо этого, существуют недокументированные особенности и другие нюансы. И вот человек, вооружённый всеми этими знаниями, сидит у нас и помогает совершенствовать антивирусный сканер. Макросы в офисных документах — распространённый вектор атаки, и, соответственно, мы обязаны уметь их анализировать.
![](https://habrastorage.org/getpro/tmtm/articles/tld/images/23816255/tild3633-3664-4531-b066-613166386439__image2.jpg)
Сегодня инфобез предлагает клиенту не только софт, но и программно-аппаратные комплексы
Машинное обучение — подход, который применяется всё шире и во всё более разнообразных областях. Использование нейросетей для распознавания киберугроз — уже даже не ноу-хау, а индустриальный стандарт. Иногда машинное обучение используется в неожиданных для ИБ контекстах. Выше я уже упоминал Kaspersky Antidrone, где используется в том числе машинное зрение. Но иногда крупные компании позволяют себе сайд-проекты, используя имеющиеся наработки вне своего основного профиля. Например, мы разработали Kaspersky Neural Networks — систему для распознавания и классификации объектов в реальном времени с воздуха. Главное её предназначение — помогать в чрезвычайных ситуациях: искать пропавших людей или смытые наводнением объекты. Но есть идеи адаптировать её для бытовых нужд и обычных квадрокоптеров. Они смогут наносить на карту границы участков и дома́, следить за движением автомобилей.
В целом сложно предугадать, какой навык сможет найти применение в сфере ИБ, а какой нет. В «Лаборатории Касперского» существует процедура, когда сотрудники предлагают свои идеи для проектов, а специальная комиссия по инновациям смотрит, можно ли эту идею воплотить в жизнь, и если да, то каким будет экономический эффект. Такой, можно сказать, непрекращающийся мозговой штурм. Как и в любом мозговом штурме, большую часть идей приходится отсеять, но некоторые оказываются удачными и выстреливают. Таким образом, если сотрудник обладает компетенцией, которую негде применить, — он может сам положить начало проекту, где эта компетенция будет полезна, или разработать новую технологию. Закономерное следствие такого подхода — более 1200 патентов, принадлежащих нашей компании, в разных странах.
Буква Б в слове «безопасность» значит «безопасность»
Ну, вы наверняка знакомы с этой категорией шуток. Типа «буква S в аббревиатуре IoT значит Security». Что подразумевает — никакого секьюрити в интернете вещей нет и в помине. Однако, когда ты в буквальном смысле занимаешься безопасностью, от этой буквы S никуда не деться. Не случайно в слове Kaspersky их целых две.
Я начал писать этот пост, потому что существует расхожее представление, будто ИБ — это некое тайное общество для избранных, куда айтишнику с улицы или специалисту с обычными навыками вход заказан. Это совершенно не так, и, надеюсь, в предыдущих двух параграфах я сумел читателя разубедить. Однако не хочу, чтобы возникло и противоположное заблуждение: будто ИБ сейчас полностью лишена какой-либо специфики. Это тоже будет неправда.
Очень простое соображение, касающееся не только ИБ, а IT-индустрии в целом: трудно хорошо работать, не имея никакого понятия о предметной области. Разработчику, занимающемуся онлайн-банкингом, желательно иметь хоть какое-то представление о банковском деле. Как бы чётко ему ни формализовали задачи, всегда есть вероятность, что при постановке будет упущена какая-то деталь, которая заказчику показалась очевидной.
“
Есть такое когнитивное искажение — «проклятие знания». Когда обладаешь какой-то информацией, бывает нелегко представить себе, как думает человек, этой информации лишённый. Это может вылиться в коммуникативные затруднения. Самый эффективный способ избежать «проклятия знания» — сделать так, чтобы знанием обладали обе стороны.
Крупные IT-компании тратят много ресурсов на распространение знания — на онбординг, на обмен опытом. Мы в «Лаборатории Касперского» — не исключение из этого правила. На митапах сотрудника знакомят со спецификой продукта, над которым он работает. А на внутренних курсах он получает необходимые теоретические знания. Курсов этих у нас, кстати говоря, огромное множество, есть целый отдел, который занимается их разработкой и проведением.
Лучшая защита — это защита
Другое соображение ещё проще: сапожнику нехорошо быть без сапог. Обеспечивая чужую безопасность, лучше начинать с безопасности собственных продуктов. Если компьютер клиента окажется взломан через уязвимость в антивирусе — это, скажем так, не совсем желательный инфоповод.
Мы следуем методологии SDL — Security Development Lifecycle. Это не наше изобретение и не какая-то специальная штука для ИБ-компаний. SDL придумали в Microsoft ещё в позапрошлом десятилетии, с тех пор этот подход был опробован другими крупными компаниями, например VMware и SAP, и его результативность подтверждена цифрами: количество уязвимостей, обнаруживаемых в продуктах, снижается на порядок.
SDL — не магическая серебряная пуля, это просто системный подход к безопасности, последовательно реализуемый на всех уровнях. Вначале формулируются требования к безопасности — чего с нашим продуктом не должно произойти. Затем уже на этапе проектирования анализируются возможные угрозы, сокращается поверхность атаки. Потом проект воплощается в жизнь разработчиками, прошедшими специальный тренинг. Мы проводим этот тренинг внутри компании, рассказываем о самых распространённых ошибках, приводящих к появлению уязвимостей, и о том, как этих ошибок избегать. Код-ревью проводится человеком, компетентным в вопросах ИБ. Также код подвергается статическому и динамическому анализу. В общем, всё согласно лучшим практикам SecDevOps.
Созданный продукт и его компоненты тщательно тестируются. Мы любим, умеем, практикуем самые разные виды тестов. Нагрузочные, деструктивные тесты, фаззинг. Пентесты, разумеется. Есть даже своя система тестирования Hive, которая умеет много интересных вещей: построение гетерогенных тестовых окружений, сетей и подсетей для тестирования распределённых решений. Разве что кофе варить не умеет.
“
Можно ли назвать наш подход к безопасности избыточным? Я бы не стал. На мой взгляд, именно такой подход должен быть нормой. По крайней мере, в крупной компании, которая дорожит благополучием клиентов и своей репутацией.
Пренебрегать вопросами безопасности — это может быть выигрышной стратегией в краткосрочной перспективе. У того, кто выпустит продукт первым, будет преимущество на рынке, даже если у этого продукта есть какие-то проблемы. Поэтому в гонке за первенством кто-то забивает и на безопасность, и на корректность работы, и на всё что можно. Но нужно понимать, что это — технический долг. Причём особо неприятная разновидность этого долга, когда проценты могут взыскать неожиданно и в объёме, поражающем самое смелое воображение.
Сумма инфотехнологий
Ещё один аспект, которым современная ИБ-компания отличается от пресловутого стереотипного «гаража», — используемые технологии. Оценить набор языков, которые мы используем в разработке, можно на странице вакансий. В требованиях можете увидеть C#, Python, даже PHP и JavaScript. Есть, разумеется, и вакансии на C/C++, и даже на ассемблер, но их уже меньшинство.
![](https://habrastorage.org/getpro/tmtm/articles/tld/images/23816255/tild6463-6439-4466-a236-343763323765__image6.jpg)
Технологический стек ИБ-компании не слишком отличается от обычного. Любой инструмент сгодится, если он безопасный и эффективный
Кстати, у нас наметилась тенденция постепенно мигрировать с C++ на Go — там, где это возможно. Go — отличный язык, когда речь идёт о распределённых системах, мы разрабатываем на нём облачные решения. Как я уже говорил, в отрасли существует тенденция двигаться от продукта к экосистеме, поэтому облачных решений у нас всё больше. Ну и, помимо этого, на наш выбор повлиял рынок труда. Разработчика на Go найти проще, чем на C/C++, и если речь не идёт о написании драйверов или ядра системы, то почему бы и нет?
С большой силой приходит большая ответственность, а с большим зоопарком языков и технологий — большая головная боль. Как известно, нет лучшего анальгетика, чем мощный инструмент автоматизации сборки и тестирования, поэтому мы используем Bazel. Впрочем, даже его гибкости не всегда хватает, поэтому мы сделали свой форк, Baldr. Нам нужна поддержка более широкого набора тулчейнов и системных механизмов, таких как NASM, pdb, importlib. Пока это внутренняя разработка, но в планах — выложить Baldr в опенсорс.
Кстати, о системах сборки — ещё у нас есть проект BuildMigrator, который уже доступен всем желающим. Как можно понять из названия, он помогает мигрировать с одной системы сборки на другую. Сейчас целевая система — CMake, но мы уже работаем над обеспечением миграции на Bazel.
Надеюсь, что я сумел развеять стереотипы об инфобезе. А если таких стереотипов у вас и не было — надеюсь, было просто интересно. Напишите в комментариях, о каких вещах, упомянутых в посте, вы хотели бы узнать подробнее.
![](https://habrastorage.org/getpro/tmtm/articles/tld/images/23816255/tild3533-6263-4338-b764-623863333131__image4.jpg)
Инфобез говорит вам «До новых встреч»