man smart-home

man smart-home 

Закулисная жизнь блога про умный дом

43subscribers

34posts

goals1
9 of 10 paid subscribers
Лиха беда начало.

Маленькая железка, которая защищает вас (пользователей моих интеграций)

Программист компании GitHub установил вредоносное расширение для VS Code, которое помимо прочего выкрало SSH-ключи для доступа к внутренним репозиториям. Ранее похожим образом были скомпрометированы компьютеры двух работников компании OpenAI.
Как эти новости связаны с man smart-home и зачем нужна эта странная «флешка»?

Разработчики ПО — цель для кибератак

А как вообще разраб GitHub умудрился установить подозрительное расширение? Разве он не понял, что это вирус?
Речь идёт о расширении Nx Console, которое не вызывает подозрений:
  • Этот проект существует уже более 5 лет.
  • У Nx Console хорошие оценки и полмиллиона скачиваний.
Как же так получилось, что такое популярное расширение оказалось зловредным?
Автора Nx Console взломали и от его имени выпустили вредоносное обновление, а ничего не подозревающие пользователи просто его скачали. Одним из таких пользователей оказался сотрудник компании GitHub.
Такая схема взлома называется Supply Chain Attack (атака на цепочку поставок): злоумышленники не атакуют жертву напрямую, а проникают в систему через сторонних поставщиков ПО или подрядчиков, которым организация доверяет.

Вы — конечная цель атаки

Скорее всего, вы знаете, что я автор интеграций для Home Assistant (и не только). Возможно, вы даже пользуетесь, например, аддоном CloudPub или интеграцией с YandexGPT.
Мои проекты не такие популярные, как Nx Console, и для злоумышленников я не настолько желанная цель, как сотрудники GitHub или OpenAI. Тем не менее хакеры всё равно могут заинтересоваться моей персоной: потому что через меня можно подобраться к вам —  к пользователям моих интеграций.
Гипотетически, чтобы выпустить вредоносное обновление от моего имени, злоумышленникам нужно получить доступ:
  • К моему аккаунту на сайте GitHub.com*;
  • Или к SSH-ключу для доступа к репозиториям.
*Недавний взлом сотрудника GitHub мои проекты не затронул — пострадали только внутренние репозитории компании. Переживать не о чем.

Как я защищаю себя и вас?

Чтобы организовать работу над проектами удобно и безопасно, я приобрёл аппаратный ключ YubiKey 5 Nano. Эта маленькая штука обеспечивает безопасный доступ к репозиториям и аккаунту на GitHub, а ещё подписывает код цифровой подписью.

Защита доступа к репозиториям

Для публикации кода используется протокол SSH. Доступ по SSH не требует логина и пароля, но вместо них нужен приватный ключ.
Хранить его можно по-разному:
  • SSH-ключ можно сохранить на диске в открытом виде, но рано или поздно его сопрут. С этим ключом злоумышленники смогут выпустить вредоносное обновление и скомпрометировать всех по цепочке.
  • Более безопасный вариант — зашифровать ключ паролем или положить его в KeePassXC. Безопасно, но придётся часто вводить пароль.
  • А если не хранить ключ на диске вообще, то получим максимально безопасный вариант.
И вот аппаратный токен — это и есть тот самый максимально безопасный вариант. Потому что извлечь приватный ключ из YubiKey невозможно.
Генерация и хранение ключа происходят внутри защищённого крипто-процессора, а сам ключ никогда не покидает пределов чипа. Поэтому его нельзя скопировать — тем более удалённо.
Сам девайс просто торчит из USB-порта. Когда нужно подключиться к серверу, то мне достаточно коснуться ключа пальцем, чтобы он одобрил соединение.
Аппаратные токены — это отличный баланс между удобством и безопасностью. Вместо ввода пароля — одно касание, вместо хранения на диске — чип, который не склонировать.
Помимо доступа к репозиториям на GitHub, аппаратные токены можно использовать для подключения к любым серверам по SSH. В последних версиях OpenSSH уже есть поддержка FIDO2, хотя в интернете до сих пор полно инструкций, где для SSH предлагают использовать PIV.

Единственное, что мои пользователи должны знать

