Задать вопрос
@ExpSys
student

Безопасно ли использовать OpenSource продукты от крупных корпораций?

Существует масса крупных компаний которые выпускают компиляторы, библиотеки для ЯП, IDE и т.д. под открытыми лицензиями, понятное дело код таких продуктов выложен на GitHub, GitLab, но фактически они выпускают скомпилированные под платформу бинарники, как можно проверить, что выложенный код совпадает со скомпилированным бинарником?
Я понимаю, сейчас много кто может сказать: не доверяешь - компилируй. Но, так или иначе, чтобы этим заниматься, нужно время и погружения в определённые стеки, чего бы я хотел избежать.
Есть простые способы проверки соответствия скомпилированного бинарника с такой же версией открытого кода?
  • Вопрос задан
  • 478 просмотров
Подписаться 3 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Системный администратор
    11 месяцев
    Далее
  • Skillbox
    Специалист по кибербезопасности
    4 месяца
    Далее
  • Skillfactory
    Профессия «Белый» хакер
    13 месяцев
    Далее
Решения вопроса 1
GavriKos
@GavriKos
Микропетпроджект - домашнее облако homeCloud
Есть простые способы проверки соответствия скомпилированного бинарника с такой же версией открытого кода?


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

как можно проверить, что выложенный код совпадает со скомпилированным бинарником?

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

Чтобы компиляция была воспроизводимой - нужно приложить специальные усилия, так как на итоговый бинарник влияет не только исходный код, но и окружение (конкретные версии компилятора и системных библиотек)


Есть простые способы проверки соответствия скомпилированного бинарника с такой же версией открытого кода?

Собрать самостоятельно - это и есть самый простой способ.
Ну и ещё если все пайплайны для сборки описаны в этом же репозитории (github actions или просто дана ссылка на пайплайны), то это +1 очко к уверенности, что для сборки используются те же самые исходники.

В любом случае, всякие мелкие или не очень мелкие пакости с большей вероятностью пойдут от мелких разрабов-одиночек, а не от корпораций.
Ответ написан
Комментировать
@Everything_is_bad
Есть простые способы проверки соответствия скомпилированного бинарника с такой же версией открытого кода?
нет, для простых способов нужно минимум, чтобы процесс был обратимый
Ответ написан
Комментировать
@Drno
насчет надежности опенсорса
https://vk.com/wall-194576836_28348
Ответ написан
Комментировать
@pfg21
ex-турист
весь вопрос в воспроизводимости скомпилированных бинарей.
если воспроизводимость возможна - то кто угодно может компильнуть исходный код и простым сравнением бинарников подтвердить, что данная компиляция соответствует исходному коду или наоборот не соответствует.

самым правильным решением исключения вопросов левых внедрений в код на этапе компиляции является собственная компиляция.
Ответ написан
Комментировать
@ExpSys Автор вопроса
student
Спасибо всем коллеги за развёрнутые ответы, как я понял, выход для людей которые желают пользоваться разработками под открытыми лицензиями:
1. Проверка соответствия кода и бинарника - это самостоятельная компиляция проверенного комьюнити кода из сетевых хранилищ, обращая внимание на контрольную сумму выложенную вендором полученного в результате компиляции бинарника. Этот вариант предусматривает настройку окружения под стек продукта, включая среду ЯП, скрипты компиляции, внешние зависимости и т.д., такой вариант будет полностью на ответственности того кто компилирует и необходимости контроля и перекомпиляции в случае обнаружения уязвимостей;
2. Реверс-инжиниринг готового бинарника от вендора с целью сопоставления коду размещённому в открытом сетевом хранилище, задача так же не тривиальная и требует ещё большего погружения как в стек, так и в более низкоуровневые технологии;
3. Просто доверять тому или иному вендору открытого ПО, без проверки на соответствие.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы