Библиотека хакера | Hacking, Infosec, ИБ, информационная безопасность
12.6K subscribers
2.78K photos
205 videos
260 files
3.93K links
Все самое полезное по инфобезу в одном канале.

Наши курсы: https://clc.to/wPiZMA

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @tproger_sales_bot

РКН: https://gosuslugi.ru/snet/67ab0e2e75b36e054ef6d5bf

Заявка: 8137850953
Download Telegram
У образа есть подпись. Чья?

В keyless-проверке Cosign важно заранее определить, какому подписанту вы доверяете. Наличие корректной подписи от постороннего издателя не выполняет вашу политику доверия.

У cosign verify для этого есть два параметра:

— --certificate-identity задаёт ожидаемую identity подписанта.
— --certificate-oidc-issuer задаёт ожидаемого OIDC-провайдера identity подписанта.

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

По умолчанию Cosign также сверяет digest образа с digest в payload подписи. Параметр --check-claims=false отключает проверку утверждений в payload. Это не безобидный способ убрать ошибку в CI.

Даже корректная подпись ожидаемого издателя не доказывает отсутствие уязвимостей в образе. Она отвечает на другой вопрос: соответствует ли подписанный артефакт заданным условиям доверия.

Sigstore: проверка identity, issuer и claims

Библиотека хакера

#resource_drop
❤1
😎 Выбираешь один курс, второй получаешь бесплатно. Баг? Нет, акция!

До 31 октября в Proglib Academy можно выбрать два курса и заплатить только за один.

Например, можно совместить:

💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.

💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.


Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽ 🔥

Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога.

Акция действует до 31 октября включительно ⏳

⏬ Собрать свой учебный билд
Please open Telegram to view this post
VIEW IN TELEGRAM
Falco: одно or меняет смысл детекта

Есть условие для открытия файла процессом Apache:

evt.type=open and proc.name=apache


Хочется добавить nginx. Но при дописывании or proc.name=nginx через override Falco просто присоединяет текст к исходному условию. Получается логика «Apache открывает файл ИЛИ nginx делает что угодно».

Если нужны открытия файлов обоими процессами, итоговое условие должно группировать имена:

evt.type=open and (proc.name=apache or proc.name=nginx)


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

Локальный override загружается после базового определения. Для новых настроек используйте секцию override с нужным действием append или replace. Старый верхнеуровневый append: true помечен устаревшим.

Перед внедрением проверьте в лаборатории и события, которые должны вызвать алерт, и те, которые должны пройти без него. Сам алерт ещё не подтверждает инцидент.

Falco: override и приоритет логических операторов

Библиотека хакера

#cheat_sheet
Отчёт CSP пришёл. Блокировки могло и не быть

Заголовок Content-Security-Policy-Report-Only помогает увидеть нарушения будущей политики, но сам ресурсы не блокирует. Это режим наблюдения перед включением ограничений. Через HTML meta-тег его задать нельзя, нужен HTTP-заголовок.

В руководстве web.dev strict CSP строится на nonce или хешах скриптов, а не только на списке разрешённых доменов. Выбор зависит от того, как отдаётся HTML:

— Для серверного рендеринга подходит nonce: криптографически случайное непредсказуемое значение, новое для каждого ответа. Постоянный nonce в шаблоне эту задачу не решает.
— Для статического или кешируемого HTML подходят хеши inline-скриптов. Изменились пробелы внутри скрипта, изменился и хеш.

strict-dynamic распространяет доверие на скрипты, которые динамически создаёт уже доверенный скрипт. Поэтому инъекция в URL такого загрузчика всё ещё опасна.

Перед включением блокировки уберите несовместимые inline-обработчики и javascript: URI, проверьте приложение локально и на staging. Report-Only поможет оценить нарушения на реальном трафике. Затем ограничения включаются заголовком Content-Security-Policy.

CSP дополняет исправление XSS, а не заменяет его. Полные образцы политики и порядок внедрения есть в руководстве web.dev.

Библиотека хакера

#resource_drop
👍1
Security-лог не должен становиться хранилищем токенов

Для расследования отказа в доступе нужны время, приложение, действие, результат и контекст пользователя. Полный заголовок Authorization для этого обычно не нужен. Зато его запись создаёт ещё одно место, откуда можно украсть токен.

OWASP предлагает связывать события одной операции через interaction ID. Так можно сопоставить запрос, ошибку проверки и итог операции, не складывая в журнал пароли, ключи шифрования и значения сессий.

Отдельная ловушка: поля лога тоже могут прийти от атакующего. Переводы строк CR/LF и разделители требуют обработки, а значения нужно кодировать под формат вывода. Иначе пользовательское поле способно превратиться в поддельную строку журнала.

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

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

OWASP Logging Cheat Sheet

Библиотека хакера

#cheat_sheet
📌 Один курс — хорошее вложение в себя. Два по той же цене — ещё лучше.

В Proglib Academy действует акция: покупаешь один курс, а второй получаешь в подарок.