Цифровая подпись — это то, как можно отличить мои коммиты от фальшивых.
К своему GitHub-аккаунту я привязал публичный GPG-ключ. Когда я подписываю коммит касанием YubiKey — GitHub сверяет подпись и показывает зелёную отметку Verified. Без физического доступа к моему токену такую подпись не сделать.
Если вы пользуетесь моими интеграциями и вдруг замечаете подозрительное обновление, то не поленитесь и зайдите на страницу проекта. В описании релиза должна быть зелёная отметка рядом с хэшем коммита — это значит, что коммит подписан моим приватным ключом.

Защита доступа к аккаунту

Всё, что я описал выше — это специфические программистские штуки. А вообще аппаратные ключи чаще используют для авторизации на сайтах (FIDO). Правда свой YubiKey я приобрёл не для этого. 🙂
Потому что двухфакторной аутентификации по TOTP-кодам достаточно для безопасного доступа к аккаунтам на сайте. Понятно, что вводить логин, пароль, а потом ещё лезть в приложение за одноразовым кодом — неудобно. Но если вы регулярно пользуетесь каким-то определённым сайтом, то процедуру авторизации нужно пройти один раз: дальше всё работает, пока не слетит сессия.
Тем не менее, раз уж у меня есть аппаратный ключ, то я его использую и для входа на сайты тоже. Процесс похож на доступ по SSH:
  1. Браузер запрашивает PIN-код, чтобы сайт мог посмотреть список ваших учётных записей.
  2. А затем нужно коснуться ключа, чтобы войти в аккаунт.
Обычно аппаратные токены настраиваются просто в дополнение к существующему способу входа. Но, например, Google предлагают программу дополнительной защиты. После вступления в программу авторизация по логину, паролю и TOTP отключается — войти можно будет только с помощью аппаратного ключа.
Выше я упомянул, что двухфакторная аутентификация — это уже безопасно, но аппаратные ключи всё равно безопаснее. 🙂 Потому что аппаратный ключ не даст вам авторизоваться на фейковом сайте githab.com или gooogle.com — токен проверяет адрес сайта, на который вы заходите.

Нужен ли аппаратный токен вам?

Этим постом я хотел показать, как защищаю свои проекты, а значит — и вас от атак по цепочке. Теперь вы знаете, на что обращать внимание, чтобы проверить подлинность моих коммитов и релизов.
Но нужен ли такой ключ лично вам? Я бы сказал, что двухфакторной аутентификации в большинстве случаев достаточно.
Google рекомендуют регистрироваться в программе дополнительной защиты журналистам, активистам, руководителям компаний и тем, кто участвует в выборах. Если вы в этом списке — задумайтесь о покупке аппаратного токена.
Единственное, в гугловый список я бы ещё добавил популярных блогеров и разработчиков open source проектов. Из-за своей публичности они часто становятся мишенью для кибератак. Я сам не настолько известен, но решил действовать на опережение. 🙂
Простые токены для авторизации на сайтах (без OpenPGP) стоят не очень дорого, но если вы пока не готовы тратить деньги на такой гаджет, то начните с создания passkey в KeePassXC или похожем менеджере паролей. Так вы хотя бы примерно поймёте что к чему.
Subscription levels3

☕ На чашку кофе

$1.78 per month
Безвозмездная поддержка автора — для питания организма, преобразующего кофе в статьи и код.
 
В благодарность за поддержку:
➕ Доступ к закрытым статьям.
➕ Лаборатория в Telegram.
+ chat

🌯 На гирос

$3.6 per month
По вашему желанию можете оформить подписку на чуть большую сумму.
 
В благодарность за поддержку:
➕ Доступ к blueprint'ам для Home Assistant + Easy Mesh to Telegram.
+ chat
Subscription Spots Are Limited

🍕 На пиццу

$8.9 per month
Можете оформить подписку на еще большую сумму.
 
В качестве «спасибо»:
➕ Личная консультация 1 раз в месяц (до 30 минут).
➕ В рамках консультации возможен созвон, помощь по удалёнке, помощь с написанием шаблонов и автоматизаций.
 
Напишите в Telegram для получения подробностей.
+ chat
Go up