Как стать автором
Обновить

Open Source: IT-фетиш 21 века

Время на прочтение 4 мин
Количество просмотров 5.2K

В последние лет 5 часто встречаются в сети красиво изложенные мысли на тему открытых исходников различных приложений. Суть в следующем: «Если код закрыт, то пользоваться приложением нельзя или нежелательно». Ведь если нельзя заглянуть под капот, нет никаких гарантий, что там не спрятан какой-нибудь червяк.

Чаще всего подобные мысли исходят от активных комментаторов в социальных сетях. Люди посерьёзнее крайне сдержанно подходят к данному вопросу, в основном мысли этой публики сводятся к «Закрытый код означает полный контроль над разработкой и эксплуатацией решений», со всеми атрибутами: это значительно усложняет создание любого вредоносного ПО, не даёт возможности угнать и модифицировать наработки (содержать даже небольшой штат кодеров – удовольствие не из дешёвых, чтобы потом дарить плоды труда кому бы то ни было).

И ведь и те, и другие говорят верно. Но дьявол кроется в деталях – об этом и поговорим.

Во-первых, где одни хотят что-то спрятать, другие хотят это «что-то» раскрыть. Но много ли среди всех, высказывающихся по данному вопросу, реально будут тратить время на аудит приложения? И обладают ли компетенциями, чтобы в короткое время провести аудит даже небольшого приложения? Может быть, один из ста или из тысячи.

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

Третий камень в огород любителей open source, возводящих этот подход в абсолют –обилие всевозможных проблем, обнаруженных в таких продуктах. Даже в *никсах есть дыры, которые не закрываются годами. Гарантий, что в перспективе приложение с открытыми исходниками будет работать лучше, нежели аналогичное, но закрытое, нет никаких – всё решает уровень разработчиков.

Что же до закрытого кода, ситуации, когда приложения подбрасывают свинью, встречались и будут встречаться. Далеко за примерами ходить не надо – одна телеметрия Win10 (и косяки предыдущих версий) чего стоят. Будь оно полностью открыто, нашлись бы те, кто не поленился и купировал этот функционал. Казалось бы: всё, говорить дальше смысла нет! Но не будем забывать: истоки подобной ситуации вовсе не закрытые коды Windows, а задачи и уровень тех, кто его разрабатывал.

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

Для примера подобной работы можно взять беглый анализ активности Utopia Ecosystem. В этой статье заявлено:

  1. приложение является пиринговой системой.

  2. оно преимущественно использует ассиметричное шифрование.

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

Теперь запускаем нетстат и видим:

В списке найдутся как адреса из окна приложения, так и много других. Зная особенности поведения пиринговых приложений, это можно считать нормальным: узлы сети постоянно обмениваются между собой информацией. Исходя из особенностей работы любой p2p-сети, информация со списком узлов должна храниться у каждого участника, и, действительно, при детальном рассмотрении файлов ноды сети, мы находим такой список: файл называется p.db и хранится в рабочем каталоге ноды. Дав узлу поработать день-два (чтобы набрать базу), мы извлекаем данные и помещаем их в удобный для чтения вид:

Получим большое количество строк. Адреса в списке часто повторяются, но с разными портами. Если сопоставить количество узлов с количеством нод сети (около 27 тысяч элементов), отображаемой в клиенте программы, и учесть, что в списке есть повторы – приложение действительное пиринговое. Вопросов нет.

Далее интересен вопрос шифрования – наличие слабых мест с применением TLS-протокола. Я запустил WireShark и понаблюдал за активностью системы, проверил сеть на наличие обмена по данному протоколу. Не обнаружил ничего, ни одного tls-пакета в дампе на адрес целевой машины. Использование асинхронных методов шифрования данным софтом для меня лично можно считать фактом.

Заодно и глянул пакеты, соответствующие адресам, полученным раннее. Удалось найти даже пакет-пустышку, о которых говорилось в статье:

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

Данным материалом хочу высказать ИМХО: возводить open source в абсолют, как и ругать закрытые исходники, глупо. Всё упирается в людей: если человек, вовлечённый в вопрос, может что-то увидеть и понять, то что сможет сделать профессионал?

Теги:
Хабы:
+4
Комментарии 21
Комментарии Комментарии 21

Публикации

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн