Журнал "Information Security/ Информационная безопасность" #5, 2024
Для исследования ядра у нас развер- нута специализированная инфраструк- тура – своего рода исследовательская ферма, которая позволяет выполнять полный цикл анализа от статического анализа и фаззинг-тестирования до дру- гих сложных проверок. Этот анализ выполняется регулярно, поскольку раз- работка ядра Linux не стоит на месте: обновления стабильных веток выходят практически еженедельно, а иногда и чаще. При обнаружении проблем и подго- товке собственных исправлений мы в первую очередь стараемся отправить их в апстрим, то есть в международное сообщество разработчиков ядра. Такой подход помогает минимизировать про- блемы в будущем и снизить трудоем- кость последующих синхронизаций. Но несмотря на нацеленность на рабо- ту с апстримом, нам приходится вести и собственные ветки ядра. В них вклю- чаются патчи, которые задерживаются на пути попадания в интересующие нас стабильные ветки или которые разра- ботчики стабильных веток ядра считают нужным принимать. Это, как правило, касается доработок, направленных на автоматизацию и повышение эффек- тивности фаззинг-тестирования. В кон- тексте стабильных веток такие измене- ния могут считаться избыточными, так как они добавляют новую функциональ- ность. Однако с точки зрения обеспече- ния качественного исследования кода мы считаем их абсолютно необходимыми и включаем в наши ветки. Если выявляются критические уязви- мости, мы придерживаемся особого рег- ламента: такие исправления не публи- куются в открытом доступе сразу. Они сначала помещаются в приватную ветку, доступную только участникам проекта, и проходят период эмбарго. По истече- нии этого срока патчи передаются меж- дународному сообществу. Схема работы Центра При обработке результатов анализа ядра мы в первую очередь отрабатываем то, что появилось в результате послед- него обновления. На нашем сайте 1 можно найти множество примеров таких проблем. Один из типичных случаев – автома- тическое бэкпортирование патча, когда соседние строки кода кажутся неизмен- ными относительно апстрима, и патч применяется автоматически. Однако в стабильных ветках, таких как 5.10 или 6.1, он может работать некорректно. Такие ситуации встречаются регулярно. Например, на прошлой неделе ошибку удалось выявить фаззингом, а на поза- прошлой – статическим анализом. В среднем подобные проблемы фикси- руются раз в месяц-два. Наш опыт показывает, что междуна- родное сообщество справляется с такими ошибками примерно в 80% случаев, обнаруживая их уже в следующем релизе или через релиз. Эти ошибки не выявляются автоматически при выпуске, но достаточно быстро исправляются. Тем не менее, около 20% проблем остаются незамеченными. Мы стараемся опера- тивно информировать сообщество о таких ситуациях, чтобы минимизировать рас- хождения. В своих ветках мы устраняем выявленные проблемы до релиза, внося необходимые исправления и отправляя их на повторное тестирование. Этот подход позволяет эффективно обнаруживать ошибки, которые регу- лярно возникают в обновлениях из-за недочетов в бэкпортировании или других процессах, поскольку количество новых сработок, появляющихся при тестиро- вании очередного обновления, оказы- вается, как правило, достаточно неболь- шим. Однако что делать с огромным объе- мом работы, связанной с анализом всего компонента целиком? Например, ядро Linux содержит более 35 млн строк кода. Запуск статического анализа для такого объема порождает до 40 тыс. пред- упреждений. В 2021 г., глядя на такие цифры, многие из нас чувствовали себя ошеломленными. Но благодаря совместным системати- ческим усилиям удалось организовать эффективный процесс обработки и этого объема предупреждений. Мы сформировали регулярный про- цесс анализа с двухнедельными итера- циями. На каждую итерацию для участ- ников выделяется небольшой объем предупреждений, который можно реаль- но обработать. Эти результаты проверяются незави- симыми экспертами, что позволило кар- динально улучшить качество проводи- мого анализа. Когда статический анализ проводится "для галочки", его резуль- таты часто отправляются в архив и остаются без внимания. Однако пони- мание того, что твою работу будут про- верять квалифицированные эксперты, создает совершенно иной уровень ответственности. Качество их прора- ботки в таких условиях значительно возрастает. Для подтвержденных предупреждений разрабатываются патчи, которые затем направляются в международное сообще- ство. Особенно важно, что в этой работе участвуют не только сотрудники Центра, но и инженеры из организаций-участни- ков. За прошедшее время отработано более 60% предупреждений статическо- го анализа, исправлены десятки про- блем, выявляемых фаззинг-тестирова- нием. Заключение С течением времени все больше инже- неров, выделенных организациями для участия в совместных исследованиях, обучались взаимодействию с междуна- родным сообществом и стали активно вносить вклад, создавая все больше патчей. Если у некоторых организаций уже имелись опытные мейнтейнеры ядра, и участие для них было привычным процессом, то для более чем десятка других организаций мы наблюдали значительный рост их специалистов. Один из важнейших результатов нашей деятельности – формирование квали- фицированных кадров, способных эффективно работать на международ- ном уровне. Для систематизации этой работы был сформирован консорциум 2 , в кото- рый вошли практически все россий- ские организации, занимающиеся ядром Linux. В рамках консорциума разработаны программы исследова- ний, определяющие объем и направ- ления работ. Первая программа была утверждена координационным советом весной 2024 г., вторая сейчас нахо- дится на завершающем этапе. Орга- низации, которые уже вышли на зре- лый уровень работы, демонстрируют отличные результаты, успешно выпол- няя все обязательства. Этот подход мы сейчас масштабиру- ем на другие заимствованные компо- ненты с открытым исходным кодом. Основное внимание уделяется компо- нентам, которые критически важны для разработчиков средств защиты инфор- мации, подлежащих сертификации. В частности, в центре внимания – систе- мы виртуализации, языки программи- рования и их интерпретаторы, такие как Python, .NET, Node.js, а также стан- дартные и специализированные биб- лиотеки, часто оказывающиеся на поверхности атаки. Принципы работы остаются неизмен- ными: глубокий анализ, взаимодействие с сообществом, внесение исправлений в апстрим, совместная работа. На сего- дняшний день благодаря этому подходу уже принято более ста пятидесяти патчей в различные исследуемые ком- поненты. В перспективе мы видим, что только совместная работа над исследованием безопасности заимствованных компо- нентов, может позволить достичь третьего уровня зрелости, что не толь- ко повысит доверие к коду, исполь- зуемому в ключевых системах, но и создаст условия для устойчивого развития технологий с учетом совре- менных требований безопасности и качества. l • 55 Безопасный Linux www.itsec.ru 1 https://portal.linuxtesting.ru/ 2 https://portal.linuxtesting.ru/pub/docs/LVC_Consortium_Agreement.pdf Ваше мнение и вопросы присылайте по адресу is@groteck.ru
Made with FlippingBook
RkJQdWJsaXNoZXIy Mzk4NzYw