Как обычно выглядит проверка кода приложений на уязвимости? Специалист по безопасности инициирует процедуру, код сканируется, в приложении обнаруживаются тысячи уязвимостей. Все — и безопасник, и разработчики — в шоке. Естественная реакция разработчика: «Да наверняка половина — это ложные срабатывания, а другая — некритичные уязвимости!»
Что касается ложных срабатываний, здесь все просто: можно взять и посмотреть непосредственно те места кода, где обнаружены уязвимости с подозрением на false positive. Действительно, какая-то их часть может оказаться ложными срабатываниями, (хотя явно не половина от общего числа).
А вот о том, что критично, а что нет, хотелось бы поговорить более предметно. Если вы понимаете, почему сейчас уже нельзя использовать SHA-1 и зачем экранировать «;», возможно, эта статья не откроет вам чего-то нового. Но если по итогам сканирования от найденных уязвимостей рябит в глазах, добро пожаловать под кат – расскажем, какие «дыры» чаще всего встречаются в мобильных и веб-приложениях, как они работают, как их исправить, а главное — как понять, что перед вами — опасная брешь или незначительная ошибка в коде.
Внедрение
Ну ооочень распространенный тип уязвимости. Куда только не внедряются: в запросы SQL, LDAP, XML, XPath, XSLT, Xquery… Все эти внедрения отличает использование недоверенных данных, благодаря которому злоумышленник получает доступ к информации или изменяет поведение приложения. Например, с помощью пользовательского ввода, который недостаточно валидируется.
Согласно международной классификации уязвимостей OWASP, атаки с использованием метода «Внедрение» занимают первое место по уровню критичности угроз безопасности веб-приложений. Рассмотрим наиболее типичные виды внедрений.
Внедрение в SQL-запрос. Недоверенные данные попадают в SQL-запрос к базе данных.
Если в запросе к базе данных не реализована корректная проверка подлинности вводимых данных, злоумышленник может испортить SQL-запрос:
- передать в него вредоносный код;
- добавить символ «—» или «;» и оборвать правильную SQL-команду: всё, что после «—», интерпретируется как комментарий, а символ «;» обозначает конец команды;
- угадать пароль, последовательно выполнив серию SQL-запросов.
Как защищаться? Приведём несколько рекомендаций от OWASP:
- Используйте API, который предоставляет параметризованный интерфейс, или инструменты объектно-реляционного сопоставления (ORM).
- Реализуйте механизм валидации для данных, введённых пользователем. Используйте «белый список» проверки на стороне сервера.
- Экранируйте специальные символы («;», «—», «/*», «*/», «’»; точный список зависит от базы данных).
- Для проверки вводимых пользователем данных используйте хранимые процедуры (stored procedures) вместе с механизмом фильтрации их параметров.
Внедрение в XML. Приложения используют XML-язык для хранения или обмена данными, поэтому в них может содержаться ценная информация.
Если злоумышленник может записывать данные в XML-документ, то он может изменять и его семантику. В таком случае самый безобидный сценарий позволит внедрить в документ лишние теги, в результате чего XML-парсер завершит работу с ошибкой. Но можно столкнуться и с инцидентом посерьезнее: например, с подменой аутентификационных данных в базе клиентов или ценой в базе товаров магазина. Внедрение в XML также может привести и к межсайтовому скриптингу (XSS) — внедрению вредоносного кода, который выполнится в браузере пользователя при открытии страницы.
Что можем посоветовать?
- Не создавайте тегов и атрибутов, имена которых получены на основе данных из недоверенного источника (например, введённых пользователем).
- Кодируйте (XML entity encode) данные, введённые пользователем, прежде чем записывать их в XML-документ.
Внедрение в XQuery представляет собой разновидность классической SQL-инъекции, но атака в этом случае будет направлена на XML-базу данных, а недоверенные данные попадут в XQuery-выражение.
В примере ниже приложение создаёт и выполняет XQuery-выражение на основе параметров username
и password
из HTTP-запроса (недоверенный источник):
XQDataSource xqs = new XQDataSource();
XQConnection conn = xqs.getConnection();
String query = "for \$user in doc(users.xml)//user[username='" + request.getParameter("username") + "'and pass='" + request.getParameter("password") + "'] return \$user";
XQPreparedExpression xqpe = conn.prepareExpression(query);
XQResultSequence rs = xqpe.executeQuery();
В случае корректных данных запрос вернёт информацию о пользователе с соответствующими именем и паролем:
for \$user in doc(users.xml)//user[username='test_user' and pass='pass123'] return \$user
Если злоумышленник задаст в качестве параметра строку, содержащую специальные символы (например, admin' or 1=1 or ''='
), семантика запроса изменится:
//user[username='admin']
Полученный запрос вернёт данные обо всех пользователях.
Безопасный вариант (использует prepared statements
):
XQDataSource xqs = new XQDataSource();
XQConnection conn = xqs.getConnection();
String query = "declare variable $username as xs:string external; declare variable $password as xs:string external; for \$user in doc(users.xml)//user[username='$username' and pass='$password'] return \$user";
XQPreparedExpression xqpe = conn.prepareExpression(query);
xqpe.bindString(new QName("username"), request.getParameter("username"), null);
xqpe.bindString(new QName("password"), request.getParameter("password"), null);
XQResultSequence rs = xqpe.executeQuery();
Внедрение в XSLT (язык преобразования XML-документов) возможно, если приложение использует данные из недоверенного источника при работе с XSL.
Приложения используют XSL для преобразования XML-документов. Стилевые XSL-файлы содержат функции, которые описывают трансформацию, и при неправильной реализации могут включать в себя уязвимости. В таком случае возрастает риск осуществления сценариев атак, при которых злоумышленник меняет структуру и содержимое стилевого XSL-файла, а значит, и соответствующего XML-файла. Что можем получить на выходе?
Во-первых, XSS-атаку: внедрение в страницу, которую выдает веб-система, вредоносного кода и взаимодействие этого кода с сервером злоумышленника. Во-вторых, получение хакером доступа к системным ресурсам. В-третьих, выполнение произвольного кода. И на десерт – XXE-атаку (XML eXternal Entity — внедрение внешней сущности в XML).
Внедрение в команды LDAP (Lightweight Directory Access Protocol — «легкорасширяемый протокол доступа к каталогам») может привести к утрате конфиденциальности данных или их модификации. В данном случае недоверенные данные попадают в LDAP-запрос.
Внедрение вредоносной команды интерпретатора. Недоверенные данные попадают в команду интерпретатора. Злоумышленник может подобрать такой ввод, чтобы команда выполнилась успешно и ему стали доступны дополнительные полномочия в приложении.
В примере ниже приложение выполняет скрипт, предназначенный для создания резервной копии базы данных. Приложение принимает тип резервной копии в качестве параметра и запускает скрипт с повышенными привилегиями:
String btype = request.getParameter("backuptype");
String cmd = new String("cmd.exe /K
\"c:\\util\\rmanDB.bat "+btype+"&&c:\\utl\\cleanup.bat\"")
System.Runtime.getRuntime().exec(cmd);
Проблема здесь в том, что параметр backuptype
не валидируется. Обычно Runtime.exec()
не выполняет несколько команд, но в данном случае сначала запускается cmd.exe, чтобы выполнить несколько команд вызовом Runtime.exec()
. Как только оболочка командной строки запущена, она может выполнить несколько команд, разделённых символами «&&
». Если злоумышленник задаст в качестве параметра строку «&& del c:\\dbms\\*.*
«, приложение удалит указанную директорию.
Советы разработчикам:
- Не позволяйте пользователям непосредственно контролировать выполняемые приложением команды. Если поведение приложения должно зависеть от данных, введённых пользователем, предлагайте пользователю выбор из определённого списка разрешённых команд.
- Если пользовательские данные служат аргументом команды, белый список может оказаться слишком громоздким. Чёрный список также неэффективен, так как его сложно поддерживать в актуальном и полном состоянии. В таком случае рекомендуется опираться на белый список символов, допустимых в параметрах команды.
- Злоумышленник может изменять семантику команды, не только изменяя её, но и влияя на окружение. Окружение не должно восприниматься как доверенный источник. Значения переменных окружения должны также проходить валидацию.
Небезопасная загрузка файла. В этом случае из недоверенного источника поступают не просто отдельные данные, а файл целиком. Таким образом на целевой сервер злоумышленник может выгрузить вредоносные данные или код. Например, если пользователям корпоративной сети позволено выгружать файлы в публично доступные директории, хакер может удалённо запустить на сервере компании вредоносный код.
Небезопасное включение внешнего файла в HTML. Уязвимости типа «file inclusion» возникают, когда пользователь вводит путь к подключаемому файлу. Дело в том, что современные скриптовые языки позволяют динамически подключать код из сторонних файлов, чтобы использовать его повторно. Этот механизм применяют для единого внешнего вида страниц или для разделения кода на небольшие модули. Однако таким включением может воспользоваться злоумышленник, подменив путь и подключив свой файл.
Рекомендуем специалистам в области корпоративной информационной безопасности составить «белый список» допустимых путей подключения файлов, чтобы сотрудники могли добавлять файлы только по сценариям из этого списка.
Закладки
Закладками именуют преднамеренно внесённые в код приложения части, с помощью которых при определённых условиях можно выполнить не заложенные в приложении действия. Рассмотрим самые распространенные виды закладок.
Специальные учётные записи. Если приложение сравнивает значение переменной пароля или логина с неизменным значением, стоит насторожиться: эта учётная запись может быть частью закладки. Посмотрим, как это происходит.
Разработчик приложения использует специальную учётную запись (возможно, с повышенными привилегиями) при отладке и оставляет соответствующие участки кода в финальной версии, сохранив за собой доступ к приложению. Злоумышленник может восстановить исходный код приложения, извлечь константные значения специальной учётной записи и получить доступ к приложению.
Хранить логины, пароли, ключи в исходном коде приложения категорически нельзя.
Скрытая функциональность (НДВ). Код скрытой функциональности запускается, когда срабатывает определенный триггер. В веб-приложениях триггером часто служит «невидимый» параметр запроса. Иногда дополнительно осуществляется проверка, с какого IP пришел запрос с триггером, чтобы активировать закладку мог только её автор. Такие проверки служат сигналом к возможным закладкам.
Недокументированная сетевая активность. К такому виду активности относятся: соединение со сторонними ресурсами в фоновом режиме, прослушивание недокументированных портов, передача информации по протоколами SMTP, HTTP, UDP, ICMP.
Если вы обнаружили в коде подозрительное соединение с адресом, который не входит в список заведомо безопасных, настоятельно рекомендуем вам его удалить.
Изменение параметров безопасности. Приложение содержит код, который изменяет значение переменной, хранящей успешность аутентификации. Распространённая ошибка — использование присваивания (=) вместо сравнения (==). В методах, связанных с аутентификацией, она особенно опасна, поскольку может быть частью бэкдора:
if (isAuthenticated = true)
{
someDangerousAction();
}
Временной триггер (timebomb). Закладка, которая срабатывает в определенный момент времени. Приложение сравнивает текущую дату с конкретными годом, месяцем и днём: 1 января 2021 года всех ждёт сюрприз:
Date now = java.util.Date(); // current time
if ((now.getYear() == 2021) && (now.getMonth() == 1) && (now.getDate() == 1))
{
activateNewYearBackdoor();
}
А может быть и нет… На практике при поиске временных триггеров часто происходят ложные срабатывания. Например, если API времени используют и по назначению: запись в лог, вычисление времени выполнения, временные метки для ответов сервера на HTTP-запросы.
Но! Мы все же рекомендуем не закрывать глаза на все подобные срабатывания, так как знаем реальные примеры реализации таких уязвимостей.
Мёртвый код. Куски внедренного кода, которые ничего полезного не делают. Сам по себе мёртвый код не опасен, однако он может быть частью закладки, которую распределили по нескольким файлам. Или же триггер срабатывания закладки планируется внедрить позже. В любом случае, мёртвый код должен вызывать подозрения.
Отсутствие шифрования и использование слабых алгоритмов шифрования
Основные проблемы с шифрованием заключаются в том, что его либо не используют вовсе, либо применяют слабые алгоритмы, а ключи и соль слишком просты или хранятся небезопасно. Последствие у всех этих уязвимостей одно — конфиденциальные данные проще украсть.
В примере показана инициализация шифрования по устаревшему алгоритму DES:
Cipher cipher = Cipher.getInstance("DES");
Примеры уязвимых алгоритмов шифрования: RC2, RC4, DES. Безопасный вариант:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
Согласно международной классификации OWASP, уязвимости типа «утечка конфиденциальных данных» занимают третье место по уровню критичности угроз безопасности веб-приложений.
Наши рекомендации разработчикам: обязательно используйте шифрование с учётом требований безопасности.
Применение незащищённого протокола HTTP вместо HTTPS чревато атакой типа Man in the middle.
Безопасный протокол HTTPS основан на HTTP, но также поддерживает шифрование через криптографические протоколы SSL/TLS. HTTPS шифрует все передаваемые по нему данные, в частности, страницы ввода логина и пароля или данные банковских карт пользователя, защищая их от несанкционированного доступа и изменения. В отличие от HTTP, который не защищает передаваемые данные. В результате злоумышленник может подменить информационный сайт по HTTP и заставить пользователя ввести данные на поддельной странице (фишинговая атака).
Ключ шифрования задан в исходном коде. В результате такие ключи доступны каждому разработчику приложения. Кроме того, после установки приложения удалить ключ из кода можно только с помощью обновления.
В целом, константные строки легко извлекаются из исполняемого файла с помощью программы для восстановления исходного кода (декомпилятора). Поэтому злоумышленнику необязательно иметь доступ к исходному коду, чтобы узнать значение используемого ключа. В нашей практике мы нередко сталкиваемся со случаями, когда в качестве значения ключа разработчики задают null
или пустую строку, что просто недопустимо.
Наш совет: генерируйте ключи криптостойкими генераторами псевдослучайных чисел (ГПСЧ) и храните их с помощью специальных модулей.
Небезопасный алгоритм дополнения при шифровании. Если алгоритм шифрования RSA используется без OAEP-дополнения, зашифрованные данные становятся уязвимыми.
Алгоритм OAEP нужен, чтобы обработать сообщения перед использованием RSA. Сначала сообщение дополняется до фиксированной длины с помощью OAEP, затем шифруется с помощью RSA. Такая схема шифрования называется RSA-OAEP и является частью действующего стандарта.
Это пример инициализации RSA-шифрования без дополнения:
rsa = javax.crypto.Cipher.getInstance("RSA/NONE/NoPadding");
Безопасный вариант:
rsa = javax.crypto.Cipher.getInstance("RSA/ECB/OAEPWithMD5AndMGF1Padding");
Недостаточный размер ключа шифрования. Если вы используете ключ малой длины, такое шифрование уязвимо для атаки методом перебора.
Криптоанализ не стоит на месте, постоянно возникают новые алгоритмы атак, компьютеры обретают бОльшие мощности. Параметры шифрования, которые раньше считались безопасными, устаревают и уже не рекомендуются к использованию. Так, RSA с длиной ключа 1024 бит перестал считаться безопасным в 2010–2015 годах.
Слабый алгоритм хеширования. По описанным в предыдущем пункте причинам хеш-функции MD2, MD5, SHA1 являются небезопасными. Чтобы найти коллизии для функций MD2 и MD5, существенных ресурсов не требуется.
Для SHA1 есть примеры двух разных файлов с одинаковыми хешами. Алгоритм взлома предложили сотрудники Google и Центра математики и информатики в Амстердаме.
Если пароли пользователей хранятся в виде хешей, но с использованием небезопасной хеш-функции, злоумышленник вполне может получить к ним доступ, реализовав следующий сценарий. Зная хеш пароля и используя уязвимость алгоритма хеширования, можно вычислить строку, для которой хеш такой же, как и для пароля. С помощью вычисленной строки злоумышленник проходит аутентификацию.
Хеш-функция для хранения паролей должна быть устойчивой к коллизиям и не слишком быстрой, чтобы нельзя было реализовать атаку методом перебора. Следует использовать безопасные алгоритмы PBKDF2, bcrypt, scrypt.
Несколько интересных цифр: с помощью PBKDF2 скорость перебора ключей сократили до 70 штук в секунду для Intel Core2 и около 1 тысячи на ПЛИС Virtex-4 FX60. Для сравнения, классические функции хеширования пароля LANMAN имеют скорость перебора около сотен миллионов вариантов в секунду.
Слабый алгоритм шифрования. Как и в случае алгоритмов хеширования, безопасность алгоритма шифрования определяется временем и ресурсами, которые придется потратить на его дешифровку. Уязвимыми алгоритмами считаются RC2, RC4, DES. Последний из-за небольшой длины ключа (56 бит) можно взломать методом полного перебора.
Слабый генератор псевдослучайных чисел (ГПСЧ) порождает предсказуемые последовательности. Хакер может обойти аутентификацию и захватить сессию пользователя.
Углубимся немного в природу ГПСЧ. Они порождают цепочки чисел на основе начального значения параметра seed
. Есть два типа ГПСЧ – статистические и криптографические.
Статистические ГПСЧ порождают предсказуемые последовательности, которые по статистическим характеристикам похожи на случайные. Их нельзя использовать для обеспечения безопасности.
Результат работы криптографических ГПСЧ, наоборот, невозможно предугадать, если значение параметра seed
получено из источника с высокой энтропией. Значение текущего времени обладает небольшой энтропией и также небезопасно в качестве seed
. В Java ГПСЧ из классов java.util.Random
и java.lang.Math
порождают предсказуемые последовательности и не должны использоваться в целях обеспечения информационной безопасности.
Слабое зерно генератора псевдослучайных чисел. Использовать в качестве seed
значение из недоверенного источника небезопасно, так как это порождает предсказуемую последовательность.
Работа многих криптографических алгоритмов основана на использовании устойчивого к криптоанализу ГПСЧ. Некоторые алгоритмы могут принимать в качестве дополнительного аргумента значение seed
и для каждого значения этого параметра порождать предсказуемую последовательность. В таком случае безопасность системы основана на предположении о том, что значения seed
будут непредсказуемы.
Соль задана в исходном коде. Вспомним, для чего нужна соль. Чтобы взломать пароль методом перебора, используют заранее составленные таблицы со значениями хеш-функций от популярных паролей. Соль — произвольная строка, которая подаётся на вход хеш-функции вместе с паролем, чтобы затруднить такую атаку.
Если соль хранится в исходном коде, возникают ровно те же самые проблемы, что и с паролями и ключами. Значение соли доступно разработчикам и легко могут получить злоумышленники, а убрать соль из финальной версии приложения можно только вместе с очередным обновлением приложения.
Манипуляции с логами
Различные ошибки в логах чреваты внедрением в приложения вредоносного кода. Чаще всего встречаются такие связанные с логированием уязвимости, как подделка файла лога и неструктурированное логирование.
Подделка файла лога происходит, когда приложение записывает недоверенные данные в журнал событий (лог). Хакер может подделать записи лога или внедрить в них вредоносный код.
Как правило, приложения записывают в лог историю транзакций для дальнейшей обработки, отладки или сбора статистики. Логи можно разбирать вручную или автоматически.
Если записывать в лог данные «как есть», злоумышленник может внедрить в лог фальшивые записи, нарушить структуру файла, вызвав сбои обработчика логов, или же внедрить вредоносный код, эксплуатирующий известные уязвимости в обработчике.
В этом примере web-приложение пытается считать целочисленное значение из параметра запроса. Если введённое значение не удалось конвертировать в целое число, приложение записывает в лог это значение вместе с сообщением об ошибке:
String val = request.getParameter("val");
try {
int value = Integer.parseInt(val);
}
catch (NumberFormatException nfe) {
log.info("Failed to parse val = " + val);
}
Злоумышленник может добавить в лог произвольную запись, например, строка twenty-one%0a%0aINFO:+User+logged+out%3dbadguy
отразится в логе так:
INFO: Failed to parse val=twenty-one
INFO: User logged out=badguy
Аналогичным образом в лог можно внедрить произвольные записи.
Безопасный вариант (использует NumberFormatException
):
public static final String NFE = "Failed to parse val. The input is required to be an integer value."
String val = request.getParameter("val");
try {
int value = Integer.parseInt(val);
}
catch (NumberFormatException nfe) {
log.info(NFE);
}
Неструктурированное логирование, то есть вывод сообщений об ошибках в стандартные потоки out или err является небезопасным методом. Рекомендуется вместо него использовать структурированное логирование. Последнее позволяет генерировать лог с уровнями, метками времени, стандартным форматированием. Если в программе реализован механизм структурированного логирования, но при этом сообщения об ошибках выводятся в стандартные потоки, то в логе может не оказаться критически важной информации.
Выводить сообщения об ошибках в стандартные потоки допустимо только на ранних стадиях разработки.
Небезопасная работа с куки
Уязвимости, связанные со сбором пользовательских куки, весьма разнообразны.
Небезопасная работа с куки. Приложение включает в куки данные из недоверенного источника, что может привести к атакам типа «отравление кэша», XSS (межсайтовый скриптинг) и «расщепление ответа».
Если в приложение внедряется вредоносный код (межсайтовый скриптинг), то злоумышленник сможет изменять куки пользователя.
Поскольку куки задаются в заголовке HTTP-ответа, отсутствие подтверждения данных, включаемых в куки, может привести к атаке «расщепление ответа». «Расщеплением ответа» (HTTP response splitting) называется атака, при которой хакер посылает такой HTTP-запрос, ответ на который примется жертвой сразу за два HTTP-ответа (вместо правильного одного).
Если злоумышленник задаст в качестве параметра author
строку вида Hacker \r\nHTTP/1.1 200 OK\r\n...
, ответ будет расщеплён на два следующим образом:
HTTP/1.1 200 OK
...
Set-Cookie: author=Hacker
HTTP/1.1 200 OK
...
Содержимое второго ответа полностью контролируется злоумышленником, что приводит к отравлению кэша, XSS, вредоносным перенаправлениям и другим атакам.
Куки без HttpOnly. Приложение создаёт куки без флага httpOnly
. Если httpOnly
включается в заголовок ответа http
, злоумышленник не сможет заполучить куки с помощью JavaScript-кода. И если пользователь откроет страницу с уязвимостью типа межсайтовый скриптинг (XSS), браузер не раскроет куки третьим лицам. Если же флаг httpOnly
не установлен, то куки (обычно, сессионные) можно украсть с помощью скрипта.
Пример создания куки без флага httpOnly
:
Cookie cookie = new Cookie("emailCookie", email);
response.addCookie(cookie);
Устанавливайте флаг httpOnly
при создании куки. Однако следует помнить, что существуют способы атак, позволяющие обойти httpOnly
, поэтому вам также следует позаботиться о тщательной проверке входных данных.
N.B. Согласно международной классификации OWASP, уязвимости типа «утечка конфиденциальных данных» занимают третье место по уровню критичности угроз безопасности веб-приложений.
Куки для слишком общего домена. Если домен для куки слишком общий (например, .example.com
), уязвимость в одном приложении делает уязвимыми и другие приложения в том же домене.
В следующем примере безопасное web-приложение, установленное по адресу http://secure.example.com
, устанавливает куки со значением домена .example.com
:
Cookie cookie = new Cookie("sessionID", sessionID);
cookie.setDomain(".example.com");
Если по адресу http://insecure.example.com
установлено приложение, содержащее, например, XSS, то куки авторизованного пользователя безопасного приложения, перешедшего по адресу http://insecure.example.com
, могут быть скомпрометированы.
Злоумышленник также может осуществить атаку «отравление куки»: куки с общим доменом, созданные http://insecure.example.com
, перезапишут куки http://secure.example.com
.
Безопасный вариант:
Cookie cookie = new Cookie("sessionID", sessionID);
cookie.setDomain("secure.example.com");
Куки со слишком общим параметром path
. Если путь в куки указан неточно (например, /), возникает такая же проблемы, как и с общим доменом: уязвимость в одном приложении подвергает опасности и другие приложения в том же домене.
В следующем примере приложение, установленное по адресу http://pages.example.com/forum
, устанавливает куки с путём /:
Cookie cookie = new Cookie("sessionID", sessionID);
cookie.setPath("/");
Тогда вредоносное приложение, установленное по адресу http://pages.example.com/evil
, может скомпрометировать куки пользователя. Злоумышленник также может осуществить атаку «отравление куки»: куки с общим путём, созданные /evil
, перезапишут куки /forum
.
Безопасный вариант:
Cookie cookie = new Cookie("sessionID", sessionID);
cookie.setPath("/forum");
Куки не по SSL. Приложение создаёт куки, не устанавливая флаг secure
равным true
. Такие куки можно передавать в незашифрованном виде по HTTP. Сразу же вспоминается уязвимость «Использование незащищённого протокола HTTP».
В следующем примере приложение создаёт куки без флага secure
:
Cookie cookie = new Cookie("emailCookie", email);
response.addCookie(cookie);
Если приложение использует как HTTPS, так и HTTP, то при отсутствии флага secure куки, созданные в рамках HTTPS-запроса, будут передаваться в незашифрованном виде при последующих HTTP-запросах, что может привести к компрометации приложения. Это особенно опасно, если куки содержит ценные данные, в частности, идентификатор сессии.
Безопасный вариант:
Cookie cookie = new Cookie("emailCookie", email);
cookie.setSecure(true);
response.addCookie(cookie);
Куки с неограниченным сроком действия. Если хранить ценные куки слишком долго, злоумышленник может успеть получить к ним доступ.
По умолчанию используются непостоянные (сессионные) куки, которые не сохраняются на диск и удаляются после закрытия браузера. Однако разработчик веб-приложения может указать срок хранения куки – в этом случае они будут записаны на диск и сохранены между перезапусками браузера и перезагрузками компьютера. Так мы даем злоумышленнику продолжительное время для разработки плана атаки.
Рекомендации разработчикам: убедитесь, что приложение не создаёт куки с длительным сроком хранения:
Cookie cookie = new Cookie("longCookie", cookie);
cookie.setMaxAge(5*365*24*3600); // 5 лет!
Указывайте разумный максимальный срок, следуя рекомендациям OWASP.
Утечка информации
Пожалуй, наиболее чувствительный для пользователей приложения вид уязвимостей.
Внешняя утечка информации через страницы ошибок. Приложение использует стандартные страницы ошибок, в которые может попасть информация о конфигурации системы.
Сообщения об ошибках и отладочная информация записываются в лог, выводятся в консоль или передаются пользователю. Из сообщений об ошибках злоумышленник может узнать об уязвимостях системы, что облегчит ему жизнь. Например, ошибка базы данных может говорить о незащищённости от SQL-инъекции. Информация о версии операционной системы, сервера приложений и конфигурации системы упростят хакеру задачу планирования атаки на приложение.
Внешняя утечка ценной информации. В данном случае речь идёт об утечке технической информации о приложении путем ее передачи по сети на другой компьютер. В целом, внешние утечки опаснее внутренних.
Внутренняя утечка ценной информации. Механизм эксплуатации схож с предыдущими двумя видами утечек, но в данном случае информация о системе записывается в лог или выводится на экран пользователя.
Утечка конфиденциальных данных. Ценные персональные данные пользователей попадают в приложение из разных источников: от самого пользователя, из различных баз данных, из сторонних хранилищ. Иногда эти данные не помечены как конфиденциальные либо оказываются ценными не сами по себе, а только в определённом контексте.
Это как раз тот самый случай, когда безопасность приложения и конфиденциальность персональных данных противоречат друг другу. Для обеспечения безопасности целесообразно подробно записывать информацию о действиях в системе, чтобы выявлять вредоносные действия. С точки зрения приватности данных, наоборот, при логировании конфиденциальной информации риск её утечки больше. В целом же обеспечение конфиденциальности персональных данных пользователей приложения является более приоритетной задачей.
Послесловие
Рассмотренные в статье виды уязвимостей охватывают бОльшую часть «универсальных» брешей в приложениях, написанных на разных языках программирования. Однако для некоторых языков встречаются свои, специфические уязвимости. Но это уже тема для отдельной статьи. А напоследок, напомним: при создании приложений не забывайте следовать вышеизложенным рекомендациям, внимательно читайте документацию и проверяйте приложения на уязвимости с помощью специализированного ПО.
Автор: Елизавета Харламова, руководитель отдела аналитики Solar appScreener
—метод «Поиск бреши» (trapdoor entry) — использование случайных ошибок и неудач разработчиков программного обеспечения после анализа работы программы;
—метод «Люк» (trapdoor) — использование специально запланированных разработчиками недокументированных функций системы защиты;
—метод «Маскарад» (masquerading) — использование чужого имени и кода доступа;
—метод «Мистификация» (spoofing) — удержание случайно подключившегося пользователя или системы и получение (обманным путем или с помощью взлома) от него полезной информации;
—метод «Аварийный» — использование программ защиты системы от сбоев. При работе таких программ защита от взлома несколько ослабляется;
—метод «Склад без стен» — получение доступа в результате системной поломки (случайной или инициированной взломщиком).
Методы манипуляции
—подмена данных — ввод неверной информации;
—подмена кода — изменение самого процесса ввода, хранения, обработки, вывода информации;
—«Троянский конь» (Trojan horse) — введение в
программу (последующее или на этапе ее разработки) команд, позволяющих осуществлять дополнительные, интересующие злоумышленника, функции;
—«Салями» (salami attack) — присваивание округляемых остатков на счетах (зачастую является функцией «компьютерных червей» в банковских сетях);
—«Логическая бомба» (logic bomb) — ввод в
программу на этапе разработки или последующего ее изменения специальных команд, срабатывающих при определенных условиях;
—«Временная бомба» (time bomb) — специальные команды, вводимые в программу, срабатывающие в определенный момент времени или временной интервал;
—асинхронная атака, состоящая в смешивании команд большого количества пользователей, с которыми система не может справиться.
Объект преступления
Орудие преступления
Запоминающее
устройство
Компьютер как объект преступления
Можно выделить две разновидности преступлений, где компьютер является объектом посягательства:
а) Изъятие средств компьютерной техники. К этой группе относятся традиционные способы совершения обычных видов преступлений, в которых действия преступника направлены на изъятие чужого имущества.
б) Атака на компьютер с целью несанкционированного доступа в целях получения доступа к хранящейся на нем информации (хищения информации), бесплатного использования данной системы (кража услуг) или ее повреждения.
Большинство таких нарушений предполагают несанкционированный доступ к системе, т.е. ее «взлом».
•«Взлом» изнутри: преступник имеет физический доступ к терминалу, с которого доступна интересующая его информация и может определенное время работать на нем без постороннего контроля.
•«Взлом» извне: преступник не имеет непосредственного доступа к компьютерной системе, но имеет возможность каким-либо способом (обычно посредством удаленного доступа через сети) проникнуть в защищенную систему для внедрения специальных программ, произведения манипуляций с обрабатываемой или хранящейся в системе информацией, или осуществления других противозаконных
действий.
В данной категории преступлений выделяют также:
а) преступления, совершаемые в отношении компьютерной информации, находящейся в компьютерных сетях, в том числе сети Интернет;
б) преступления, совершаемые в отношении компьютерной информации, находящейся в ЭВМ, не являющихся компьютером в классическом понимании этого слова
Хищение информации.
Правонарушения, связанные с хищением информации, могут принимать различные формы в зависимости от характера системы, в отношении которой осуществляется несанкционированный доступ.
Информация, являющаяся объектом преступного посягательства, может быть отнесена к одному из четырех типов:
•персональные данные;
•корпоративная информация, составляющая коммерческую тайну;
•объекты интеллектуальной собственности и материалы, защищенные авторским правом;
•глобальная информация, имеющая значение для развития отраслей промышленности, экономики отдельных регионов и государств.
Соседние файлы в папке говно
- #
- #
- #
КОМПЬЮТЕРНАЯ ПРЕСТУПНОСТЬ И ЗАЩИТА ИНФОРМАЦИИ
КОМПЬЮТЕРНАЯ ПРЕСТУПНОСТЬ И ЗАЩИТА ИНФОРМАЦИИ
Научно-технический прогресс наряду с положительными
сторонами имеет и негативные последствия. В частности, достижения науки и
техники нередко используются преступниками при совершении преступлений.
Благодаря этому изменяется характер преступлений, появляются новые их виды,
повышается уязвимость систем информационного обеспечения ОВД, Для успешной
борьбы с преступностью сотрудникам органов внутренних дел необходимо постоянно
быть в курсе последних достижений научно-технического прогресса, знать современные
виды преступлений и методы их совершения. Кроме этого необходимо
усиление внимания к системам защиты информации.
В данной лекции содержатся основные сведения о
компьютерных преступлениях, компьютерных вирусах и рассматриваются современные
методы защиты информации в органах внутренних дел.
При подготовке лекции были использованы материалы
источников [2, 3, 7], указанных в списке литературы.
Лекция предназначена для слушателей учебных заведений
МВД РФ, изучающих курс «Информатика».
1. КОМПЬЮТЕРНЫЕ ПРЕСТУПЛЕНИЯ
Серьезным негативным последствием компьютеризации
общества являются так называемые «компьютерные преступления».
Распространение компьютерных систем, объединение их в коммуникационные сети
расширяет возможности электронного проникновения в них. Диапазон такого рода
действий чрезвычайно широк: от преступлений традиционного типа до требующих
высокой математической и технической подготовки. С бурным ростом персональных
компьютеров, используемых дома, при наличии развитых коммуникаций даже
«преступники-дилетанты» могут проникать в большинство компьютерных
систем. Хотя действующие в большинстве стран уголовные законы достаточно гибки,
чтобы квалифицировать правонарушение этого типа, социальные и технические
изменения создают все новые и новые проблемы, часть которых оказывается вне
рамок любой из действующих правовых систем. Поскольку некоторые из известных
мировой
– 5 –
практике компьютерных посягательств не подпадают (или не
везде подпадают) под действие уголовного законодательства, то в юридическом
смысле они не могут считаться преступными. Здесь возникает проблема
криминализации некоторых операций с ЭВМ. Соответствующие нормы обещают быть
исключительно сложными, ибо связаны с техникой, развитие которой опережает
нормотворческий процесс во всех странах. Следует заметить, что компьютерных
преступлений, как преступлений специфических в юридическом смысле, не существует
(хотя они могут появиться с последующими поколениями компьютеров и с созданием
искусственного интеллекта) [1]. Правильнее говорить о компьютерных аспектах
преступлений. Пока будем использовать термин «компьютерное
преступление» в широком значении, т.е. как социологическую категорию, а
не как понятие уголовного права.
За рубежом накоплен обширный опыт борьбы c компьютерной
преступностью. Развивается компьютерная преступность и в России. Так, одно из
первых в нашей стране компьютерных преступлений, совершенное в 1979 г. в
Вильнюсе, — хищение 78584 рублей — удостоилось занесения в международный
реестр подобных правонарушений. Другое преступление было совершено в 1982 г. в
Горьком. В то время все отделения связи переводились на централизованную
автоматическую обработку принятых и оплаченных переводов на электронном
комплексе «Онега». Но одновременно применялся и обычный прием
переводов. Наличие автоматизированного и неавтоматизированного приема
переводов и позволило группе нечестных работников связи совершить хищение.
Использование автоматизированных систем отпуска бензина на
автозаправочных» станциях тоже немедленно стало сопровождаться хищениями,
так как достаточно легкого повреждения перфоленты и определить количество
отпущенного бензина становится практически невозможным.
Первой нашумевшей компьютерной аферой в России стала
махинация петербургских программистов. Несколько жителей Санкт-Петербурга с
компьютера, стоящего в квартире одного из них, проникли в базу данных
известной канадско-американской информационной компьютерной сети Sprint Net. Питерские умельцы расшифровали коды доступа б сеть передачи данных, и до сих пор
так и не уда-
– 6 –
лось
установить, какие конкретно цели они преследовали, поскольку воспользоваться
ценной коммерческой информацией программисты не успели. Сотрудники службы
безопасности и защиты информации компании «Sprint» лишь смогли установить, что кто-то «со
стороны» вмешался в их компьютерную сеть.
Однако никакой ответственности за подобные действия хакеры
(компьютерные пираты) не понесли, так как российское законодательство ее, в
отличие от американского, не предусматривает. В СТА же предусмотрена
ответственность (в том числе и уголовная) за хищение интеллектуальной
собственности, которая может привести не только к громадным штрафам, но и (в
особенно серьезных случаях) к тюремному заключению. Что касается питерских
хакеров, то единственным наказанием для них стала оплата сетевого времени,
которое они использовали для вскрытия компьютерной системы.
Надо отметить, что российские хакеры в данном случае действовали
по давным-давно накатанному на Западе пути. Узнав телефон заокеанской информационной
сети, они написали оригинальную программу эффективного подбора паролей и с ее
помощью узнали коды входа в Sprint
Net. Через
него они, опять-таки подобрав пароли, получили доступ к конфиденциальным базам
данных американских и канадских клиентов.
Совсем недавно наши, уже довольно грамотные хакеры, поняли,
как на компьютерных «играх» можно изрядно обогатиться, причем как за
счет коммерческих структур (в том числе и банков), так и за счет отдельных
вкладчиков этих самых банков. В сентябре 1994 года несколько московских хакеров
по модемной сети направили в ОПЕРУ Сбербанка Москвы фальшивые авизо на общую
сумму 62 млрд. руб. Служба безопасности банка перехватила фальшивки и обратилась
в милицию. Пока мошенников искали, в Сбербанк пришло еще несколько фальшивок на
53 млрд. руб. После этого сотрудникам банка и милиции удалось установить адрес
квартиры, в которой находился компьютер со встроенным модемом. В ноябре
сотрудники милиции нагрянули в квартиру и задержали женщину, отправлявшую
«электронное» авизо, и двух помогавших ей мужчин.
По данным МВД России, с 1992-1994 гг. из банковских структур
преступниками по фальшивым кредитовым авизо и поддельным ме-
– 7 –
мориальным ордерам было похищено более 7
трлн. руб. В связи с ростом подобных хищений еще в конце 1993 года в ЦБ России
и региональных РКЦ были установлены компьютерные системы защиты от фальшивых
платежных документов. По словам сотрудников милиции, в последнее время хищение
денег из банковских структур с помощью поддельных платежных документов вышло на
принципиально новый уровень. Используя опыт своих западных коллег, преступники
научились преодолевать защиту и внедряться в телекоммуникационные системы
банков. В одном из случаев через новую компьютерную сеть Центробанка
неизвестные злоумышленники пытались украсть 68 млрд. руб. Но сотрудниками
милиции удалось вовремя выявить хищение и вернуть все средства в ЦБ. По данным
Центрального банка России, ежеквартально выявляется фиктивных платежей на
десятки миллиардов рублей, которые преступники внедряют в сети подразделений
банка.
Любопытно, что с
появлением ЭВМ возникли и такие способы совершения преступлений, которые раньше
считались невыгодными, например, перебрасывание на подставной счет мелочи,
результата округления (так называемая «салями»). «Мелочной»
расчет построен на том, что ЭВМ в секунду совершает сотни тысяч операций, в то
время как высококвалифицированный бухгалтер за целый рабочий день может
выполнить лишь до двух тысяч таких операций. Поэтому заниматься подобным
«округлением» вручную не имело никакого смысла.
Если такого рода ухищрения подпадают под действие существующего
уголовного закона, то проблема «хищения информации» значительно
более сложная. В настоящее время присвоение машинной информации путем
несанкционированного копирования не может квалифицироваться как хищение. При
неправомерном обращении в собственность машинная информация может не изыматься
из фондов, а копироваться. Следовательно, машинная информация должна быть выделена
как самостоятельный предмет уголовно-правовой охраны.
Ряд правонарушений, связан с выводом ЭВМ из строя. Практически
существует две разновидности этого преступления: физическое разрушение ПЭВМ и
порча программ. Наиболее значительные компьютерные преступления совершаются
посредством порчи прог-
– 8 –
рамм, причем часто его совершают работники,
недовольные своим положением, отношением о руководством и т.д. Примерно такие
побуждения двигали программистом, остановившим главный конвейер Волжского
автозавода. Занимаясь с коллегами автоматической системой для подачи
механических узлов на конвейер, он умышленно внес в программу команду: после
прохождения заданного числа деталей система перестает действовать
(«логическая бомба»). Двести машин не сошло с конвейера ВАЗа, пока
программисты не нашли источник сбоев. Между тем в отечественном
законодательстве нет нормы, которая позволила бы привлекать к уголовной
ответственности за порчу программы после ее составления. Однако конструирование
такой нормы наталкивается на ряд серьезных трудностей, связанных с ее
применением.
Ущерб, который наносится в результате компьютерных преступлений,
может быть четырех типов [2].
1. Нарушение функций. Возможны четыре
вида нарушений функций, вызываемых следующими причинами:
а) временные нарушения, приводящие к
путанице в графиках работы, расписании тех или иных действий и т.п.;
б) недоступность системы для
пользователей;
в) повреждения аппаратуры (устранимые или
неустранимые);
г) повреждения программного обеспечения
(устранимые или неустранимые).
2. Потери значимых ресурсов.
Предметами компьютерных преступлений обычно являются деньги, вещи,
оборудование, услуги, информация и др. С точки зрения преступника, деньги —
наиболее предпочтительный предмет посягательства. Распространены также кражи
машинной информации — программного обеспечения и хранимых в ее памяти данных.
Кроме того, могут быть и потери в результате кражи машинного времени.
3. Потеря монопольного использования. Определенная
информация имеет ценность для собственника лишь до тех пор, пока он является
ее монопольным владельцем. Например, планируемые закупочные цены на торговых
переговорах, списки потенциальных покупателей, исследования по состоянию
рыночной конъюнктуры и т.п. быстро обесцениваются в случае копирования и
распространения. Компь-
– 9 –
ютерные
программы могут быть результатом значительных усилий и затрат, поэтому
программисты часто, меняя работу, захватывают с собой ключевую информацию,
необходимую для повторения той же задачи в новом месте. Здесь очень трудно
разграничить незаконное и неэтичное поведение и право индивида использовать
свои знания, умение и искусство.
4. Нарушение прав. Эта проблема
обсуждается с разной степенью энтузиазма в странах с развитым уровнем
компьютеризации и фокусируется на проблеме возможных нарушений прав человека.
Но есть и другие аспекты этого вопроса.
Компьютеры могут стать чрезвычайно педантичными бюрократами. Они
действуют на основе строго определенных правил и прецедентов, принимая во
внимание только ограниченную рамками задачи информацию и ничего больше. Если
человек чувствует, что его не понимают, он старается пояснить свою задачу,
аргументирует и пользуется при атом отнюдь не компьютерной логикой, вводит при
необходимости новые данные и т.п. С компьютером ничего подобного невозможно.
Некоторые люди в таких ситуациях не могут успешно противостоять вызову
компьютерной технологии. У них развивается болезненная реакция, приводящая к
неадекватному поведению.
Изучение жертв компьютерных преступлений дает даже больше
информации для решения вопросов компьютерной безопасности, чем изучение лиц,
совершающих компьютерные преступления. По опубликованным данным, относящимся к
группе развитых стран, до 1982 года среди жертв собственники системы составляли
79%; клиенты — 13%; третьи лица — 8%.
Не секрет, что организации-жертвы компьютерных
преступлений — с неохотой сообщают об этом в правоохранительные органы. Часто
виновные просто увольняются или переводятся в другие структурные подразделения.
Иногда с виновного взыскивается ущерб в гражданском порядке. Отказ от уголовного
преследования означает отсутствие общего предупреждения, что позволяет и
другим попробовать свои возможности. Поведение жертвы зачастую определяет
сложный комплекс сил. Понимание этого может помочь как потенциальной жертве,
так и правоохранительным органам. Решение, которое принимает жертва
компьютерного преступления, определяется одним или
— 10 —
несколькими
из следующих факторов.
Отсутствие опасности. Обыденным
сознанием компьютерный преступник, как правило, не относится к разряду типичных
уголовников. Ущерб от компьютерных преступлений нередко переносится
организацией-жертвой на своих клиентов. При этом забывается, что такой способ
поведения в конце концов, отражается на общественном восприятии, престиже этой
организации.
Трата времени. Расследование компьютерных
преступлений часто сказывается на ограниченных ресурсах организации-жертвы, в
том числе и временных ресурсах. Органы, ведущие расследование, обычно
рассчитывают на помощь со стороны организации-жертвы. Так, необходимо поднимать
значительное количество документов, записей, что не всегда желательно. В
дальнейшем следуют вызовы сотрудников к следователю и в суд в качестве
свидетелей.
Стоимость расследования.
Расследование компьютерных преступлений, в том числе и силами самой фирмы,
является делом весьма дорогостоящим. Иногда организации не желают увеличивать
свои потери, добавляя к ущербу расходы на расследование. Зная свои ограниченные
материальные ресурсы, отказываются от идеи раскрыть преступление.
Легкий «шлепок». Известно,
что, будучи разоблаченными, компьютерные преступники во многих странах
отделываются легкими наказаниями — зачастую условными. Для жертв это является
одним ив аргументов за то, что даже заявлять о преступлении нет особого
смысла.
Общественное восприятие. Согласно
общественному мнению, компьютерные преступления не представляют серьезной
угрозы по сравнению с традиционными видами преступлений.
Пробелы в праве. Существующее
законодательство не всегда применимо к компьютерным преступлениям, что приводит
к серьезным затруднениям при правильной их квалификации.
Оценка правонарушения не как уголовного. Правоохранительные
органы не склонны относить многие из такого рода правонарушений к категории
преступлений и соответственно отказывают в возбуждении уголовного дела.
Выставление на посмешище. Публика обычно
воспринимает
— 11 —
компьютерного
пирата как умную и интересную личность, а жертву — как жадную и глупую. Поэтому
общественность редко льет слезы по поводу ущерба, нанесенного организациям,
пострадавшим от компьютерных преступлений, да и сами они не опешат выставлять
себя на посмешище.
«Грязные руки». Некоторые
жертвы боятся серьезного, компетентного расследования, так как оно может
вскрыть неблаговидную, даже незаконную, механику ведения дел.
Внутренние осложнения. Раскрытие
несостоятельности мер по компьютерной безопасности, принимаемых руководством,
может вызвать серьезные внутренние осложнения.
Увеличение страховых взносов. Жертвы
часто опасаются, что страховые компании увеличат размер страховых взносов (или
даже откажутся от возобновления страхового полиса), если компьютерные
преступления становятся для этой организации регулярными.
Потеря клиентов. Жертвы боятся потери
клиентуры вследствие падения своей финансовой репутации.
Подстрекательство. Справедливо считается, что
раскрытие преступления, сопряженное, как правило, с открытым описанием того,
как оно было совершено, служит своего рода приглашением, если не
подстрекательством, к его повторению другими.
Раскрытие служебной тайны. Жертва
может отказаться от расследования, опасаясь, что ее финансовые и другие
служебные тайны могут стать достоянием гласности во время судебного
рассмотрения дел.
Организационная политика. Определенные
силы внутри организации могут возражать против расследования. Так, некоторые
должностные лица опасаются, что в результате расследования и раскрытия
преступления выявятся их промахи и будет поставлен вопрос об их
профессиональной непригодности.
Представляется невероятным, что жертва, потерявшая миллионы,
может отказаться от расследования компьютерного преступления. Тем не менее,
как показывает практика, такой «эффект умалчивания» достаточно
широко распространен и имеет определенные логические основания.
Существует много косвенных признаков того, что в организа-
—
12 —
ции,
учреждении готовится иди осуществляется компьютерное преступление. Выявление
этих признаков не требует специальных знаний, и, находя их, администрация
может осуществлять дополнительные меры по компьютерной безопасности и
предотвращению преступлений.
Наиболее общие индикаторы таковы: сотрудники дают
подозрительные объяснения по поводу распределения денежных и материальных
фондов; производится перезапись данных без серьезных на то причин; данные
заменяются, изменяются или стираются; данные не обновляются; на ключевых
документах появляются подделанные подписи; появляются фальшивые записи;
персонал системы без видимых на то оснований начинает работать сверхурочно;
персонал возражает против осуществления контроля за записью данных; у работников,
непосредственно работающих с компьютерами, появляется ненормальная реакция на
рутинные вопросы; некоторые сотрудники отказываются уходить в отпуск;
отдельные работники начинают слоняться без дела в других подразделениях;
жалобы клиентов становятся хроническими и др.
Вопросы предотвращения и раскрытия компьютерных преступлений
сегодня касаются каждой организации, Важно, чтобы администрация хорошо
понимала, какие условия делают возможными такие посягательства. Руководителям,
конечно, не требуется становиться экспертами в данной области, но они должны
четко представлять себе связанные с этим проблемы.
Способы совершения компьютерных
преступлений
Рассмотрим наиболее известные сегодня способы совершения
компьютерных преступлений (см. таблицу 1) [2].
1. Перехват информации
Непосредственный перехват — вероятно,
старейший из используемых сегодня способов совершения компьютерных
преступлений. Все требующееся для этого оборудование нетрудно приобрести в магазинах,
причем это будет стоить не особенно дорого: микрофон, радиоприемник, кассетный
диктофон, модем, принтер. Перехват данных осуществляется либо непосредственно
через телефонный канал
— 13 —
системы, либо подключением к линии принтера.
Таблица
1
Основные способы
совершения компьютерных преступлений
Название на русском языке |
Название на английском |
Перехват |
Wiretapping |
Непосредственный
|
Interception |
Электромагнитный перехват |
Electromagnetic pickup |
Использование
|
Bugging |
Откачивание данных |
Data Leakage |
«Уборка мусора» |
Scavenging |
«За дураком» |
Piggybacking. |
«За хвост« |
Between-the-lines |
«Компьютерный абордаж» |
Hacking |
Неспешный выбор |
Browsing |
«Брешь« |
Trapdoor entry |
«Люк» |
Trapdoor |
«Системные ротозеи» |
Inadequate |
«Маскарад» («самозванство», |
Masquerading |
«узурпация личности») |
Impersonation |
Мистификация |
Spoofing |
«Аварийный« |
Super zapping |
«Склад без стен» |
Unknown system |
Подмена данных |
Data Ridding |
Подмена кода |
Code change |
«Троянский конь» в цепях |
Trojan Horse |
«Троянская матрешка» |
Trojan Horse in |
Компьютерный «вирус« |
Trojan Horse |
«Салями» |
Salami |
«Логическая бомба» |
Logic bomb |
«Временная бомба» |
Time bomb |
«Асинхронная атака» |
Asynchronous attack |
Моделирование |
Simulation. |
Реверсивная модель |
Simulation in |
«Воздушный змей« |
Check Kite |
«Ловушка на живца» («подсадная утка», «вор у вора») |
Decoy duch, decoy |
Электромагнитный
перехват. Не требует непосредственного подключения к системе и производится улавливанием
с помощью довольно несложной техники излучения, производимого центральным
процессором, дисплеем, принтером.
«Жучок». Установка микрофона
в компьютере с целью перехвата разговоров работающего на ПЭВМ персонала.
Откачивание данных. Сбор информации,
требующейся для получения основных материалов.
Часто при этом исследуется не само содержание информации, а схемы её движения.
— 14 —
«Уборка мусора» — метод
поиска информации, оставленной пользователем после работы о компьютером:
— Физический вариант. Сбор использованных листингов,
выброшенных служебных бумаг и т.п.
— Электронный вариант. Исследование данных,
оставленных в памяти машины.
2. Несанкционированный доступ
«За дураком»:
— Физический вариант. Проникновение
в помещение, где установлены компьютеры, следом за законным пользователем.
— Электронный вариант. Подключение терминала
незаконного пользователя к линии законного пользователя в начале или при
прерывании активного режима.
«За хвост». Перехват
сигнала, обозначающего конец работы законного пользователя с последующим
осуществлением доступа к системе.
«Абордаж». Хакеры
проникают в чужие информационные системы, подбирая номера наудачу, угадывая
коды и т.п.
«Неспешный выбор».
Несанкционированный доступ к файлам законного пользователя осуществляется
нахождением слабых мест в защите системы. Однажды обнаружив их, нарушитель
может не спеша исследовать содержащуюся в системе информацию, копировать ее,
возвращаться к ней многократно.
«Брешь». В отличие
от »неспешного выбора», где ищутся слабости в защите системы, при данном
способе производится поиск брешей, обусловленных ошибками или неудачной логикой
построения программы.
«Люк».
«Люк» — это развитие приема «брешь». В найденной бреши
программа «разрывается», и туда дополнительно вставляют одну или
несколько команд. Люк «открывается» по мере необходимости, а
встроенные команды автоматически осуществляют свою задачу. Несколько инженеров
в Детройте открыли «люк» в программе коммерческой службы во Флориде.
Затем они выявили код президента компании и сделали себе копии с документов,
составляющих коммерческую тайну.
— 15 —
«Системные ротозеи». Расчет
на неадекватную проверку полномочий пользователя
(имена, коды, шифр-ключи и т.п.). Несанкционированный доступ по существу
осуществляется нахождением бреши в программе входа в систему.
«Маскарад»:
— Физический вариант. Для
получения вспомогательной информации злоумышленники выдают себя за других лиц,
чаще всего за журналистов.
— Электронный вариант. Проникновение в компьютерную
систему по кодам и другим идентификационным шифрам законных пользователей.
«Мистификация». Иногда
случается, как, например, с ошибочными телефонными звонками, что пользователь
удаленного терминала подключается к чей-то системе, будучи абсолютно уверенным,
что работает с той системой, с которой намеревался. Владелец системы, к
которой произошло фактическое подключение, формируя правдоподобные отклики,
может поддержать это заблуждение в течение определенного времени и получать
некоторую информацию, в частности коды.
Аварийный доступ. Используется
тот факт, что в любом компьютерном комплексе имеется особая программа,
применяемая как системный инструмент в случае возникновения сбоев или других
отклонений в работе ЭВМ, своеобразный аналог приспособлений, помещаемых в
транспорте под надписью «Разбить стекло в случае аварии». Такая
программа — мощный и опасный инструмент в руках злоумышленника.
«Оклад без стен».
Несанкционированный доступ осуществляется в результате системной поломки.
Например, если некоторые файлы пользователя остаются открытыми, он может
получить доступ к не принадлежащим ему частям банка данных. Все происходит так,
словно клиент банка, войдя в выделенную ему в хранилище комнату, замечает,
что у нее нет одной стены.
3. Манипуляция данными
Подмена данных. Изменение
или введение ложных данных осуществляется, как правило, при вводе в ЭВМ или
выводе истинных
— 16 —
данных.
Подмена кода. Вариантом подмены
данных является изменение кода.
«Троянский
конь». Тайное введение в чужую программу таких команд, которые позволяют
осуществить новые, не планировавшиеся владельцем программы функции, но
одновременно сохранять и прежнюю работоспособность. По существу, это
«люк», который открывается не «вручную», а автоматически,
без дальнейшего участия злоумышленника. С помощью «троянского коня»
преступники обычно отчисляют на свой счет определенную сумму с каждой
операции.
«Троянский
новь» в цепях. В отличие от программных «троянских
коней», которые представляют собой совокупность команд, речь идет о
«троянских конях» в электронных цепях компьютеров. Это очень редкий
способ, потому что если в предыдущих поколениях компьютеров, где использовались
схемные соединения и печатные платы, то сейчас внести изменения в чипы можно,
пожалуй, только на уровне конструирования и заводского производства.
«Троянская
матрешка». Еще одна разновидность «троянского коня». Ее особенность
состоит в том, что в кусок программы вставляются не команды, выполняющие
«грязную» работу, а команда, формирующие эти команды и после их
выполнения уничтожающие их. В этом случае программисту, пытающемуся найти
«троянского коня», необходимо искать не его самого, а команды, его
формирующие. Развивая эту идею, можно представить себе команды, которые создают
другие команды сколь угодно большое число раз, которые создают и
«троянского коня».
«Компьютерные
вирусы». «Троянские кони» типа «сотри все
данные этой программы, перейди в следующую и сделай тоже самое» обладают
свойством переходить через коммуникационные сети ив одной системы в другую,
распространяясь как вирусное заболевание.
«Салями».
Тактика использования «троянского коня», основанная на том, что
отчисляемые суммы и их потери так малы и их потери практически незаметны
(например, по 1 копейке о операции), а накопления осуществляются за счет
большого количества операций. Это один из простейших и безопасных способов,
особенно если отчисляются дробные (стоимостью меньшей, чем самая малая денеж-
— 17 —
ная
единица, — например 1 копейка) денежные суммы, поскольку в этих случаях всё
равно делается округление.
«Логическая бомба». Тайное
встраивание в программу команд, которые должны сработать один раз или
срабатывать многократно при определенных условиях.
«Временная бомба». Разновидность
«логической бомбы», которая срабатывает по достижении определенного
момента времени. Так, Марианна Ферро, тридцатилетняя служащая итальянского
банка «Кредит эмилиано», заложила в программу банковского компьютера
«временную бомбу», которая сработала, когда М. Ферро прибыла на
Канарские острова, чтобы получить 3,5 млн. долларов [Известия, 15.02.84].
«Асинхронная атака». Сложный
способ, требующий хорошего знания операционной системы. Используя асинхронную
природу функционирования операционной системы, ее заставляют работать при
ложных условиях, из-за чего управление обработкой информации частично или
полностью нарушается. Если лицо, совершающее «асинхронную атаку»,
достаточно искусно, оно может использовать ситуацию, чтобы внести изменения в
операционную систему или направить ее на выполнение своих целей, причем вне
системы эти изменения не будут заметны.
Моделирование.
— Реверсивная модель. Создается модель конкретной
системы. В нее вводятся реальные исходные данные и учитываются планируемые
действия; Затем исходя из полученных правильных результатов, подбираются
правдоподобные желательные результаты. Затем модель возвращается назад, к
исходной точке, и становится ясно, какие манипуляции с входными данными
нужно проводить. В принципе «прокручивание» модели
«вперед-назад» может происходить не один раз, чтобы через несколько
итераций добиться желаемого. После этого остается только осуществить
задуманное.
— «Воздушный змей». В простейшем случае
требуется открыть в двух банках по небольшому счету. Далее деньги переводятся
из одного банка в другой и обратно с постепенно повышающимися суммами.
Хитрость в том, чтобы до того, как в банке обнаружится, что поручение о
переводе не обеспечено необходимой суммой, приходило
– 18
–
бы извещение о переводе в этот банк, так чтобы общая сумма
соответствовала требованию о первом переводе. Этот цикл повторяется большое
число раз («воздушный змей» поднимается все выше и выше) до тех пор,
пока на счете не оказывается достаточно большая сумма (фактически она
постоянно «перескакивает» с одного счета на другой, увеличивая свои
размеры). Тогда деньги быстро снимаются и владелец счетов исчезает. Этот способ
требует точного расчета, но для двух банков его можно сделать и без компьютера.
На практике в такую игру включают большое число банков, так как сумма
накапливается быстрее и число поручений о переводе не достигает подозрительной
частоты. Но управлять этим процессом можно только с помощью компьютера.
— «Ловушка
на живца». Создание особой программы, удачно разрекламированной и
потому якобы представляющей интерес для специалистов («живец»). На
самом деле программа работает некоторое время, затем имитирует системную
поломку и записывает коды всех пользователей, осуществляющих
несанкционированный доступ в нее. Полученные данные используются для других
компьютерных зло употреблений.
Перечисленные компьютерные преступления чаще всего
представляют собой:
— хищение
денег (подделка счетов и платежных ведомостей, приписка сверхурочных часов
работы, фальсификация платежных документов, вторичное получение уже
произведенных выплат, перечисление денег на подставные счета и т.д.);
— хищение вещей (совершение покупок с фиктивной
оплатой, добывание запасных частей и редких материалов);
— хищение машинной информации;
— внесение изменений в машинную информацию;
— хищение машинного времени;
— подделку документов (получение фальшивых
дипломов, фиктивное продвижение по службе);
— несанкционированную эксплуатацию системы;
— саботаж;
— шпионаж (политический и промышленный).
Особым видом компьютерного преступления считается
ванда-
– 19
–
лизм. Вандализм обычно принимает форму физического разрушения
компьютерных систем или их компонентов. Часто этим занимаются уволенные
сотрудники из чувства мести, люди, страдающие компьютерными фобиями. Они
поджигают компьютеры, закладывают в них взрывчатку, заливают краской и т.д.
Для
подавляющего большинства преступлений характерны корыстные мотивы. Но
представляет интерес тенденция к совершению таких преступлений специалистами —
профессионалами по ЭВМ. Люди, работающие в этой области, обычно весьма
любознательны и обладают острым умом, а также склонностью к озорству. Они
нередко воспринимают меры по обеспечению безопасности компьютерных систем как
вызов своему профессионализму и стараются найти технические пути, которые
доказали бы их личное превосходство. Постепенно они не только набирают опыт,
но и приобретают вкус к этой деятельности, и наконец, им приходит в голову, что
если уж заниматься этой «игрой», то лучше одновременно получать
какую-то выгоду. Программисты рассчитывают поднять свой престиж, похваставшись
перед знакомыми или коллегами умением найти слабости в компьютерной системе, а
иногда и попросту продемонстрировать, как эти слабости можно использовать.
Объекты
атак компьютерных преступлений
Компьютерные атаки многообразны. Многие из них по
своим признакам подпадают под действующее уголовное законодательство.
Исходя из концепции единства программ и ЭВМ, можно
выделить три типа социально-опасных посягательств на общественные отношения по
поводу объектов компьютерной техники (ОКТ): уничтожение, изменение и изъятие.
Уголовно-правовое значение каждого из них может быть двояким: во-первых, объект
компьютерной техники как предмет преступления; во-вторых, как техническое
средство совершения других преступлений.
Приведем подробную классификацию такого рода
посягательств [2]:
I.
Уничтожение объектов компьютерной техники:
— уничтожение аппаратуры;
— 20 —
— уничтожение носителей с машинной информацией;
— уничтожение (удаление) файлов или сообщений;
— удаление средств защиты машинкой информации от несанкционированного
доступа.
II. Изменение
объектов компьютерной техники:
— повреждение аппаратуры;
— несанкционированное изменение (модификация) записей’
файлов, сообщений или подмена файлов, сообщений;
—
несанкционированные изменения средств защиты информации компьютерной системы
от несанкционированного доступа;
— блокирование работы компьютерной системы, вызов отказа в
обслуживании пользователей;
— несанкционированное введение в компьютерную систему
посторонних программных средств.
III. Изъятие
объектов компьютерной техники:
— хищение аппаратуры;
— хищение машинной информации на каких-либо носителях
(магнитные ленты, магнитные диски, распечатки и т.д.);
— копирование (размножение) файлов с последующим изъятием
копий на каких-либо носителях.
IV. Хищения;
— хищения материальных ценностей, денег и услуг;
— хищения информации для различных целей.
V.
Несанкционированный доступ:
— несанкционированные «обходы» средств защиты
информации от несанкционированного доступа;
— несанкционированный доступ в компьютерную систему;
— несанкционированный запуск программы обработки информации.
Таким образом, объекты атак, относимых к компьютерным преступлениям,
можно разделить на три категории:
— сами компьютеры;
— объекты, которые могут быть атакованы с помощью компьютера
как инструмента;
— объекты, для которых компьютер является окружением.
— 21 —
Когда компьютер сам
является объектом атаки, необходимо проводить различие между его частями как
частями системы. В узком смысле компьютер есть просто центральный процессор.
На практике он никогда не используется самостоятельно, только в сочетании с
периферийными устройствами, причем часто оказывается связанным с терминалами в
единую сеть. Но сеть эта может включать в себя и другие компьютеры. Любая часть
этой общей системы может стать объектом атаки.
Операционную систему
и прикладные программы можно рассматривать и как часть компьютерной системы, и
как самостоятельный объект, для которого компьютер оказывается окружающей
средой. Первый взгляд представляется более естественным, поскольку с развитием
компьютерной техники становится все труднее провести четкую границу между
программным обеспечением и аппаратной реализацией. Угрозы программному
обеспечению могут повлечь ошибки, модифицирование программы, копирование ее или
вымогательство. Но компьютер все же является и хранилищем машинной информации —
данных и программ. И то и другое является объектом посягательств разного рода —
от копирования до уничтожения или хищения.
Защита от
компьютерных преступлений, на наш взгляд, может и должна осуществляться по трем
направлениям. Первое — сдерживание потенциальных преступников. В качестве одной
из мер сдерживания следует назвать разработку законодательства о компьютерных
преступлениях. К ним можно отнести и принятие кодексов профессиональной
этики. Второе — определение мер наказания за совершение компьютерных
преступлений (собственно, это является неотъемлемой частью норм о компьютерных
преступлениях). Третье — использование комплекса мер по защите информации.
Указанные меры направлены на предупреждение этих общественно опасных деяний.
2. КОМПЬЮТЕРНЫЕ
ВИРУСЫ
Одним из факторов,
резко повысивших уязвимость хранящейся в компьютере информации, является
появление нового класса программ — компьютерных вирусов.
Компьютерным вирусом
называется программа, которая может
— 22 —
«заражать» другие программы путём
включения в последние своей, возможно, модифицированной копии, способной, в
свою очередь, к дальнейшему размножению [3]. Следовательно, заражая программы,
вирусы способны распространяться от одной программы к другой. Зараженные
программы (или их копии) могут передаваться через дискеты или по сети на другие
ЭВМ.
Наибольшая опасность, возникающая при заражении программного
обеспечения компьютерными вирусами, состоит в возможности искажения или
уничтожения хранящихся в компьютере программ и баз данных. Последнее может
привести не только к финансовым и временным потерям, но и вызвать человеческие
жертвы.
Появились периодические издания, в значительной мере или
полностью ориентированные на освещение проблемы компьютерных вирусов.
Количество разработчиков, предлагающих различного рода антивирусные продукты,
исчисляется десятками. Все это ставит вопрос о формировании новой инженерной
дисциплины — компьютерной вирусологии, рассматриваемой как совокупность методов
и приёмов изучения компьютерных вирусов и разработки эффективных средств защиты
от них.
Историческое введение
Первым Вирусом-87 был так называемый Пакистанский вирус,
разработанный братьями Амджатом и Базитом Алви в 1986 г. Он был обнаружен летом
1987 г. Этот вирус был создан Амджатом — 26-летним выпускником отделения
физики Пенджабского университета, который, по его заявлению, пытался наказать
американских туристов, покупавших дешевые незаконные копии программ в
Пакистане. Амджат утверждает, что по пакистанским законам свободное копирование
не является преступлением, хотя он не одобряет такое положение вещей, вынужден
с ним мириться и не может наказывать других. Поэтому он не продавал зараженные
вирусом незаконные копии пакистанским покупателям. Другое дело »
американцы, у которых существуют законы, запрещающие пиратство. Их, по его
мнению, стоило проучить. К середине 1987 г. братья решили, что достаточно проучили
пиратов, и прекратили распространение вируса. Однако вирус уже сумел
распространиться по США, а оттуда попал в другие стра-
— 23 —
ны, в том
числе и в СССР. Кроме того, начали появляться штаммы с измененными текстовыми
сообщениями и свойствами.
Вторым Вирусом-87 стал Лехайский вирус, появившийся в ноябре
1987 г. в одноименном университете США. Этот вирус был первым вирусом-вандалом,
написанным для IBM РС. В
течение нескольких дней этот вирус уничтожил содержимое нескольких сотен дискет
из библиотеки вычислительного центра университета и личных дискет студентов.
Перед самым
Новым годом, 30 декабря 1987 г., был обнаружен вирус в Иерусалимском
университете (Израиль). Хотя существенного вреда он не принес, вирус быстро
распространился по всему миру и, по-видимому, является первым вирусом,
распространение которого приобрело характер пандемии.
В 1988 г. проблема защиты программного обеспечения персональных
компьютеров от заражения компьютерными вирусами в странах США и Западной
Европы приобрела характер приоритетной. Это, прежде всего, связано с тем, что в
условиях значительной зависимости различных учреждений от компьютерных систем
на базе IBM PC и Macintosh II
проникновение вирусов представляет потенциальную опасность и может привести к
серьезным последствиям. Например, летом 1988 г. компьютерный вирус инфицировал
три компьютера в Мичиганском госпитале, которые обрабатывали информацию о
пациентах. Он был обнаружен в процессе анализа причин неправильного
функционирования системы, заключавшегося в том, что на дисплей неверно
вызывались расширенные диагностические сведения. По данным администрации госпиталя,
вирус перемешал фамилии пациентов в базе данных ПЭВМ Macintosh II.
Как показало расследование, вирус был занесен при ремонте винчестера одного из
компьютеров. К счастью, никому из пациентов не был поставлен неправильный диагноз
или назначено неправильное лечение в результате перемешивания фамилий
пациентов в базе данных. Однако, по мнению специалистов, это был вопрос
времени и вполне возможно мог стоить кому-то жизни. Данный случай является
вторым случаем вторжения в медицинские компьютеры (первый был связан с
проникновением хакеров (иди хакеров), которые просматривали базу данных, но не
нанесли никакого ущерба) и первым случаем, когда настоящие данные
— 24 —
пациентов и
диагностирования манипулировались вирусом.
Из компьютерных Вирусов-88 отметим вирус падающих букв и
«итальянский попрыгунчик», распространение которых также приняло
характер эпидемии. Особое внимание общественности привлек так называемый вирус
Морриса. 2 ноября 19S8 г. Роберт
Моррис-младший, аспирант факультета информатики Корнеллского университета,
инфицировал с помощью написанного им вируса большое количество компьютеров (по
ориентировочным оценкам, порядка 6000), подключенных к американской
национальной сети Internet. Хотя
никакой потери или изменения данных не произошло, многие тысячи часов рабочего
времени были потеряны пользователями Internet.
Министерство юстиции США довольно долго изучало вопрос о
возможности привлечения Морриса к суду на основе действующего законодательства,
и только 18 января 1990 г. в городе Сиракьюс (шт. Нью-Йорк) начался судебный
процесс по делу Морриса. Нанесенный ущерб был оценен в 150 тысяч долларов.
Процесс над Моррисом стал возможен в результате принятия в 1986 г. федерального
закона об ответственности за преступления, связанные с компьютерами. Моррису
грозил штраф в 250 тысяч долларов и тюремное заключение сроком до 5 лет.
Адвокат Морриса утверждал, что якобы тот создал, вирус для проведения
эксперимента по проверке защиты компьютера. Но он допустил ошибку, которая и
привела к нежелательным результатам. Моррис, по словам адвоката, не стремился
нанести какой-либо ущерб компьютерным системам США. 4 мая 1990 года суд
присяжных признал Морриса виновным. Он был приговорен к условному заключению
сроком на три года, 400 часам общественных работ (американский аналог
отечественным 15 суткам) и штрафу размером 10 тысяч долларов. Осуждение Р.
Морриса — младшего показывает, что американское общество уже осознает
опасность и предпринимает меры по борьбе с ней.
Так или иначе, компьютерные вирусы стали частью окружающей
программистов, да и не только программистов, действительности. И они, конечно,
не миновали нашей страны, хотя массовые закупки персональных компьютеров типа IBM PC у нас в стране начались только в середине 1983 года. К этому
же моменту начался выпуск советских, правда, довольно неудачных компьютеров —
ЕС 1840,
— 25 —
«Искра 1030» и «Нейрон»,
а также торговля «за рубли» по баснословным ценам компьютерами,
изготовленными в странах Юго-Восточной Азии.
Первый компьютерный
вирус (С-648. VEN) появился в России приблизительно в августе 1988 г.
Этот вирус, часто называемый венским вирусом (по предполагаемому месту его
разработки), вызывал перезагрузку операционной системы при запуске некоторых
из пораженных им программ. Одно из первых мест, где он был обнаружен, —
лаборатория Института программных систем (Переславль-Залесский). Возможно, он
попал в лабораторию во время проведения институтом (совместно с ЮНЕСКО)
Международного детского компьютерного лагеря. Поскольку этот вирус к середине
1988 г. был уже довольно распространен в странах Западной Европы, он, несомненно,
завозился в Россию неоднократно с различного рода новыми версиями программного
обеспечения и компьютерными играми. Наибольшее распространение он получил
примерно в апреле 1989 г., после чего его эпидемия пошла на убыль, что
объясняется наличием разнообразных средств зашиты, часть из которых попала в
Россию еще до появления данного вируса.
Вторым вирусом,
попавшим в Россию, был вирус RC-1701.CAS.
Данный вирус вызывал довольно интересный эффект «опадания» букв на
экране монитора. Этот вирус также имеет западноевропейское происхождение …В
России впервые был выделен АН России. Средства защиты появились примерно
одновременно с вирусом, поэтому существенного вреда вирус не нанес.
По некоторым
оценкам, в настоящее время существует несколько сотен компьютерных вирусов и
число их непрерывно увеличивается.
Проблема борьбы с вирусами
Основная проблема
для пользователей ПЭВМ, возникающая в связи с появлением компьютерных вирусов,
состоит в том, как защитить свои программы и данные, не прибегая к
самоизоляции.
Вирусы создаются
конкретными программистами. Их распространение является неконтролируемым
процессом и поэтому необходимо
— 26 —
трезво
оценивать опасность.
Следует различать два основных действия (фазы), выполняемые
компьютерным вирусом: размножение и проявление.
Фаза размножения обычно является первой и обязательной фазой,
на которой вирус заражает все новые и новые программы. При этом никаких других
действий вирус обычно не выполняет.
Фаза
проявления не обязательно связана с визуальными или звуковыми эффектами.
Последние, в основном, характерны для так называемых вирусов-иллюзионистов,
которые обычно внезапно демонстрируют свое присутствие с помощью изощрённого
визуального или звукового эффекта. Фаза проявления может также включать или
исключительно заключаться в нанесении вирусом повреждений отдельным файлам или
файловой системе компьютера. Повреждения могут быть массированными, когда,
например, стираются системные блоки или выполняются небольшие, трудно
обнаруживаемые повреждения.
Наряду с указанными действиями, вирус может обладать определённой
латентной (скрытой) фазой, в течение которой никаких действий по своему
размножению или проявлению не предпринимается. Латентная фаза может быть
обусловлена определённым временным периодом (например, определённым месяцем или
годом), конфигурацией (например, вирус может активизироваться только при
попадании на винчестер) иди аппаратными особенностями (например, только на IBM PC).
Инфицируя программы, вирусы могут распространяться от одной
программы к другой (транзитивно), что делает их более опасными по сравнению с
другими методами компьютерного вандализма. Зараженная программа или ее копии
могут передаваться через дискеты или по сети на другие ЭВМ. Учитывая широко
распространенную практику обмена и передачи программ на дискетах среди пользователей
персональных ЭВМ, количество зараженных программ может быть значительным,
приводя к своего рода «эпидемиям». Этому также способствует
распространенная в нашей стране практика использования одной ПЭВМ несколькими
пользователями. Опасность существенно возрастает при наличии винчестера,
программы на которой используются всеми пользователями.
— 27 —
Особую опасность с точки зрения распространения компьютерных
вирусов представляют любители компьютерных игр, обычно слабо знающие
операционную систему и не вполне понимающие смысла выполняемых ими действий.
Такие пользователи подвергают значительному риску своих коллег, работающих с
ними на одной ЭВМ.
Компьютерные вирусы «бессмертны» и могут
неограниченное время «храниться в различного рода архивах. Даже
«полностью уничтоженные» вируса могут сохраниться в каком-нибудь
архивном файле и случайно или умышленно «реанимироваться» через много
месяцев или даже лет после их первоначального, обнаружения и уничтожения. Из
этого следует важный вывод, что после первого обнаружения и уничтожения вируса
следует ожидать повторных заражений.
Тот факт, что после первого заражения обычно следуют повторные,
требует принятия специальных мер по предотвращению повторных заражений. Здесь
можно двигаться в двух направлениях: во-первых, постараться найти первоисточник
заражения, я во-вторых, разработать или установить готовые средства,
затрудняющие или делающие невозможным размножением вируса.
Вызываемые вирусами последствия могут быть классифицированы
по следующим основным категориям:
— отказ в выполнении той или иной функции (например, блокирование
Вирусом загрузки программы с защищенной от записи дискеты);
— выполнение функции, не предусмотренной программой (например,
форматирование диска, удаление файла и т.д.);
— выдача
ложных, раздражающих или отвлекающих сообщений (например, «падение
букв», замедление выполнения программ;
— изменение или уничтожение файлов;
— повреждение оборудования.
Наносимый вирусами ущерб может иметь катастрофический характер
(например, уничтожение винчестера или выжигание пятна на экране монитора). Но
наиболее опасны как раз не катастрофические повреждения винчестера или дискет,
а мелкие, незаметные изменения файлов данных. Известны вирусы, которые ищут
внутри файлов числовые поля и меняют цифры местами.
Среди важнейших мер по защите от вирусов можно отметить
— 28 —
следующие:
— резервирование (копирование, ежедневное ведение
архивов измененных файлов). Это самый важный, основной метод зашиты от вирусов.
Остальные методы не могут заменить ежедневное архивирование, хотя и повышают
общий уровень защиты;
— профилактику (систематическая выгрузка содержимого
активной части винчестера на дискеты иди магнитную ленту, раздельное хранение
вновь полученных программ и эксплуатирующихся, хранение неиспользуемых программ
в архивах, использование специальной «инкубационной» зоны для записи
новых программ с дискет);
— ревизию (анализ вновь полученных программ
специальными средствами и их запуск в контролируемой среде и др.);
— фильтрацию (разбиение диска на зоны с установленным
атрибутом READ ONLY — «Только для чтения»,
использование специальных программ для обнаружения попыток выполнить несанкционированные
действия);
— вакцинирование (запуск специальных программ-вакцин, обманывающих
вирус путём имитации сочетания условий, которые используются данным типом
вируса для определения зараженности программы, диска, ЭВМ);
— терапию (дезактивацию конкретного вируса в
зараженных программах с помощью специальной программы-антибиотика или восстановление
первоначального состояния программ путем «пожирания» всех экземпляров
вируса на диске с помощью программы-фага).
Есть
программы-фаги, обеспечивающие возможность восстановления исходного состояния
программы, зараженной вирусом. В процессе своей работы фаги
«выкусывают» тело вируса и восстанавливают изменённые вирусом
команды.
Защита от компьютерных вирусов должна стать частью комплекса
мер по защите информации, как в отдельных компьютерах, так и в
автоматизированных информационных системах в целом.
3. СОВРЕМЕННЫЕ МЕТОДЫ ЗАЩИТЫ ИНФОРМАЦИИ В ОРГАНАХ
ВНУТРЕННИХ ДЕЛ
По мере развития и усложнения компьютерных систем и прог-
— 29 —
раммного
обеспечения возрастает, объём и повышается уязвимость хранящихся в них данных.
Поэтому все больший вес приобретают проблемы защиты информации. Можно выделить
три аспекта уязвимости информации:
1. Подверженность физическому уничтожению.
2. Возможность несанкционированной (случайной или злоумышленной)
модификации (изменения).
3. Опасность
несанкционированного (случайного или преднамеренного) получения информации
лицами, для кого она не предназначена.
В настоящее время системы защиты информации разрабатываются
по двум направлениям:
1.
Обеспечение достоверности и целостности передачи информации. Используются
методы помехоустойчивого кодирования (коды Грея, Шеннона и др.) и
помехоустойчивого приема.
2. Защита информации от несанкционированного доступа, преднамеренного
искажения или разрушения.
Отечественный и зарубежный опыт защиты информации показывает,
что эффективной может быть лишь комплексная система защиты, сочетающая
следующие меры [7]:
1. Физические.
2. Административные (организационные).
3. Технические.
4. Криптографические.
5. Программные.
Физические меры предполагают создание
препятствий для доступа к оборудованию и информации. К ним нередко
прибегают для охраны оборудования и носителей информации от прямого хищения или
уничтожения. Это — замки на дверях, решетки на окнах, различные механические,
электромеханические и электронные устройства охраны здания и охранной
сигнализации и т.д. Физические меры защиты, как правило, применяются в
совокупности с административными мероприятиями, которые включают в себя
меры по организации соответствующего режима секретности, пропускного и
внутреннего режима и т.д.
К техническим мерам защиты относится использование
разнооб-
— 30 —
разных
механических, электромеханических, электронных, оптических, радиолокационных и
других устройств и систем, которые способны самостоятельно либо в совокупности
с другими средствами выполнять функции защиты информации. К ним относятся,
например, технические средства защиты от побочных электромагнитных излучений,
защитное зашумление, средства охранного освещения, обнаружения, наблюдения,
сигнализации и др. Они дополняют физические и административные меры и позволяют
значительно повысить её эффективность.
В криптографических мерах защиты используются методы
шифровки информации, которые кодируют информацию таким образом, чтобы её
содержание было доступно только при предъявлении некоторой специфической
информации (ключа). Осуществляться шифрование может либо вручную (что
представляет сложную и кропотливую процедуру), либо автоматически, с помощью
специальных аппаратных средств (шифраторов) или специального программного
обеспечения. Специалисты считают криптографическое закрытие информации наиболее
эффективным и надежным средством защиты информации.
Программные меры являются средством защиты информации,
находящейся в компьютере. Системы защиты компьютера должны позволять
пользователю при соответствующем контроле получать доступ к вычислительной
технике и хранимой в ней информации. Для защиты от чужого вторжения следует
предусмотреть меры непосредственной защиты вычислительных устройств и
информации от несанкционированного доступа. Основными функциями, которые
должны осуществлять средства защиты, являются:
— идентификация субъектов и объектов;
— разграничение (иногда полная изоляция) доступа к вычислительным
ресурсам и информации;
— регистрация действий в системе.
Процедура идентификации и подтверждения подлинности
предполагает проверку, является ли субъект, осуществляющий доступ (или объект,
к которому осуществляется доступ), тем за кого себя выдаёт. В процессе
идентификации используются различные методы: простые, сложные или одноразовые
пароли, обмен вопросами и ответами с администратором или через соответствующую
программу, ис-
— 31 —
пользование
различных опознавательных элементов (ключ, кодовая карточка, удостоверение
личности, жетон, фотоснимок лица), методы биометрической идентификации
личности (по отпечаткам пальцев, размеру и отпечатку ладони, сетчатке глаза) и
т.д.
Разграничение доступа к
вычислительным ресурсам и информации осуществляется на трех уровнях:
— аппаратуры;
— программного обеспечения;
— данных.
Защита на уровнях аппаратуры и программного обеспечения
предусматривает управление доступом к таким вычислительным ресурсам, как
отдельные устройства, оперативная память, операционная система, специальные
служебные и личные программы пользователя.
Защит информации на уровне данных направлена
на:
— защиту
информации при передаче по каналам между различными ЭВМ;
— обеспечение доступа только к разрешённым данным, хранимым в
ЭВМ, и выполнение только допустимых операций над ними.
Для защиты информации при передаче является целесообразным
шифрование данных перед вводом в канал связи и расшифровывание на выходе ив
него.
Управление доступом к информации позволяет ответить на вопросы:
кто может выполнять, какие операции и над какими данными. Объектом, доступ к
которому контролируется, может выступать файл, запись в файле или отдельное
поле записи файла, а в качестве факторов, влияющих на принятие решения о
доступе, — внешнее событие, значение данных, состояние системы, полномочия
пользователя и т.д.
Доступ, управляемый событием, предусматривает блокировку
обращения пользователя, например, в определенные интервалы времени или при
обращении с определённого терминала. Доступ, зависящий от состояния,
осуществляется в зависимости от текущего состояния вычислительной системы,
управляющих программ и системы защиты. Например, может быть запрещён доступ к
файлу, если диск не находится в состоянии «Только чтение». Доступ,
управляемый
— 32 —
значением,
открывает путь к данным в зависимости от их текущего значения.
Что касается доступа, зависящего от полномочий, то он предусматривает
обращение пользователя к программам, данным, оборудованию в зависимости от
предоставленного режима. Например, субъекту может быть разрешено «Только
чтение». «Читать и писать», «Только выполнение» и др.
Другой подход к построению средств защиты доступа основан на
контроле информационных потоков и разделении субъектов и объектов доступа на
классы секретности. Средства контроля должны разрешать поток информации для
чтения, если уровень информационного объекта-источника соответствует или не
превосходит категорию субъекта-получателя информации, и для записи, если
категория субъекта-источника соответствует или превышает уровень секретности
информационного объекта.
Средства регистрации, как и средства контроля доступа, относятся
к эффективным мерам противодействия несанкционированным действиям. Однако, если
средства контроля доступа предназначены для предотвращения таких действий то
задача регистрации — обнаружить уже совершенные действия или их попытки.
Как видно из излаженного, методы защиты информации имеют
широкий диапазон действия. При выборе комплекса мер по защите информации
следует исходить из их надежности, эффективности, стоимости и удобства
пользования.
ЗАКЛЮЧЕНИЕ
Знание основных способов совершения и предупреждения компьютерных
преступлений, методов борьбы с компьютерными вирусами, а также современных
методов защиты информации необходимо для разработки комплекса мероприятий по
обеспечению защиты автоматизированных информационных систем органов внутренних
дел. Все это будет способствовать повышению эффективности деятельности органов
внутренних дел в целом.
— 33 —
СЛОВАРЬ КЛЮЧЕВЫХ СЛОВ И ТЕРМИНОВ
База данных — совокупность данных,
организованная по определенным правилам, предусматривающим общие принципы
описания, хранения и манипулирования данными, независимая от прикладных
программ.
Информация — совокупность сведений о
всевозможных объектах, явлениях, процессах, представленных в форме,
воспринимаемой для формальной обработки автоматическими устройствами или
человеком. Информационная база — упорядоченный набор однотипных элементов
информации (знаний, данных, программ).
Канады связи — совокупность программных и
аппаратных средств для передачи данных от одного устройства к другому.
Модем (modem) — устройство, позволяющее подключить компьютер к
телефонной линии и организовывать связь с удаленными компьютерами.
Сети — комплекс аппаратных и программных
средств, позволяющих объединенным ими компьютерам обмениваться данными. При небольших
расстояниях сеть называется локальной.
Хакер (Hacker) —
1. Программист, способный составлять программы без предварительной разработки
и оперативно вносить исправления в программы, не имеющие документации. 2.
Компьютерный мошенник, охотник за секретной информацией.
Файл — поименованная совокупность
логических записей, однотипных по структуре и методу доступа, оформленная как
единое целое средствами языка программирования.
— 34 —
ЛИТЕРАТУРА
1. Батурин Ю.М. Право и политика в компьютерном круге. — М.:
Наука, 1987.
2. Батурин Ю.М. Проблемы компьютерного права. — М.: Юрид.
лит., 1991. — 272 с.
3. Безруков Н.Н. Компьютерные вирусы. — М.: Наука,
1991. — 160 с., ил.
4. Брусницын Н.А. Открытость и шпионаж. — М.: Воениздат, 1991
— 56 с., ил.
5. Закон РФ «О правовой охране программ для электронных
вычислительных машин и баз данных» (23.09.92. № 3523-1).
6. Защита программного обеспечения: Пер. с англ. / Под ред.
Д. Гроувера. — М.: Мир, 1992. — 288 с., ил.
7. Право и информатика / Под ред. Е.А. Суханова. — М.: Изд-во
МГУ, 1990. — 144с.
8. Предпринимательство и безопасность: В 3-х частях / Под
ред. Ю.Е. Додгополоза. — М.: Универсум, 1991.