Во многих компаниях основной причиной уязвимости становится недостаточная защита приложений и ПО в целом. Большое значение для повышения уровня защищенности сетей имеет разработка ПО с соблюдением требований безопасности. Компаниям следует сократить количество уязвимых точек, используя накопленный опыт обеспечения защиты ПО в процессе его разработки. Постоянный автор нашего "Центра знаний" Джулия Аллен разъясняет, как это сделать и почему вы должны позаботиться о повышении безопасности приложений.

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

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

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

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

Интеграция опыта обеспечения безопасности ПО в цикл разработки

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

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

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

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

Применение анализа и моделирования для повышения защищенности приложений

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

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

Уделять внимание безопасности следует не только на этапах формулирования требований к ПО, определения его дизайна, написания программного кода и тестирования продукта. Важно продолжать анализ кода, проведение тестов на безопасность, проверку настроек и обеспечение качества в процессе развертывания и использования ПО. Это позволит избежать появления в производственных условиях уязвимых мест или вредоносной логики в результате установки обновлений и исправлений.

Наряду со сказанным выше менеджерам проектов следует определить, как повлияют требования к обеспечению безопасности на объем и сроки работы, а также оценить необходимые ресурсы, продукты и процессы.

Три главные цели при разработке защищенного ПО

Использование методов разработки защищенного ПО, в том числе накопленного в этой области опыта, позволит уменьшить число ошибок и уязвимых точек, которыми могут воспользоваться злоумышленники. Устранять потенциальные уязвимости на более ранних этапах разработки (а это достигается главным образом за счет применения соответствующих процессов и опыта) гораздо выгоднее, чем пытаться выявить и исправить их после сдачи системы в эксплуатацию. Так подсказывает здравый смысл. Использование опыта разработки защищенного ПО преследует три главные цели.

  1. Силами добросовестных инженеров устраняется максимально возможное число ошибок и других слабых мест, которыми могут воспользоваться злоумышленники.
  2. Снижается (или устранятся) вероятность, что руководствующиеся преступными намерениями инженеры смогут сознательно внести ошибки, создать другие слабые места и лазейки или внедрить вредоносную логику.
  3. В случае атаки ПО становится более устойчивым по отношению к внешним воздействиям, насколько это возможно и целесообразно с точки зрения решаемых организацией задач.

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

Джулия Аллен — один из авторов книги «Обеспечение безопасности программ: Руководство для менеджеров проектов» ("Software Security Engineering: A Guide for Project Managers". Addison-Wesley, 2008). Она подготовила также серию подкастов CERT «Вопросы безопасности для руководителей компаний» (2006-2008) и выпустила книгу «Практическое руководство CERT по обеспечению безопасности систем и сетей» ("The CERT Guide to System and Network Security Practices". Addison-Wesley, 2001).

Джулия Аллен является старшим техническим сотрудником команды "скорой компьютерной помощи" (CERT) Института программной инженерии (Software Engineering Institute, SEI) — подразделения университета Карнеги —Меллона. Она участвует в разработке и осуществлении программ помощи руководителям предприятий в обеспечении безопасности и организации управления, а также занимается изучением вопросов обеспечения безопасности и качества ПО.

Г-жа Аллен является членом Ассоциации по вычислительной технике (Association for Computing Machinery, ACM) и Компьютерного общества Института инженеров по электротехнике и электронике (IEEE Computer Society).

Ей можно писать по адресу jha@sei.cmu.edu .