Читаем Безопасность информационных систем полностью

Наличие ошибок последовательности действий предопределяется асинхронным функционированием компонентов системы, которое может быть использовано для нарушения безопасности. Выявить такие ошибки в системе достаточно трудно. Например, одной из операций может быть проверка идентификатора процесса, а второй – установка для него соответствующих полномочий, или проверка допустимости параметра, а затем – его использование. Асинхронность может быть использована злоумышленником для обмана механизмов контроля путем подмены параметра на другой, запрещенный после проверки его допустимости, но перед использованием. Данная ошибка носит название TOCTTOU (time-of-check to time-of-use) – возможность подмены параметра между моментом проверки и моментом использования.

Ошибки идентификации/аутентификации приводят к тому, что неуполномоченный на соответствующие действия пользователь получает доступ к защищенным объектам в объеме полномочий другого лица. Эти ошибки рассматриваться как ошибки контроля, т. е. происходит неправильная проверка параметров идентификации и подлинности пользователя и объекта.

Ошибки проверки границ объектов и связанные с ними каналы утечки возникают из-за игнорирования проверок того, что определенный объект пересек границы области памяти, отведенной для его хранения (контроль длины строки, размера массива, размера и положения файла и т. д.).

Существуют также другие ошибки, не попадающие непосредственно ни в одну из перечисленных категорий. Их называют ошибками логики функционирования системы и механизмов защиты, которые потенциально могут быть использованы злоумышленниками для проникновения в систему и нарушения безопасности.

Классификация нарушений информационной безопасности по этапам возникновения и внедрения

Таксономия нарушений ИБ по этапу внедрения, основанная на этих положениях, приведена в табл. 5.

Таблица 5

Таксономия нарушений информационной безопасности по этапу возникновения 

Возникновение нарушений информационной безопасности на этапе разработки системы.

Процесс разработки программной системы включает этапы:

1) составление требований и спецификаций;

2) создание исходных текстов программ;

3) генерация исполняемого кода.

На каждом из этих этапов в создаваемую систему могут быть внесены ошибки, которые приводят к возникновению нарушений информационной безопасности.

Составление требований и спецификаций. Требования к программному обеспечению описывают, что должна делать каждая из программ в составе системы. Спецификации определяют, каким образом эти действия должны выполняться.

Требования или спецификации не могут содержать положения, явно обусловливающие преднамеренные ошибки и каналы утечки информации. Требования и спецификации должны быть открыты и понятны, а также позволять относительно легко выявить и устранить ошибки типа «черного хода» и им подобные.

В основном ошибки возникают из-за необходимости одновременного выполнения как требований по защите, так и общих функциональных требований к системе. Конкуренция этих требований и неизбежно возникающие противоречия между этими требованиями требуют от разработчиков принятия компромиссных решений, в которых предпочтение может быть отдано функциональности системы в ущерб ее безопасности.

Создание исходных текстов программ. Большинство ошибок в исходных текстах, как случайных, так и внесенных преднамеренно, может быть обнаружено при тщательном их изучении. Наиболее распространены случайные ошибки в исходных текстах программ. Они возникают в результате неадекватной реализации определенных в требованиях интерфейсов модулей, либо просто из-за ошибок программистов.

Преднамеренные ошибки могут быть внесены программистом. Программист может внедрить в систему код, не предусмотренный ее спецификациями, но нужный ему для отладки и тестирования разрабатываемой программы. Если по завершению разработки программы этот код не будет удален из нее, он превратится в канал утечки информации и может быть использован злоумышленником.

Генерация исполняемого кода. Исполняемый код генерируется компиляторами из исходных текстов программ и представляет собой инструкции, предназначенные для выполнения процессором. Поскольку компиляторы предназначены только для формального преобразования исходных текстов в исполняемый код, они автоматически переносят ошибки из первых во второй. Если ошибки содержатся в самом компиляторе, тогда они могут использоваться злоумышленниками для получения в компилируемых программах нужных им фрагментов кода.

Перейти на страницу:

Похожие книги