Краткое Введение В Доверительные Отношения, Или Почему Нельзя Вслепую Запускать Скрипты Из Интернета, Не Проверив Их

Как работает цепочка доверия?

Краткое введение в доверительные отношения, или Почему нельзя вслепую запускать скрипты из интернета, не проверив их

В недавней статье «VPN в каждый дом» предлагается совершить огромную глупость, а именно зайти на свой VPS и ввести туда это:

  
   

curl -sS https://sockeye.cc/instavpn.sh | sudo bash

Как я написал в комментарии к той статье, это очень глупо.

Вы вслепую запускаете код из интернета, который даже не видели, и не важно даже из-под судо или нет. Основные причины заключаются в следующем:

  • Вы учите себя, что можете это сделать.

    Это самая большая проблема здесь, и это действие можно сравнить с пользователем, который открывает исполняемый файл из пришедшего ему письма.

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

  • Вы не проверяете контрольные суммы и, следовательно, не можете определить, запускаете ли вы то, что, по вашему мнению, выполняете.

    Заменить скрипт можно большим количеством способов, включая замену DNS-записи провайдера, как это было на Github на этой неделе, взлом сайта, с которого производится загрузка и т.д.

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

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

    Такая информация обычно встречается даже об авторах небольших программ.

  • Вы скачиваете свою программу, не важно в каком виде, будь то пакет, архив или iso-образ.

  • Используйте sha256sum (или хотя бы md5sum), чтобы вычислить контрольную сумму того, что вы скачали.

  • Зайдите на сайт разработчика и посмотрите, соответствует ли то, что вы посчитали, тому, что там написано.

  • Введите контрольную сумму в Google и найдите другой источник.

  • Убедитесь, что скорее всего вы скачали именно то, что хотел вам предоставить автор программы.

  • Теперь у вас есть достаточная причина для установки пакета программного обеспечения и не очень много волноваться.

Снова.

Абсолютно вся безопасность строится на вашем доверии к определенным людям или компаниям, будь то Линус Торвальдс, команда безопасности Ubuntu или автор небольшой полезной утилиты.

Вам необходимо убедиться, что 1. автор заслуживает доверия и 2. вы используете то, что опубликовал автор.

Теперь рассмотрим применение вышеописанного метода на примере установки Ubuntu Desktop 14.04.01. Абсолютно тот же метод используется и при установке всего остального, только вы скачиваете не образ диска, а, например, архив.

  • Canonical — относительно известная компания, и ей следует доверять с осторожностью.

    Всегда можно доверять только с осторожностью.

  • Скачиваете образ диска с любого зеркала: wget что угодно/ubuntu-14.04.1-desktop-amd64.iso При этом совершенно не важно, взломано ли зеркало или безопасно ли соединение.

  • Далее посчитаем контрольную сумму, у них на сайте нет sha256, поэтому пойдет md5: «md5sum ubuntu-14.04.1-desktop-amd64.iso»
  • Вы заходите на их сайт и видите это» help.ubuntu.com/community/UbuntuHashes "Все в порядке, контрольная сумма совпадает.
  • Найдите эту контрольную сумму в Google. Как минимум, убедитесь, что на других зеркалах оно такое же; в идеале найдите список рассылки Canonical, в котором он упоминается.

  • Теперь вы убедились, что скачанный образ не фейковый, и можете его установить.

Теперь давайте посмотрим, как работает менеджер пакетов на примере apt-get:
  • Когда вы устанавливаете систему, у вас уже настроены некоторые репозитории.

  • Эти репозитории содержат файлы со списком всех пакетов и их контрольными суммами.

  • Эти файлы, в свою очередь, подписаны закрытым ключом разработчиков.

  • После установки дистрибутив уже содержит публичный ключ.

  • Таким образом, при установке нового пакета вы загружаете соответствующий список всех пакетов (если в репозитории было обновление), затем сам пакет и можете быть уверены, что цепочка доверия будет прослежена: {контрольная сумма пакета}--{список пакетов с контрольными суммами}--{подпись списка пакетов закрытым ключом}-{открытый ключ, встроенный в ваш дистрибутив} .

Как видите, проверка происходит на всех уровнях.

Ни один неподписанный исполняемый код не попадет в вашу систему.

В случаях, подобных описанным в недавней статье, все эти проверки не выполняются.

У вас нет оснований доверять такому коду.

Поэтому правило: Никогда не запускайте непонятный код из Интернета! Либо убедитесь сами, что это безопасно, либо убедитесь, что автору можно доверять, и это его код. Если у вас недостаточно знаний, чтобы проверить код самостоятельно, используйте только официальные репозитории, там есть выделенная команда специалистов, которые стараются (и обычно хорошо справляются) сделать это за вас.

Добавление.

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

Чтобы минимизировать риски, используйте базовая HTTP-аутентификация К https .

Таким образом, вы перекладываете ответственность за уязвимости на могучие плечи веб-сервера.

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

Но самописные панели управления и другие инструменты обычно предназначены именно для внутреннего использования.

Не по теме.

Проблема.

Внимание! Не делайте этого на своей рабочей машине или сервере, это сломается! Проблема формулируется просто, я предполагаю, что у вас 64-битная система:

chmod -x /lib64/ld-linux-x86-64.so.2

Есть несколько решений, в самом сложном случае у вас нет лазеек.

Не буду подробно рассказывать, чтобы не помогать с решением.

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

УПД2: Как правильно заметил Амарао , если вы не совсем понимаете, что делаете, используйте только официальные репозитории.

Теги: #unix #linux #цепочка доверия #усмотрительность #так появляются ботнеты #информационная безопасность

Вместе с данным постом часто просматривают: