Если разработчик, выбирая между удобством и безопасностью, выбирает удобство, он не получит ни удобства, ни безопасности

5/Май/2026 zero-trustsecurity

Инженер по безопасности загрузил вредоносный скрипт в свой аккаунт 1280x1080 nice-security-engineering_exw.png
Инженер по безопасности загрузил вредоносный скрипт в свой аккаунт

Прошло всего-навсего пол года, но новостная лента не переставала приносить новые забавные уязвимости.
Как обычно, я не акцентирую внимание на системных уязвимостях в snapd / Rust Coreutils / Flatpak, ядре (Copy Fail, Dirty Frag, Fragnesia, pidfd, PinTheft, GRO Frag) или AppArmor.


Какими бы опасными они не были - они “условно” пассивные, то есть при их наличии необходим ряд факторов и активных действий изнутри или извне для успешной эксплуатации.

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

Потому что это относится к “активным” и непосредственным атакам, им почти не надо сочетания определённых факторов, после загрузки они сразу же поразят репозиторий разработчика, далее соберут его персональную/финансовую/авторизационную информацию, а после этого продолжат действовать по цепочке на всех серверах, к которым у него был доступ.

Если разработчик, выбирая...

Подключение к изолированным системным средам с использованием Waypipe

5/Май/2026 zero-trustsecuritywaypipewayland

Правильный настрой
Правильный настрой 1200x1000
aluminium-tin-foil-hat_exw.jpg

Продолжая предыдущие скучные опусы на тему изоляции окружений, самое время вспомнить про wayland.
Конечно же, это не призыв к действию, а просто примеры и размышления.
Сам я придерживаюсь философии, где центр системы это пользователь, и он в праве настраивать всё так, как он считает нужным, а не так как это навязывается общими тенденциями, или как это реализовано в конкретном дистрибутиве, вместе с этим понимая и принимая все риски и последствия этих действий.
Как говорится, “If you know what you are doing”.


И прежде чем приступить, опять стоит написать, что:

  • Да, я понимаю, что это всё очень поверхностно.
  • Да, никакие подключения к локальной графической оболочке не допустимы для чего-то опасного, и надо использовать vnc или virt-viewer/spice.
  • Непривилегированный LXC надо заменить на Xen / KVM
  • И да, я знаю, что из KVM изоляции тоже можно выйти.
  • И про Flatpak я тоже знаю.
  • И, наконец, да, я знаю о Qubes OS и её архитектуре, можно сказать, с момента её появления, а это 2010 год.


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

И да, в них я запускаю не что-то потенциально опасное, а то, что многие из вас используют непосредственно под своим аккаунтом в системе, например:

  • Firefox для повседневного использования и просмотра “чего попало”.
  • Несколько проектов использующих пакеты из PyPI, RubyGems.
  • Отдельно то, что я собираю из исходников с того же GitHub.
  • Сторонние программы element-desktop, Telegram, Zoom.
Подключение к изолированным...

Как надо (и как не надо) сопровождать вашу систему, GIT и пакеты

10/Январь/2026 zero-trustsecurity

Хороший админ и его сервер
Хороший админ и его сервер 1000x1000
good_admin_and_his_server_exw.jpg

Стандартная ситуация, у вас есть основной рабочий компьютер, на котором у вас три разных проекта.
Один проект на nodejs, второй продакшн на python, а третий ваш личный “pet project”, тоже на python.
А ещё у вас в этой же системе личная+рабочая почта, ну и, скажем, браузер и клиент-банк.
И это всё под вашим пользователем.
Ну не под рутом же! ¯\_(ツ)_/¯
Всё вполне обычно. У многих вполне технически грамотных разработчиков таких проектов могут быть десятки и десятки ключей для ssh или git серверов.

Пример с популярным фреймворком PyTorch


Вполне обыденно Вы пишете свой код, время от времени коммитите, и тут в ваш уютный pet-project с AI прилетает обновление torchtriton.
А после этого из вашей системы улетают следующие наборы данных, в соответствии с основной функцией бинарника, которая делает следующее:

  • Сбор системной информации:
    • nameservers из /etc/resolv.conf
    • hostname из gethostname()
    • текущий логин из getlogin()
    • текущая рабочая директория из getcwd()
    • переменные окружения
  • Чтение следующих файлов:
    • /etc/hosts
    • /etc/passwd
    • Первые 1,000 файлов из $HOME/*
    • $HOME/.gitconfig
    • $HOME/.ssh/*

Обновление прилетело, конфедициальные данные - улетели.
Скомпрометировано не только всё под вашей учётной записью (и, возможно, системой), но и по цепочке всё, чем вы управляли, куда коммитили, куда подключались.

Как надо (и...

Ошибка подключения GitLab Agent: Unauthorized

25/Ноябрь/2025 kubernetesgitlabagentk

Ошибка подключения GitLab Agent 1400x350 kubernetes_gitlab_agent_error.png
Ошибка подключения GitLab Agent

Не вдаваясь в подробности, как именно и почему все организовано, доступ осуществляется по следующей цепочке:

1
Nginx stream ingress <> Main Nginx Frontend <> Nginx Backend inside GitLab instance.

Основной фронтенд управляет поддоменом gitlab, который закрыт для внешнего доступа посредством авторизации auth_basic.

Ошибка подключения GitLab...

Почему стандартные плагины jekyll далеки от идеала

11/Март/2025 jekyllstructured-datanginx

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

Jekyll Structured Data and sitemap.xml 1535x697 jekyll-structured-data-sitemap-and-nginx.png
Jekyll Structured Data and sitemap.xml

Время модификации файла

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

  • ld+json "dateModified": "2025-03-07T15:43:42+00:00"
  • sitemap <lastmod>2025-03-07T15:43:42+00:00</lastmod>
  • headres last-modified: Fri, 07 Mar 2025 15:43:42 GMT
Почему стандартные плагины...
Страница 1 из 2