Учебное пособие Ставрополь сф мггу им. М. А. Шолохова 2009
Скачать 5.26 Mb.
|
разрушающими программными средствами (РПС), а их обобщенная классификация может выглядеть следующим образом: - компьютерные вирусы - программы, способные размножаться, прикрепляться к другим программам, передаваться по линиям связи 349 и сетям передачи данных, проникать в электронные телефонные станции и системы управления и выводить их из строя; - программные закладки - программные компоненты, заранее внедряемые в компьютерные системы, которые по сигналу или в установленное время приводятся в действие, уничтожая или искажая информацию, или дезорганизуя работу программно- технических средств; - способы и средства, позволяющие внедрять компьютерные вирусы и программные закладки в компьютерные системы и управлять ими на расстоянии. Под алгоритмической закладкой будем понимать преднамеренное завуалированное искажение какой-либо части алгоритма решения задачи, либо построение его таким образом, что в результате конечной программной реализации этого алгоритма в составе программного компонента или комплекса программ, последние будут иметь ограничения на выполнение требуемых функций, заданных спецификацией, или вовсе их не выполнять при определенных условиях протекания вычислительного процесса, задаваемого семантикой перерабатываемых программой данных. Кроме того, возможно появление у программного компонента функций, не предусмотренных прямо или косвенно спецификацией, и которые могут быть выполнены при строго определенных условиях протекания вычислительного процесса. Под программной закладкой будем понимать совокупность операторов и (или) операндов, преднамеренно в завуалированной форме включаемую в состав выполняемого кода программного компонента на любом этапе его разработки. Программная закладка реализует определенный несанкционированный алгоритм с целью ограничения или блокирования выполнения программным компонентом требуемых функций при определенных условиях протекания вычислительного процесса, задаваемого семантикой перерабатываемых программным компонентом данных, либо с целью снабжения программного компонента не предусмотренными спецификацией функциями, которые могут быть выполнены при строго определенных условиях протекания вычислительного процесса. Примеры уязвимостей ПО Команда из четырех человек, работающих в разных университетах США, в 2008 году разработала технологию автоматической генерации кода атаки на такую уязвимость в ПО, которая заранее неизвестна, а вычисляется путем сличения исходной и пропатченной версий программы. Иначе говоря, инструкции для создания нового вредоносного 350 кода предоставляет, по сути, сама программная заплатка, выпущенная с целью латания очередной дыры. Разработанная технология APEG (Automatic Patch-based Exploit Generation) позволяет за время от нескольких секунд до нескольких минут сгенерировать код атаки для большинства типов программных уязвимостей. Алгоритм APEG работает как доказательство корректности системы, проводимое в обратную сторону. Сначала выявляются различия в исполняемых кодах программы до и после применения заплатки, а затем по ее коду анализируется, для чего она предназначена. Патчи безопасности обычно содержат тест, который определенным образом ограничивает допустимые значения на входе системы, но существует процедура позволяющая пройти по коду и автоматически выявить набор входов, которые отлавливаются тестами нового патча. Когда это сделано, применяется специальный набор правил-эвристик для точной локализации места уязвимости, затем генерируется несколько вариантов кодов, потенциально способных эксплуатировать данную уязвимость, а тестовые испытания устанавливают, какой из кодов реально срабатывает. По мнению разработчиков, это означает, что если корпорация Microsoft существенно не изменит способ распространения патчей среди клиентов, то последствия могут оказаться тяжелейшими. Ведь злоумышленники, заполучив в руки систему типа APEG, могут обнаружить уязвимость по свежевыпущенному патчу и провести атаку до того, как этот самый патч будет установлен на атакуемую машину. Сотрудники Иллинойского университета (Урбана-Шампань) на конференции семинара по крупномасштабным и новым компьютерным угрозам (USENIX workshop on Large-Scale Exploits and Emergent Threats [LEET]) в 2008 году представили на удивление эффективный подход к добавлению аппаратных закладок в компьютеры общего назначения. Исследователи показали, что внесения в схему процессора совсем небольшого (одна-две тысячи) числа элементов достаточно для обеспечения широкого спектра дистанционных атак, которые невозможно выявить или предотвратить с помощью традиционных софтверных подходов к безопасности. Правда, для проведения подобных атак требуется фундаментально скомпрометировать компьютеры на этапе их создания или сборки. Это вполне по силам государственным спецслужбам. Технически это выглядит так. Скрытые в процессоре вредоносные схемы обеспечивают атакующую сторону невидимым внутренним плацдармом для атак. Поскольку такие схемы занимают уровень, находящийся ниже стека программ, они способны обходить все традиционные техники защиты. В работе представлена общая конструкция и конкретные формы реализации так называемых IMPs (Illinois Malicious Processors, «иллинойских вредоносных процессоров»). Показано, что даже с учетом жестких 351 ограничений по месту, его все равно достаточно для планирования разнообразных типов атак, а не одной узконаправленной. Такая гибкость схемы позволила разработчикам продемонстрировать две конкретные конструкции и реализовать их практически в конкретной системе FPGA- чипа, то есть процессора с перепрограммируемой логикой. Вот примеры, подтверждающие общую концепцию. Эскалация привилегий. Используя механизм доступа к памяти, реализован вредоносный сервис, поднимающий привилегии пользовательского процесса до высшего (root) уровня. При выполнении такой атаки программа эскалации привилегий использует аппаратную закладку в процессоре для отключения защиты привилегированных областей памяти. Он позволяет напрямую нарушать все предположения ОС относительно обеспечиваемой защиты памяти. Входной бэкдор. Используя специально разработанный механизм теневого режима, разработчики реализовали вредоносный сервис, служащий постоянным «черным ходом» в систему. Чтобы начать атаку захвата, злоумышленник посылает сетевой пакет в систему жертвы, где ОС первым делом инспектирует этот пакет, проверяя контрольную сумму UDP. Сам акт проверки пакета (необходимый для принятия решения о том, следует ли его отвергнуть) запускает троянскую закладку в железе, а вредоносная программа интерпретирует содержимое пакета как новый код прошивки, который невидимо загружается в процессор. Операционная же система тем временем отбрасывает непрошеный пакет и продолжает работу, не заметив атаки. Код прошивки, реализующий теневой режим, отслеживает login- приложение для входа в систему. И когда некто пытается войти с особым, заранее известным закладке паролем, та подменяет значение функции проверки пароля на «правильный» и тем самым гарантирует доступ в систему любому, кто знает хитрость. Чтобы скрыть следы атаки, сразу после успешной попытки логина прошивка сама себя выгружает и отключает теневой режим, возвращая системе все ресурсы процессора. Таким образом, послав сетевой UDP-пакет и тут же войдя в систему, злоумышленник может сократить время работы теневого режима до минимума. Если же система жертвы не имеет выхода в сеть, то для включения закладки-бэкдора можно использовать похожий механизм на основе внешнего накопителя. Например, в USB-модуле флэш-памяти для этого подходит самый первый блок, необходимый для идентификации типа файловой системы. Механизм теневого режима увеличивает количество логических гейтов схемы всего на 0,08%, давая при этом неограниченный доступ к компьютеру без опоры на какие-либо программные уязвимости. Похищение паролей. С помощью того же механизма теневого режима можно реализовать сервис, ворующий пароли доступа у легитимных пользователей системы. Главная трудность здесь - отыскание паролей в гигантских массивах случайных данных. Но и эта задача вполне разрешима, 352 коль скоро в символьных строках кода, относящегося к записи и считыванию паролей, присутствует слово Password. В развитие этой же темы исследователи продемонстрировали и два существенно разных способа для скрытного слива похищенных паролей в сеть - как на уровне ОС, так и на уровне прямой модификации пакетов. Подводя итог, иллинойские исследователи без ложной скромности отмечают, что им удалось заложить фундаментальные основы конструирования процессоров с аппаратными закладками, способными обеспечивать весьма сложные и продвинутые атаки для тех, кто владеет секретами конструкции. Сделано же это, по словам разработчиков, дабы продемонстрировать, что при нынешней организации поставок микросхем заказчикам имеются все предпосылки для злоупотреблений. То есть заинтересованные структуры, обладающие компетентными специалистами и надлежащими ресурсами, вполне способны разрабатывать и внедрять вредоносные микросхемы с аппаратными закладками. Действия алгоритмических и программных закладок условно можно разделить на три класса: - изменение функционирования вычислительной системы (сети), - несанкционированное считывание информации, - несанкционированная модификация информации, вплоть до ее уничтожения. Следует отметить, что указанные классы воздействий могут пересекаться. Класс воздействий «изменение функционирования вычислительной системы»направлен на: - уменьшение скорости работы вычислительной системы (сети); - частичное или полное блокирование работы системы (сети); - имитация физических (аппаратурных) сбоев работы вычислительных средств и периферийных устройств; - переадресация сообщений; - обход программно-аппаратных средств криптографического преобразования информации; - обеспечение доступа в систему с непредусмотренных периферийных устройств. Несанкционированное считывание информации, осуществляемое в автоматизированных системах, направлено на: - считывание паролей и их отождествление с конкретными пользователями; - получение секретной информации; - идентификацию информации, запрашиваемой пользователями; - подмену паролей с целью доступа к информации; 353 - контроль активности абонентов сети для получения косвенной информации о взаимодействии пользователей и характере информации, которой обмениваются абоненты сети. Несанкционированная модификация информации является наиболее опасной разновидностью воздействий программных закладок, поскольку приводит к наиболее опасным последствиям. В этом классе воздействий можно выделить следующие: - разрушение данных и кодов исполняемых программ внесение тонких, трудно обнаруживаемых изменений в информационные массивы; - внедрение программных закладок в другие программы и подпрограммы (вирусный механизм воздействий); - искажение или уничтожение собственной информации сервера и тем самым нарушение работы сети; - модификация пакетов сообщений. С точки зрения времени внесения программных закладок в программы их можно разделить на две категории: 1. априорные, то есть закладки, внесенные при разработке ПО (или «врожденные») 2. апостериорные, закладки, внесенные при испытаниях, эксплуатации или модернизации ПО (или «приобретенные»). Хотя последняя разновидность закладок и относятся больше к проблеме обеспечения эксплуатационной, а не технологической безопасности ПО, однако методы тестирования программных комплексов, вероятностные методы расчета наличия программных дефектов и методы оценивания уровня безопасности ПО могут в значительной мере пересекаться и дополнять друг друга. Тем более что действие программной закладки после того как она была внесена в ПО либо на этапе разработки, либо на последующих этапах жизненного цикла ПО, практически не будет ничем не отличаться. 23.3 Разрушающие программные средства Необходимым условием для отнесения программы к классу разрушающих программных средств является наличие в ней процедуры нападения, которую можно определить как процедуру нарушения целостности вычислительной среды, поскольку объектом нападения РПС всегда выступает элемент этой среды. При этом необходимо учитывать два фактора: 1. любая прикладная программа, не относящаяся к числу РПС, потенциально может содержать в себе алгоритмические ошибки, 354 появление которых при ее функционировании приведет к непреднамеренному разрушению элементов вычислительной среды; 2. любая прикладная или сервисная программа, ориентированная на работу с конкретными входными данными может нанести непреднамеренный ущерб элементам операционной или вычислительной среды в случае, когда входные данные либо отсутствуют, либо не соответствуют заданным форматам их ввода в программу. Для устранения указанной неопределенности по отношению к испытываемым программам следует исходить из предположения, что процедура нарушения целостности вычислительной среды введена в состав ПО умышленно. Кроме условия необходимости, целесообразно ввести условия достаточности, которые обеспечат возможность описания РПС различных классов: - достаточным условием для отнесения РПС к классу компьютерных вирусов является наличие в его составе процедуры саморепродукции; - достаточным условием для отнесения РПС к классу средств несанкционированного доступа являются наличие в его составе процедуры преодоления защиты и отсутствия процедуры саморепродукции; - достаточным условием для отнесения РПС к классу программных закладок является отсутствие в его составе процедур саморепродукции и преодоления защиты. Предполагается наличие в РПС следующего набора возможных функциональных элементов: - процедуры захвата (получения) управления; - процедуры самомодификации («мутации»); - процедуры порождения (синтеза); - процедуры маскировки (шифрования). Этих элементов достаточно для построения обобщенной концептуальной модели РПС, которая отражает возможную структуру (на семантическом уровне) основных классов РПС. 23.4 Модель угроз и принципы обеспечения безопасности ПО Модель угроз технологической безопасности ПО должна представлять собой официально принятый нормативный документ, которым должен руководствоваться заказчики и разработчики программных комплексов. Модель угроз должна включать: полный реестр типов возможных программных закладок; 355 описание наиболее технологически уязвимых мест компьютерных систем (с точки зрения важности и наличия условий для скрытого внедрения программных закладок); описание мест и технологические карты разработки программных средств, а также критических этапов, при которых наиболее вероятно скрытое внедрение программных закладок; реконструкцию замысла структур, имеющих своей целью внедрение в ПО заданного типа (класса, вида) программных закладок диверсионного типа; психологический портрет потенциального диверсанта в компьютерных системах . На базе утвержденной модели угроз технологической безопасности должна разрабатываться прикладная модель угроз безопасности для каждого конкретного компонента защищаемого комплекса средств автоматизации КС. В основе этой разработки должна лежать схема угроз представленная на рис. 23.1. Рис. 23.1 - Прикладная модель угроз безопасности Наполнение модели технологической безопасности ПО должно включать в себя следующие элементы: 356 - матрицу чувствительности КС к «вариациям» ПО (то есть к появлению искажений), - энтропийный портрет ПО (то есть описание «темных» запутанных участков ПО), - реестр камуфлирующих условий для конкретного ПО, - справочные данные о разработчиках - реальный (либо реконструированный) замысел злоумышленников по поражению этого ПО. В таблице 23.1 приведен пример указанной типовой модели для сложных программных комплексов. Таблица 23.1. Пример типовой модели технологической безопасности ПО для сложных программных комплексов № Угрозы рассматриваемые в модели безопасности в соответсвии с жизненным циклом ПО 1 ПРОЕКТИРОВАНИЕ 1.1 Проектные решения - Злоумышленный выбор нерациональных алгоритмов работы Облегчение внесения закладок и затруднение их обнаружения. - Внедрение злоумышленников в коллективы, разрабатывающие наиболее ответственные части ПО. 1.2 Используемые информационные технологии - Внедрение злоумышленников, в совершенстве знающих «слабые» места и особенности используемых технологий. Внедрение информационных технологий или их элементов, содержащих программные закладки. - Внедрение неоптимальных информационных технологий. 1.3 Используемые аппаратно-технические средства - Поставка вычислительных средств, содержащих программные, аппаратные или программно-аппаратные закладки. - Поставка вычислительных средств с низкими реальными характеристиками. - Поставка вычислительных средств, имеющих высокий уровень экологической опасности. - Задачи коллективов разработчиков и их персональный состав. - Внедрение злоумышленников в коллективы разработчиков программных и аппаратных средств. - Вербовка сотрудников путем подкупа, шантажа и т.п. 357 2 КОДИРОВАНИЕ 2.1 Архитектура программной системы, взаимодействие ее с внешней средой и взаимодействие подпрограмм программной системы - Доступ к «чужим» подпрограммам и данным. - Нерациональная организация вычислительного процесса. - Организация динамически формируемых команд или параллельных вычислительных процессов. - Организация переадресации команд, запись злоумышленной информации в используемые программной системой или другими программами ячейки памяти. 2.2 Функции и назначение кодируемой части программной системы, взаимодействие этой части с другими подпрограммами - Формирование программной закладки, воздействующей на другие части программной системы. - Организация замаскированного спускового механизма программной закладки. Формирование программной закладки, изменяющей структуру программной системы. 2.3 Технология записи программного обеспечения и исходных данных - Поставка программного обеспечения и технических средств со встроенными дефектами. 3 ОТЛАДКА И ИСПЫТАНИЯ 3.1 Назначение, функционирование, архитектура программной системы - Встраивание программной закладки как в отдельные подпрограммы, так и в управляющую программу программной системы. - Формирование программной закладки с динамически формируемыми командами. - Организация переадресации отдельных команд программной системы. 3.2 Сведения о процессе испытаний (набор тестовых данных, используемые вычислительные средства, подразделения и лица, проводящие испытания, используемые модели - Формирование набора тестовых данных, не позволяющих выявить программную закладку. - Поставка вычислительных средств, содержащих программные, аппаратные или программно-аппаратные закладки. - Формирование программной закладки, не обнаруживаемой с помощью используемой модели объекта в силу ее неадекватности описываемому объекту. - Вербовка сотрудников коллектива, проводящих испытания. 358 4 КОНТРОЛЬ 4.1 Используемые процедуры и методы контроля - Формирование спускового механизма программной закладки, не включающего ее при контроле на безопасность. - Маскировка программной закладки путем внесения в программную систему ложных «непреднамеренных» дефектов. - Формирование программной закладки в ветвях программной системы, не проверяемых при контроле. - Формирование «вирусных» программ, не позволяющих выявить их внедрение в программную систему путем контрольного суммирования. - Поставка программного обеспечения и вычислительной техники, содержащих программные, аппаратные и программно-аппаратные закладки. 5 ЭКСПЛУАТАЦИЯ 5.1 Сведения о персональном составе контролирующего подразделения и испытываемых программных системах - Внедрение злоумышленников в контролирующее подразделение. - Вербовка сотрудников контролирующего подразделения. - Сбор информации о испытываемой программной системе. 5.2 Сведения об обнаруженных при контроле программных закладках - Разработка новых программных закладок при доработке программной системы. 5.3 Сведения об обнаруженных незлоумышленных дефектах и программных закладках 5.4 Сведения о доработках программной системы и подразделениях, их осуществляющих 5.5 Сведения о среде функционирования программной системы и ее изменениях 5.6 Сведения о функционировании программной системы, доступе к ее загрузочному модулю и исходным данным, алгоритмах проверки сохранности программной системы и данных |