Наличие ошибок последовательности действий предопределяется асинхронным функционированием компонентов системы, которое может быть использовано для нарушения безопасности. Выявить такие ошибки в системе достаточно трудно. Например, одной из операций может быть проверка идентификатора процесса, а второй – установка для него соответствующих полномочий, или проверка допустимости параметра, а затем – его использование. Асинхронность может быть использована злоумышленником для обмана механизмов контроля путем подмены параметра на другой, запрещенный после проверки его допустимости, но перед использованием. Данная ошибка носит название TOCTTOU (time-of-check to time-of-use) – возможность подмены параметра между моментом проверки и моментом использования.
Ошибки идентификации/аутентификации приводят к тому, что неуполномоченный на соответствующие действия пользователь получает доступ к защищенным объектам в объеме полномочий другого лица. Эти ошибки рассматриваться как ошибки контроля, т. е. происходит неправильная проверка параметров идентификации и подлинности пользователя и объекта.
Ошибки проверки границ объектов и связанные с ними каналы утечки возникают из-за игнорирования проверок того, что определенный объект пересек границы области памяти, отведенной для его хранения (контроль длины строки, размера массива, размера и положения файла и т. д.).
Существуют также другие ошибки, не попадающие непосредственно ни в одну из перечисленных категорий. Их называют ошибками логики функционирования системы и механизмов защиты, которые потенциально могут быть использованы злоумышленниками для проникновения в систему и нарушения безопасности.
Классификация нарушений информационной безопасности по этапам возникновения и внедрения
Таксономия нарушений ИБ по этапу внедрения, основанная на этих положениях, приведена в табл. 5.
Таксономия нарушений информационной безопасности по этапу возникновения
Процесс разработки программной системы включает этапы:
1) составление требований и спецификаций;
2) создание исходных текстов программ;
3) генерация исполняемого кода.
На каждом из этих этапов в создаваемую систему могут быть внесены ошибки, которые приводят к возникновению нарушений информационной безопасности.
Составление требований и спецификаций. Требования к программному обеспечению описывают, что должна делать каждая из программ в составе системы. Спецификации определяют, каким образом эти действия должны выполняться.
Требования или спецификации не могут содержать положения, явно обусловливающие преднамеренные ошибки и каналы утечки информации. Требования и спецификации должны быть открыты и понятны, а также позволять относительно легко выявить и устранить ошибки типа «черного хода» и им подобные.
В основном ошибки возникают из-за необходимости одновременного выполнения как требований по защите, так и общих функциональных требований к системе. Конкуренция этих требований и неизбежно возникающие противоречия между этими требованиями требуют от разработчиков принятия компромиссных решений, в которых предпочтение может быть отдано функциональности системы в ущерб ее безопасности.
Создание исходных текстов программ. Большинство ошибок в исходных текстах, как случайных, так и внесенных преднамеренно, может быть обнаружено при тщательном их изучении. Наиболее распространены случайные ошибки в исходных текстах программ. Они возникают в результате неадекватной реализации определенных в требованиях интерфейсов модулей, либо просто из-за ошибок программистов.
Преднамеренные ошибки могут быть внесены программистом. Программист может внедрить в систему код, не предусмотренный ее спецификациями, но нужный ему для отладки и тестирования разрабатываемой программы. Если по завершению разработки программы этот код не будет удален из нее, он превратится в канал утечки информации и может быть использован злоумышленником.
Генерация исполняемого кода. Исполняемый код генерируется компиляторами из исходных текстов программ и представляет собой инструкции, предназначенные для выполнения процессором. Поскольку компиляторы предназначены только для формального преобразования исходных текстов в исполняемый код, они автоматически переносят ошибки из первых во второй. Если ошибки содержатся в самом компиляторе, тогда они могут использоваться злоумышленниками для получения в компилируемых программах нужных им фрагментов кода.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии