Читая последние новости о том, что хакеры успешно подменили код большого проекта, естественно возникает вопрос: как это вообще возможно, если код был подписан!? Пренебрежение правилами безопасности в криптосфере – это оксюморон и в то же время факт, поэтому, чтобы эта статья не превратилась в избиение человека, я выбрал для анализа не новичков, а криптовалюты из вершины рейтинга CoinMarketCap. .
И, как вы уже догадались, не зря.
Посмотрим, как обстоят дела с использованием цифровых подписей в оплоте финтех-революции.
Мотивация
Как вы, скорее всего, знаете, довольно часто происходит взлом официальных сайтов и профилей криптопроектов на github, через которые распространяется вредоносный код. Иногда заменяются адреса кошельков, в других случаях заменяется распространяемое программное обеспечение.Методы взлома различаются: происходит атака на один из узлов сети, отвечающий за доставку данных, и осуществляется скрытая подмена фрагмента данных.
Визуально обнаружить подмену довольно сложно, чем и пользуются злоумышленники.
Существует несколько способов защититься от такой атаки.
Подпись PGP считается стандартной: публикация подписанных контрольных сумм.
В этом случае ключ PGP должен быть распределен правильно.
Например, опубликованные на различных ресурсах (желательно более двух).
Анализ
Для анализа я использовал официальные ресурсы, ссылки на которые я получил из разных источников.После чего он начал собирать информацию, двигаясь с разных сторон.
При анализе учитывалась публикация как заказного ПО, так и SDK. В анализ не вошли токены или проекты на основе смарт-контрактов, только криптовалюты.
Результаты
Проект | Результат |
---|---|
Биткойн-ядро | публикация ключа и кода в одном источнике |
Эфириум Гет | публикация ключа и кода в одном источнике |
Эфириум SDK | нет подписи |
Паритет | нет подписи |
XRP | - |
Лайткоин | публикация ключа и кода в одном источнике |
Кардано Дедал | нет подписи |
Кардано | нет подписи |
Звездный | неопубликованные ключи |
Звездный SDK | неподписанные релизы, подписание неопубликованными ключами |
ЙОТА ИРИ | нет подписи |
ЙОТА-кошелек | нет подписи |
Трон Ядро | нет подписи |
Трон кошелек | нет подписи |
Нео Гуй | нет подписи |
Нео Кли | нет подписи |
Монеро | публикация ключа и кода в одном источнике |
Даш Ядро | публикация ключа и кода в одном источнике |
Дэш Электрум | нет подписи |
NEM Нано-кошелек | нет подписи |
НЕМ НИС | неопубликованные ключи |
Эфириум Классик | * |
Ктум Ядро | нет подписи |
Zcash | неподписанные релизы |
Распространенные ошибки
- Отсутствие подписи как таковой( 10/15 ):
Неподписанным может быть исполняемый код, но чаще встречаются неподписанные библиотеки и прикладное программное обеспечение, например кошельки.
- Подписание неопубликованными ключами ( 2/15 ):
Код подписан несколькими разработчиками, ключи которых нигде не публикуются, а потому такие подписи бесполезны.
- Публикация ключей и кода в одном источнике ( 5/15 ).
Очень распространенная ошибка — публикация ключей по ссылке на стороннем ресурсе или создание единого доверенного источника в виде сайта.
Таким образом, для замены данных достаточно взломать только сайт.
Нетипичные ошибки
Monero предлагает посмотреть ключи в папке с подписанными данными.По сути, это ошибка распределения ключей, которая приводит к полной потере надежности.
На заметку!
- Litecoin публикует ключи, в том числе в виде ссылки на доверенный ресурс pgp.mit.edu.
- Ethereum и Zcash публикуют подробные списки ключей:
- Ethereum публикует сервисные ключи CI.
Причины
- Отсутствие единой стратегии .
На сегодняшний день не существует инструкции, которая подошла бы большинству разработчиков для решения задачи обеспечения гарантированной доставки кода на разные платформы.
Активно ведется любительская деятельность.
- Устаревание .
Если посмотреть основные сайты о технологии PGP, то создается впечатление, что технология в забвении:
- Отсутствие комплексных инструментов для публикации и проверки подписей.
Даже если есть желание, на пути пользователя ждут серьезные препятствия — многие пользователи не умеют и не готовы использовать консоль, необходимую для проверки подписи.
Даже для разработчиков использование подписи — нетривиальная задача.
- Устаревший протокол обмена ключами .
В 21 веке, когда разработчики практически не встречаются лично, организовать обмен ключами по принципу p2p не очень удобно и нужны инструменты для более быстрого распространения и отзыва подписи.
Совет
Лучший совет в этой ситуации:- Разделяйте ключи по задачам (это поможет избежать утечки мастер-ключа или использования ключа разработчика для подписи релиза).
- Дублируйте информацию в нескольких источниках, например на официальном сайте и на Github (взломать два ресурса одновременно сложнее, чем один).
- Создавайте удобочитаемые URL-адреса (их легче запомнить и проверить).
инструкции
Если вы еще не используете ключи PGP, я настоятельно рекомендую включить проверку подписи в свой рабочий процесс.Даже если вы не разрабатываете финансовые проекты, лучше всего автоматизировать этот навык до того, как он вам понадобится.
Часа-другого времени достаточно, чтобы начать, но удовольствие, которое вы получите потом, невозможно измерить.
Использование GPG с Git
- Загрузите программное обеспечение для управления ключами:
- Linux (установка не требуется, используйте
gpg2
- MacOS Инструменты GPG .
- Окна GPG4Win .
- Linux (установка не требуется, используйте
- Генерация ключа:
> gpg2 --gen-key
- Получаем отпечаток ключа:
> gpg2 --fingerprint user@localhost gpg: checking the trustdb gpg: marginals needed: 3 completes needed: 1 trust model: pgp gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u gpg: next trustdb check due at 2020-07-01 pub rsa2048 2018-07-02 [SC] [expires: 2020-07-01] E5F1 2C73 045F 1E85 302D A9D5 269E 7C5E B852 68BB uid [ultimate] User <user@localhost> sub rsa2048 2018-07-02 [E] [expires: 2020-07-01]
- Добавьте ключ в git (см.
переполнение стека ):
> git config user.signingkey E5F12C73
- Подпишите коммиты, добавив ключ -S:
> git commit -S -m 'Signed commit'
- Ээкспортировать ключ:
> gpg2 --armor --export user@localhost -----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFs6VDsBCADzd5F4jaJr7Dzp11+h5CmnRNHGSTWOMQe+TSXljR351BCF9hS6 VrIizaPCVkLW/ATsqdf6vZEApvbQplwHecFPwMpFhusTOILk7lsuXm8w5CscqgBo KiZdSBa9bpWmFrSsPgD8/2VMlQdh+3uChOKapsLo7cHKXNuWX8b1L30twNwgavMc Sel/3clO7Bwp9cFftyktsM/HtSUu1oaE//dibS60HzwmscPHsIIoYsfUSCEOj08f DwK2vLbPilYKyE7fONJpXCSPk5pfDnNxzdFWylNBTQL8benhCtSyfabbtHmeywe+ VWfRAGf/BRjjb7meAMX5vO6qh1l4FfHVo7irABEBAAG0FVJ1bWtpbiA8c3BhbUBy dW1rLmluPokBVAQTAQgAPhYhBOXxLHMEXx6FMC2p1SaefF64Umi7BQJbOlQ7AhsD BQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJECaefF64Umi7e4kIALs2 0wbQ0g5557cIbN/eXeK+DsyZFyp3D95RoOnLgWiDknVBluRyPY1QFkjKgNNepMNr 7TM1eNev1CcSDLkuUxlLMrDH9AsAIVWFl7v1+/npJuHkazylU2DgssWICF0yKgWZ tzOQUEDwX7xwIJ3g5v44Lymq0hPi56FVv+rq15hkNsqIOyjDQNVGROUURyO/+vUP khOa2ryjWCpdBzoRNxSyVMlyoABLHwTfXDkCFHV9T7bOa/o0GqILOZ7wCBN9tT5C 38ellwu/HTCtmzZsWvl3a6g8JcunB9yV3RZFQgUDvLEjiVoY2qqn/SWgcl6QR2Ro aEwTKk/p3PU1Foz7mEC5AQ0EWzpUOwEIAPbKGT/xzJ9JvXhMyoOGQZNWkqyXKtV4 zVdfdjxkWMrsMD/C2K1CQ5HPafTM9G/kATGCAmoFPCdLwrc9QqOw3H8PNxnph3Ca irvp0ICj6KDiuCCuptJYICzllKriyLhUDyFkb7GPpRgHpKJZMVCkRbDEau3jcJEx jsdUnjf3gDpEnkuV1pwSxGFxTV3vHNQBqGbFG8mjVkfZSnB++e+tyKPhC5X0QFue K2AlHbnj0/uXZ9wYfRTOJsbW6myR0k1edo7Y5P93fhpW49wwaMTe2Q9p+m6zRguf 8vC9sGUB/eGD9+6OwtIZJ6ZlUa8/MYUBr9er/z+hl7ApdpibChCb8lUAEQEAAYkB PAQYAQgAJhYhBOXxLHMEXx6FMC2p1SaefF64Umi7BQJbOlQ7AhsMBQkDwmcAAAoJ ECaefF64Umi7e3UIAO9ixyXaKmsfWVB11tYPHP+9Xo2s0RRanNMyqAcp1se3jQBZ Z7gfr7DBFBFPU0KeOibWXysMz54hXImxDgYQPKFznzKB5463DiZt8pYjxdphX4/j m6ccw1GnpImRJHpu3mMPSItd/QDqEl87KqSw+IojaLDid3QeL0uRzi2k5/Jwz6ru QMCwdKIMBDPw936YOsfHjQx1RTY9NC59cW1i0lU813By1J80hd24aIJH5vVyYI/I suz153mZUZ+dmN0F6wfnuqNzeCfJRoHKh45ABDD3cRQ2kE76UQ4Kr0xb0G512yUO WJFT8ff3EWn1FulR7bmprA4HHACyx/otL7P777E= =zi5u -----END PGP PUBLIC KEY BLOCK-----
- Копируем результат и добавляем его в доверенные ключи в интерфейсе Github, Gitlab или Bitbucket.
Заключение
Сегодня инфраструктура доставки кода страдает детскими болезнями: фрагментация, отсутствие устоявшихся практик, программное обеспечение, не соответствующее действительности, а разработчики даже крупных проектов под пристальным взглядом тысяч глаз умудряются совершать даже самые простые ошибки, когда дело касается безопасность.Поэтому доверяйте, но проверяйте %username%! В опросе могут участвовать только зарегистрированные пользователи.
Войти , Пожалуйста.
Используете ли вы подпись PGP 13,16% Да, всегда 5 23,68% Да, периодически 9 63,16% Нет 24 Проголосовали 38 пользователей.
17 пользователей воздержались.
Теги: #информационная безопасность #криптовалюты #программирование #безопасность #криптография #цифровая подпись #gpg #gpgtools #gpg4win
-
Розин
19 Oct, 24 -
А.cms V1.17. Мы Начинаем Выходить На Рынок.
19 Oct, 24 -
.Net Framework. Управление Памятью
19 Oct, 24 -
Золотая Эра Linux?
19 Oct, 24