Например, можно совместить два направления по работе с ИИ:

💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.

💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.


📍 Разница в цене — почти 50 тысяч рублей. Можно освоить больше, не выходя за рамки запланированного бюджета.

А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога.

Акция действует до 31 октября включительно ⏳

⏮️ Пора прокачать свой стек
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
RuntimeDefault не обязательно включён по умолчанию

В Linux seccomp ограничивает системные вызовы процесса. В Kubernetes профиль RuntimeDefault можно запросить явно. Фрагмент спецификации Pod:

spec:
securityContext:
seccompProfile:
type: RuntimeDefault


Так профиль запрашивается на уровне Pod.

Если профиль не указан, решает конфигурация kubelet. При включённом seccompDefault используется RuntimeDefault, иначе документированный вариант по умолчанию — Unconfined, без seccomp-ограничений.

Есть два существенных ограничения:

— Профиль определяет container runtime. Набор разрешённых вызовов может различаться между runtime и версиями. Рабочая нагрузка способна сломаться, если нужный syscall запрещён.
— Контейнер с privileged: true работает как Unconfined. Назначением seccomp-профиля это не исправить.

Включение node defaulting не дописывает поле в YAML Pod. Для проверки фактически применённого профиля документация предлагает смотреть runtime specification через crictl inspect. Начните с части узлов и проверьте рабочие сценарии перед расширением внедрения.

Kubernetes: профили seccomp и RuntimeDefault

Библиотека хакера

#cheat_sheet
👍1🔥1
capa: от совпадения к ручной проверке

HTTP, XOR, создание процессов: capa ищет в программе признаки таких возможностей по набору правил. При статическом анализе это ещё не доказательство, что файл выполнил каждое действие.

Флаг -vv показывает, какие признаки совпали с правилом и по каким адресам их искать при ручном разборе. Для просмотра результатов есть Explorer Web и standalone HTML для локальной работы.

Упаковка и обфускация могут скрыть признаки, а установщики и рантаймы — усложнить трактовку. На скриншоте — исходный пример Explorer с capa 7.0.1 от 2024 года. Это иллюстрация интерфейса.

Репозиторий и примеры
#tool_of_the_week

Библиотека хакера
🌚1
Replay включён. Куда уйдёт незаписанный запрос?

Если mitmproxy не нашёл подходящий сохранённый ответ, по умолчанию запрос уйдёт на настоящий сервер. У server_replay_extra значение forward.

Для лаборатории, где такой выход не нужен, задайте server_replay_extra=kill. Несопоставленные запросы будут прекращаться. Это поведение server-side replay, не гарантия полной изоляции стенда.

Есть ещё два важных значения по умолчанию: server_replay_reuse=False и server_replay_refresh=True. Ответы не переиспользуются, а временные заголовки и сроки cookie обновляются. Учитывайте это при анализе исходных временных значений.

Работайте с разрешённым лабораторным трафиком. Сохранённые потоки могут содержать секреты.

Server-side replay
#cheat_sheet

Библиотека хакера
🌚1
Offline collector: endpoint работает, связи с сервером нет

Offline collector Velociraptor запускается на работающей ОС. Он выполняет заранее выбранные VQL и artifacts, затем сохраняет результаты, лог и метаданные в ZIP-контейнер. Это сбор без обычного client-server канала, не анализ выключенного диска.

Набор artifacts выбирают до передачи коллектора. Права на чтение данных всё равно нужны. Шифрование ZIP настраивают отдельно: фиксированный пароль можно извлечь из конфигурации. Документация рекомендует X.509 со случайным паролем, защищённым сертификатом.

На скриншоте другой параметр: Generic Collector. Он отделяет конфигурацию и tools от подписанного бинарника. На macOS используют этот вариант, потому что встраивание config нарушает подпись.

Устройство и настройка collector
#resource_drop

Библиотека хакера
Миграция с VMware, домашний кластер, выросший из одного ноутбука, и ИИ для работы с инцидентами

Всё это на митапе Deckhouse User Community 12 ноября в Москве.

В программе три доклада:
— опыт НИУ «МИЭТ»: как университет переходит с VMware на виртуализацию Deckhouse — от пилота до миграции ВМ и резервного копирования;
— 13 лет домашней инфраструктуры: от одного ноутбука до геораспределённого кластера из нескольких квартир и дата-центров;
— IncidentGPT на практике: от участия в Open Source-проекте до внедрения в компании, а заодно переход с Prometheus на Deckhouse Prom++ ради экономии памяти.

Нетворкинг после основной программы тоже будет. :)

Где: People Loft, 1-я улица Энтузиастов, д. 12 (метро и D3 «Авиамоторная»).
Когда: 12 ноября, начало в 19:00. Сбор в 18:15, приходите! Возьмите с собой паспорт или водительское удостоверение.

Митап пройдёт только офлайн. Для участия зарегистрируйтесь на Timepad и дождитесь письма-подтверждения.