Forwarded from Дмитрий Пономарев
Коллеги, добрый день! Многие спрашивали - инф. письма ФСТЭК России по серверам приложений и интерпретаторам, а также по СЗИ в контейнерном исполнении, размещены на сайте ФСТЭК России.
Forwarded from Дмитрий Пономарев
Коллеги, добрый вечер!
Только что опубликовано расписание основного дня ТБФорум - 12 февраля, Актуальные вопросы защиты информации!
Приглашаем всех ознакомиться - программа как всегда сверх-насыщенная и очень интересная! Помимо новостей по нормативно-правовой документации и общим планам Регулятора по развитию и совершенствованию систем аттестации, сертификации и подходов к качественной и безопасной разработке, вы сможете услышать несколько интереснейших докладов на стыке инженерии и методик исследования, в частности по вопросам тестирования API, исследованиям безопасности компиляторов в составе СЗИ, защите от аппаратных угроз в ММЭУС.
Отдельное внимание разумеется будет уделено актуальной практике взаимодействия со ФСТЭК России по тематике Перечней Программных Компонентов - Алексей Хорошилов озвучит самые свежие новости и идеи!
Не пройдем и мимо набирающего обороты процесса испытаний статических анализаторов под патронажем ФСТЭК России!
Приходите сами и приводите друзей-коллег, в том числе из смежных ИТ-отраслей - уверены, многие вопросы и лучшие практики будут интересны и ванильным АйТишникам! 🙂
P.S. Хотите ещё больше РБПО, актуальных практик и живого, неформального общения с ведущими отечественными инженерами и руководителями команд и компаний? Приглашаем вас и на следующий день - 13 февраля - день РБПО-сообщества ФСТЭК России и ИСП РАН! Как всегда - все спикеры "строго по приглашению" и отобраны с дружеским пристрастием!
Изюминка этого года - полноценный мастер-трек в полноценном зале.
Вишенка - круглый стол "Эксперты и экспертизы", посвященный вопросам аттестации экспертов и подготовке кадров. К участию приглашены первоисточники и первосдавшие!
Только что опубликовано расписание основного дня ТБФорум - 12 февраля, Актуальные вопросы защиты информации!
Приглашаем всех ознакомиться - программа как всегда сверх-насыщенная и очень интересная! Помимо новостей по нормативно-правовой документации и общим планам Регулятора по развитию и совершенствованию систем аттестации, сертификации и подходов к качественной и безопасной разработке, вы сможете услышать несколько интереснейших докладов на стыке инженерии и методик исследования, в частности по вопросам тестирования API, исследованиям безопасности компиляторов в составе СЗИ, защите от аппаратных угроз в ММЭУС.
Отдельное внимание разумеется будет уделено актуальной практике взаимодействия со ФСТЭК России по тематике Перечней Программных Компонентов - Алексей Хорошилов озвучит самые свежие новости и идеи!
Не пройдем и мимо набирающего обороты процесса испытаний статических анализаторов под патронажем ФСТЭК России!
Приходите сами и приводите друзей-коллег, в том числе из смежных ИТ-отраслей - уверены, многие вопросы и лучшие практики будут интересны и ванильным АйТишникам! 🙂
P.S. Хотите ещё больше РБПО, актуальных практик и живого, неформального общения с ведущими отечественными инженерами и руководителями команд и компаний? Приглашаем вас и на следующий день - 13 февраля - день РБПО-сообщества ФСТЭК России и ИСП РАН! Как всегда - все спикеры "строго по приглашению" и отобраны с дружеским пристрастием!
Изюминка этого года - полноценный мастер-трек в полноценном зале.
Вишенка - круглый стол "Эксперты и экспертизы", посвященный вопросам аттестации экспертов и подготовке кадров. К участию приглашены первоисточники и первосдавшие!
Forwarded from Дмитрий Пономарев
Коллеги, доброго дня.
В сообщество вливаются новые участники, список чатов/каналов сообщества стал достаточно обширным и не все знают про существующие ресурсы. Представляется полезным раз в полгода публиковать список ресурсов сообщества с их краткой аннотацией.
Ресурсы под эгидой Центра компетенций ФСТЭК России и ИСП РАН:
@sdl_inform - канал, не ставьте его в Mute, сообщения там появляются в среднем одно в неделю. Основные, наиболее значимые для сообщества оповещения о встречах и иных мероприятиях.
@sdl_static - чат, посвященный вопросам компиляторики и статического анализа (в первую очередь безопасный компилятор/Svace/Svacer, но не только).
@sdl_dynamic - чат, посвященный вопросам динамического анализа (в первую очередь Crusher/Sydr/Casr/Блесна/Natch, но не только).
@sdl_community - чат, посвященный вопросам объединения сил и средства сообщества в вопросах анализ ядра Линукс и критичных компонентов, доверенной загрузки и т. п., а также мероприятиям и некоторым (согласованным) новостям от регулятора.
[NEW] @sdl_arch - чат, посвященный вопросам качественной и безопасной разработки, не укладывающимся в темы указанных выше чатов. В частности здесь обсуждаются вопросы композиционного анализа и ППК, вопросы контейнеров и кубернетес, общий вопросы моделирования и архитектуры
[NEW - ранее flood] @sdl_holywar - чат, холивары на тему безопасной и качественно разработки. Сюда переносятся холивары по любым темам из остальных чатов, чтобы не засорять эфир и поддерживать низкий SNR (Signal-Noise Ratio).
Дружественные тематические ресурсы:
@sydr_fuzz - чат, поддержка пользователей фаззера Sydr.
@ispras_natch - чат, поддержка пользователей системы определения поверхности атаки Natch.
@sdl_for_upstream_ru и @sdl_for_upstream - чат и канал, оповещения о принятых апстримом багах и уязвимостях, найденных участниками сообщества.
@ispras_friends - чат неформального общения друзей и единомышленников РБПО-сообщества ФСТЭК России и ИСП РАН.
@SDL_Community_SPb - чат, локальный чат Питерской ветки нашего сообщества, созданный в мае с целью координировать локальные встречи в СПб (ближайшая будет 12го августа, 27го июля объявим подробности).
Некоторые правила ресурсов "под эгидой":
1. Не стесняйтесь задавать вопросы - чаты изначально созданы именно как просветительский ресурс под эгидой регулятора, в этом их основная миссия. И, традиционно, нам нужны мотивированные и грамотные контрибьюторы :)
2. Чаты не предназначены для обсуждения особенностях трактовки регуляторных документов (Положения, Требования, Методики и т. п.) и их правоприменительной практики, за исключением особых случаев, как правило непосредственно инспирированных регулятором, например: https://t.me/sdl_community/2218.
3. Чаты не предназначены для форвардинга сообщений маркетологической направленности, особенно в отношении различных "поделок". Описание вашего личного, подтверждаемого и воспроизводимого в потенциальных публичных соревнованиях опыта использования тех или иных инструментов/методик, приветствуется.
[NEW] 3.1. Некоторое исключение делается для значимых и кросс-верифицированных участников нашего сообщества (вы и так знаете о ком речь, если в сообщества давно. Модератор знает их точно, и авторитаризм никто не отменял) в случае ответов на вопросы в чате. Но в любом случае злоупотребление данной возможностью будет пресекаться вне зависимости от любой дружбы.
4. Избегайте флуда, в том числе личных эмоциональных позиций, флейма, глубокомысленных комментариев по вопросам, в которых вы слабо разбираетесь и т. п. Все люди взрослые, банхаммер не дремлет :) Исключение - чат друзей @ispras_friends.
В сообщество вливаются новые участники, список чатов/каналов сообщества стал достаточно обширным и не все знают про существующие ресурсы. Представляется полезным раз в полгода публиковать список ресурсов сообщества с их краткой аннотацией.
Ресурсы под эгидой Центра компетенций ФСТЭК России и ИСП РАН:
@sdl_inform - канал, не ставьте его в Mute, сообщения там появляются в среднем одно в неделю. Основные, наиболее значимые для сообщества оповещения о встречах и иных мероприятиях.
@sdl_static - чат, посвященный вопросам компиляторики и статического анализа (в первую очередь безопасный компилятор/Svace/Svacer, но не только).
@sdl_dynamic - чат, посвященный вопросам динамического анализа (в первую очередь Crusher/Sydr/Casr/Блесна/Natch, но не только).
@sdl_community - чат, посвященный вопросам объединения сил и средства сообщества в вопросах анализ ядра Линукс и критичных компонентов, доверенной загрузки и т. п., а также мероприятиям и некоторым (согласованным) новостям от регулятора.
[NEW] @sdl_arch - чат, посвященный вопросам качественной и безопасной разработки, не укладывающимся в темы указанных выше чатов. В частности здесь обсуждаются вопросы композиционного анализа и ППК, вопросы контейнеров и кубернетес, общий вопросы моделирования и архитектуры
[NEW - ранее flood] @sdl_holywar - чат, холивары на тему безопасной и качественно разработки. Сюда переносятся холивары по любым темам из остальных чатов, чтобы не засорять эфир и поддерживать низкий SNR (Signal-Noise Ratio).
Дружественные тематические ресурсы:
@sydr_fuzz - чат, поддержка пользователей фаззера Sydr.
@ispras_natch - чат, поддержка пользователей системы определения поверхности атаки Natch.
@sdl_for_upstream_ru и @sdl_for_upstream - чат и канал, оповещения о принятых апстримом багах и уязвимостях, найденных участниками сообщества.
@ispras_friends - чат неформального общения друзей и единомышленников РБПО-сообщества ФСТЭК России и ИСП РАН.
@SDL_Community_SPb - чат, локальный чат Питерской ветки нашего сообщества, созданный в мае с целью координировать локальные встречи в СПб (ближайшая будет 12го августа, 27го июля объявим подробности).
Некоторые правила ресурсов "под эгидой":
1. Не стесняйтесь задавать вопросы - чаты изначально созданы именно как просветительский ресурс под эгидой регулятора, в этом их основная миссия. И, традиционно, нам нужны мотивированные и грамотные контрибьюторы :)
2. Чаты не предназначены для обсуждения особенностях трактовки регуляторных документов (Положения, Требования, Методики и т. п.) и их правоприменительной практики, за исключением особых случаев, как правило непосредственно инспирированных регулятором, например: https://t.me/sdl_community/2218.
3. Чаты не предназначены для форвардинга сообщений маркетологической направленности, особенно в отношении различных "поделок". Описание вашего личного, подтверждаемого и воспроизводимого в потенциальных публичных соревнованиях опыта использования тех или иных инструментов/методик, приветствуется.
[NEW] 3.1. Некоторое исключение делается для значимых и кросс-верифицированных участников нашего сообщества (вы и так знаете о ком речь, если в сообщества давно. Модератор знает их точно, и авторитаризм никто не отменял) в случае ответов на вопросы в чате. Но в любом случае злоупотребление данной возможностью будет пресекаться вне зависимости от любой дружбы.
4. Избегайте флуда, в том числе личных эмоциональных позиций, флейма, глубокомысленных комментариев по вопросам, в которых вы слабо разбираетесь и т. п. Все люди взрослые, банхаммер не дремлет :) Исключение - чат друзей @ispras_friends.
Telegram
Информ::Доверенная Разработка
Информационный канал сообщества ФСТЭК России и ИСП РАН в области разработки безопасного и качественного ПО.
Описание семейства чатов и правила доступны тут: https://t.me/sdl_community/7859
Описание семейства чатов и правила доступны тут: https://t.me/sdl_community/7859
Методическая рекомендация № 2025-04-001
Область: Определение поверхности атаки (ПА)
Тип недостатка: Некорректное определение ПА на системные компоненты. Фаззинг кода, не составляющего ПА в типовых сценариях эксплуатации СЗИ.
Описание: Фаззинг-тестирование стандартных консольных утилит как правило не является приоритетным с точки зрения анализа поверхности СЗИ. На рис. 1 представлен список компонентов, определенных в качестве ПА на СЗИ типа А - "Операционная система общего пользования". На рис. 2-3 представлена консоль фаззера
Утилиты
Рекомендации:
- относить к поверности атаки в приоритетном порядке компоненты СЗИ, доступные сетевому нарушителю, обладающие повышенными привилегиями, непосредственно реализующие функции безопасности и иную значимую бизнес-логику приложений
- при отнесении к поверхности атаки компонентов, очевидно не обладающих указанными выше свойствами, приводить описание реалистичных и вероятных сценариев использования СЗИ, обосновывающих очевидное присутствие данных компонентов на поверхности атаки
Дополнительные информационные материалы:
- определение ПА в ГОСТ 56939-2024
- слайды 4, 6, 9 по ссылке
- слайды 16, 18
Область: Определение поверхности атаки (ПА)
Тип недостатка: Некорректное определение ПА на системные компоненты. Фаззинг кода, не составляющего ПА в типовых сценариях эксплуатации СЗИ.
Описание: Фаззинг-тестирование стандартных консольных утилит как правило не является приоритетным с точки зрения анализа поверхности СЗИ. На рис. 1 представлен список компонентов, определенных в качестве ПА на СЗИ типа А - "Операционная система общего пользования". На рис. 2-3 представлена консоль фаззера
afl++
, с помощью которого в ходе испытаний выполнялось фаззинг-тестирование в отношении утилит base64 и cat.Утилиты
base64
и cat
из состава пакета coreutils как правило запускаются пользователем или администратором системы, который уже имеет доступ к терминалу, либо используются в служебных скриптах. Данные утилиты не обладают какими либо повышенными привилегиями (права rwx
, suid
-бит, capabilities
и т. п.) в данном СЗИ после выполнения инструкции по безопасной установке и настройке. В случае обнаружения программной ошибки в данных утилитах, вероятность использования данной ошибки в качестве уязвимости как правило мала, поскольку утилиты не обладают повышенными привилегиями, не реализуют механизмы управления доступом или иные функции безопасности. Потенциальный нарушитель в первую очередь будет стремиться воздействовать на компоненты ОС, обладающие повышенными привилегиями, либо взаимодействующие с недоверенными источниками - в первую очередь сетевые службы в составе ОС. Рекомендации:
- относить к поверности атаки в приоритетном порядке компоненты СЗИ, доступные сетевому нарушителю, обладающие повышенными привилегиями, непосредственно реализующие функции безопасности и иную значимую бизнес-логику приложений
- при отнесении к поверхности атаки компонентов, очевидно не обладающих указанными выше свойствами, приводить описание реалистичных и вероятных сценариев использования СЗИ, обосновывающих очевидное присутствие данных компонентов на поверхности атаки
Дополнительные информационные материалы:
- определение ПА в ГОСТ 56939-2024
- слайды 4, 6, 9 по ссылке
- слайды 16, 18
Методическая рекомендация № 2025-04-001 (графические материалы)
Методическая рекомендация № 2025-04-002
Область: Определение поверхности атаки (ПА)
Тип недостатка: Некорректное определение ПА на системные компоненты. Необоснованная приоритизация исследования компонентов ПА.
Описание 1: На рис. 1 представлен список компонентов, определенных в качестве ПА на СЗИ типа А - "Операционная система общего пользования". Эксперт определил, что компонент
Выбор
Значительно более перспективной целью является исследование компонента
Рекомендации:
- при определении ПА и конкретного кода для фаззинг-тестирования и иных видов исследований, необходимо приоритизировать исследуемые компоненты и модули и в первую очередь сосредоточиться на тестировании модулей, наиболее подверженных риску воздействия потенциального нарушителя
- при исследовании СЗИ, основанных на дистрибутивах ОС (Линукс и иных), рекомендуется в приоритетном порядке исследовать модули сетевых сервисов, доступные потенциальным нарушителям по сети (в первую очередь сервисы, постоянно держащие открытые LISTEN-сокеты)
Дополнительные информационные материалы:
- список типовых Линукс-утилит с установленным битом suid (повышенные привилегии)
- список типовых сетевых сервисов для ОС Линукс
- определение ПА в ГОСТ 56939-2024
- слайды 4, 6, 9 по ссылке
- слайды 16, 18
Область: Определение поверхности атаки (ПА)
Тип недостатка: Некорректное определение ПА на системные компоненты. Необоснованная приоритизация исследования компонентов ПА.
Описание 1: На рис. 1 представлен список компонентов, определенных в качестве ПА на СЗИ типа А - "Операционная система общего пользования". Эксперт определил, что компонент
openssh
находится на ПА, что, как правило, является верным определением. Данный открытый компонент содержит исходные коды и правила сборки для нескольких исполняемых модулей, к которым относятся приложения сервера (сервис, служба, демон) sshd
и клиента ssh
. В качестве единственного модуля, подлежащего исследованиям, эксперт выбрал (рис. 2) именно модуль ssh
.Выбор
ssh
в качестве единственной цели для исследования из состава компонента openssh
в рамках исследований указанного СЗИ (и - как правило, всегда, за исключением подлежащих обоснованию частных случаев в т. ч. запуска ssh
с повышенными привилегиями в ОС) является некорректным по причине низкого приоритета. ssh
является клиентским приложением, запускаемым пользователем из терминала каждый раз при желании установить соединение с сервером. Дополнительных привилегий (SUID
, capabilities
и т. п.) для его запуска не требуется - повышение привилегий пользователя за счет эксплуатации дефектов кода в данном модуле, как правило, является маловероятным. Значительно более перспективной целью является исследование компонента
sshd
, также входящего в состав компонента openssh
и реализующего функционал ssh-сервера. Именно ssh-сервер, как правило, составляет сетевую ПА в составе типовых СЗИ типа ОС. Рекомендации:
- при определении ПА и конкретного кода для фаззинг-тестирования и иных видов исследований, необходимо приоритизировать исследуемые компоненты и модули и в первую очередь сосредоточиться на тестировании модулей, наиболее подверженных риску воздействия потенциального нарушителя
- при исследовании СЗИ, основанных на дистрибутивах ОС (Линукс и иных), рекомендуется в приоритетном порядке исследовать модули сетевых сервисов, доступные потенциальным нарушителям по сети (в первую очередь сервисы, постоянно держащие открытые LISTEN-сокеты)
Дополнительные информационные материалы:
- список типовых Линукс-утилит с установленным битом suid (повышенные привилегии)
- список типовых сетевых сервисов для ОС Линукс
- определение ПА в ГОСТ 56939-2024
- слайды 4, 6, 9 по ссылке
- слайды 16, 18
Методическая рекомендация № 2025-04-002 (графические материалы)
Методическая рекомендация № 2025-04-003
Область: Определение поверхности атаки (ПА) / Фаззинг-тестирование
Тип недостатка: Некорректное определение составляющего ПА кода компонентов. Необоснованный фаззинг аргументов командой строки консольных приложений.
Описание: На рис. 1 представлено описание проведения фаззинг-тестирования утилиты
Фаззинг-тестирование параметров запуска (аргументов командной строки) консольных приложений как правило не представляет значительной ценности с точки зрения исследования ПА. Если злоумышленник уже получил доступ к терминалу (закрепился в системе), его действия будут направлены на задачи повышения собственных привилегий, воздействие на критичные компоненты системы, такие как ядро, сетевые сервисы или права доступа. Эксплуатация потенциальных ошибок в обработке аргументов запуска консольных приложений, как правило, не позволит пользователю нанести системе больший ущерб, чем уже достигнутая возможность запускать данное приложение с различными штатными параметрами. Например для утилиты
При этом необходимо отметить, что в ряде случаев — в первую очередь при работе приложения с привилегиями, превышающими непосредственные привилегии пользователя (см. ниже пример утилиты
Рекомендации:
- при определении ПА и приоритизации исследований необходимо сосредоточиться на реальных сценариях атак, которые могут быть реализованы злоумышленниками
- за исключением ряда частных случаев фаззинг-тестирование аргументов командной строки запуска консольных приложений, особенно выполняющихся без повышения привилегий, является низкоприоритетным по причине малой вероятности эксплуатации нарушителем выявленных дефектов кода
- при исследовании сетевых сервисов наиболее приоритетным, как правило, является исследование кода, отвечающего за разбор (парсинг) трафика, поступающего из сети
Дополнительные информационные материалы:
- пример исследования кода сетевого сервиса sshd
- определение ПА в ГОСТ 56939-2024
- слайды 4, 6, 9 по ссылке
- слайды 16, 18
Область: Определение поверхности атаки (ПА) / Фаззинг-тестирование
Тип недостатка: Некорректное определение составляющего ПА кода компонентов. Необоснованный фаззинг аргументов командой строки консольных приложений.
Описание: На рис. 1 представлено описание проведения фаззинг-тестирования утилиты
ssh
через аргументы командной строки с использованием заголовочного файла argv-fuzz-inl.h
, для СЗИ типа А - "Операционная система общего пользования". На рис. 2 представлена консоль фаззера afl++
, с помощью которого в ходе испытаний выполнялось фаззинг-тестирование в отношении утилиты ssh
.Фаззинг-тестирование параметров запуска (аргументов командной строки) консольных приложений как правило не представляет значительной ценности с точки зрения исследования ПА. Если злоумышленник уже получил доступ к терминалу (закрепился в системе), его действия будут направлены на задачи повышения собственных привилегий, воздействие на критичные компоненты системы, такие как ядро, сетевые сервисы или права доступа. Эксплуатация потенциальных ошибок в обработке аргументов запуска консольных приложений, как правило, не позволит пользователю нанести системе больший ущерб, чем уже достигнутая возможность запускать данное приложение с различными штатными параметрами. Например для утилиты
ssh
указанные некорректно имя пользователя или адрес удаленного хоста приведут к завершению приложения с сообщением об ошибке, без влияния на безопасность приложения (объекта оценки) в целом.При этом необходимо отметить, что в ряде случаев — в первую очередь при работе приложения с привилегиями, превышающими непосредственные привилегии пользователя (см. ниже пример утилиты
ping
) — эксплуатация дефектов приложения может позволить пользователю-нарушителю выполнять вредоносные действия с повышенными привилегиями. В таких случаях исследование кода данного приложения в приоритетном порядке может являться обоснованным. Рекомендации:
- при определении ПА и приоритизации исследований необходимо сосредоточиться на реальных сценариях атак, которые могут быть реализованы злоумышленниками
- за исключением ряда частных случаев фаззинг-тестирование аргументов командной строки запуска консольных приложений, особенно выполняющихся без повышения привилегий, является низкоприоритетным по причине малой вероятности эксплуатации нарушителем выявленных дефектов кода
- при исследовании сетевых сервисов наиболее приоритетным, как правило, является исследование кода, отвечающего за разбор (парсинг) трафика, поступающего из сети
Дополнительные информационные материалы:
- пример исследования кода сетевого сервиса sshd
- определение ПА в ГОСТ 56939-2024
- слайды 4, 6, 9 по ссылке
- слайды 16, 18
Методическая рекомендация № 2025-04-003 (графические материалы)
Методическая рекомендация № 2025-04-004
Область: Определение поверхности атаки (ПА) / Фаззинг-тестирование
Тип недостатка: Некорректное определение ПА. Необоснованное фаззинг-тестирование интерпретаторов за счет подачи скриптов на вход.
Описание: На рис. 1-3 представлены примеры фаззинг-тестирования сред выполнения программного кода на языках программирования
Фаззинг-тестирование интерпретаторов, используемых для серверной части веб-приложений, путем передачи на вход скриптов, как правило, оказывается малоэффективным и создает лишь видимость полноценного тестирования. Это связано с тем, что большинство мутаций приводят к генерации синтаксически некорректных конструкций, которые либо отбрасываются интерпретатором, либо не изменяют поведение программы.
Например:
Мутация вида
Мутация вида
Использование стандартных мутаторов не позволяет целенаправленно провести тестирование в отношении интерпретатора для поиска потенциальных уязвимостей, связанных с обработкой синтаксически корректных конструкций языка. Для эффективного проведения фаззинг-тестирования требуется более глубокий анализ и разработка специализированных мутаторов, учитывающих особенности языка программирования.
Поэтому для веб-приложений, поддерживающих выполнение скриптов на стороне серверной части, важно проводить тестирование в отношении функций, непосредственно доступных потенциальному нарушителю для взаимодействия с ними и передачи значений аргументов в них. (Пример таких функций: обработка входных данных через API или веб-интерфейсы; анализ и обработка данных, передаваемых через HTTP-запросы).
Рекомендации:
- необходимо проводить фаззинг-тестирование участков кода, непосредственно взаимодействующих с данными, поступающими от потенциального нарушителя (парсеры, анализаторы)
- рекомендуется взаимодействие с Центром исследований безопасности системного программного обеспечения для организации фаззинг-тестирования интерпретаторов, поскольку Центр обладает значительным опытом в их анализе и выявлении потенциальных уязвимостей
Дополнительные информационные материалы:
- презентация Центра
- слайды 8, 9 по ссылке
- определение ПА в ГОСТ 56939-2024
- слайды 16, 18
Область: Определение поверхности атаки (ПА) / Фаззинг-тестирование
Тип недостатка: Некорректное определение ПА. Необоснованное фаззинг-тестирование интерпретаторов за счет подачи скриптов на вход.
Описание: На рис. 1-3 представлены примеры фаззинг-тестирования сред выполнения программного кода на языках программирования
OpenJDK
, Bash
, Python
(далее — интерпретатор), путем перебора скриптов, поданных на вход. Фаззинг-тестирование интерпретаторов, используемых для серверной части веб-приложений, путем передачи на вход скриптов, как правило, оказывается малоэффективным и создает лишь видимость полноценного тестирования. Это связано с тем, что большинство мутаций приводят к генерации синтаксически некорректных конструкций, которые либо отбрасываются интерпретатором, либо не изменяют поведение программы.
Например:
Мутация вида
print("Hello world")
→ print("llHeo world")
сохраняет семантику исходного кода, не влияя на работу интерпретатора.Мутация вида
print("Hello world")
→ ntpri("llHeo world")
приводит к синтаксической ошибке, после которой интерпретатор прекращает выполнение скрипта.Использование стандартных мутаторов не позволяет целенаправленно провести тестирование в отношении интерпретатора для поиска потенциальных уязвимостей, связанных с обработкой синтаксически корректных конструкций языка. Для эффективного проведения фаззинг-тестирования требуется более глубокий анализ и разработка специализированных мутаторов, учитывающих особенности языка программирования.
Поэтому для веб-приложений, поддерживающих выполнение скриптов на стороне серверной части, важно проводить тестирование в отношении функций, непосредственно доступных потенциальному нарушителю для взаимодействия с ними и передачи значений аргументов в них. (Пример таких функций: обработка входных данных через API или веб-интерфейсы; анализ и обработка данных, передаваемых через HTTP-запросы).
Рекомендации:
- необходимо проводить фаззинг-тестирование участков кода, непосредственно взаимодействующих с данными, поступающими от потенциального нарушителя (парсеры, анализаторы)
- рекомендуется взаимодействие с Центром исследований безопасности системного программного обеспечения для организации фаззинг-тестирования интерпретаторов, поскольку Центр обладает значительным опытом в их анализе и выявлении потенциальных уязвимостей
Дополнительные информационные материалы:
- презентация Центра
- слайды 8, 9 по ссылке
- определение ПА в ГОСТ 56939-2024
- слайды 16, 18
Методическая рекомендация № 2025-04-004 (графические материалы)