Appsec

Конвейер для недоверенных файлов: архитектура, а не флаг

Конвейер для недоверенных файлов: архитектура, а не флаг

Заключительная часть серии: как построить приём пользовательских файлов так, чтобы уязвимость в парсере осталась локальной неприятностью. Рабочий конвейер на стенде, где каждая граница изоляции проверяется отдельно от остальных — включая случай, когда проба показывала «разрешено» по совершенно неверной причине.

Тихие отказы: сервис сломан, а логи чисты

Тихие отказы: сервис сломан, а логи чисты

Повреждение кучи, которое никто не заметил: процесс отработал с кодом 0, в логах пусто. На стенде измерено, кто и когда ловит запись за границей буфера и сколько это стоит. Главная находка практическая: debug-аллокатор glibc обнаружил все проверенные смещения начиная с одного байта, обошёлся в единицы раз дороже по времени без заметного роста RSS — но по умолчанию он выключен, и включить его можно так, что он не включится.

Тьюринг-полнота и выразительность: чему учит brainfuck

Тьюринг-полнота и выразительность: чему учит brainfuck

Для чистых вычислений brainfuck покрывает тот же класс функций, что и Python, — все вычислимые по Тьюрингу, ни одной меньше. И при этом на нём ничего не пишут. Этот разрыв и есть тема: вычислительная мощность и выразительность — две разные оси, а мы их путаем, потому что обычные языки высоки по обеим. Brainfuck разводит их в чистом виде — и заодно объясняет, почему тьюринг-полнота в конфиге или системе типов чаще беда, чем достоинство

SBOM видит, сканер молчит: слепое пятно вендоренных зависимостей

SBOM видит, сканер молчит: слепое пятно вендоренных зависимостей

Контролируемый эксперимент на живом стенде: один и тот же бинарник FFmpeg, упакованный под каноническим именем, получает 65 уязвимостей, а под вендорским — ноль. Разница только в имени пакета. Почему сканеры образов сопоставляют находки по идентичности компонента, а не по содержимому файла, что из-за этого пропускает Jellyfin, и как это чинить в своём конвейере.

PixelSmash: как 50-килобайтный видеофайл в папке роняет ваш сервер

PixelSmash: как 50-килобайтный видеофайл в папке роняет ваш сервер

Разбор CVE-2026-8461: heap out-of-bounds write в декодере MagicYUV (FFmpeg/libavcodec) из-за рассинхронизации slice_height с chroma vertical subsampling. Срабатывает не от клика по видео, а от генерации превью в файловом менеджере или сканирования библиотеки медиасервера — фикс в FFmpeg 8.1.2, но кто реально уязвим к RCE, а кто просто падает, сильно разнится. Вывод — про изоляцию декодера как рубеж обороны, который не зависит от скорости патчей.

Сканирование уязвимых зависимостей (SCA): Dependabot, osv-scanner, govulncheck

Сканирование уязвимых зависимостей (SCA): Dependabot, osv-scanner, govulncheck

SCA на практике: почему Dependabot показывал 0, а osv-scanner нашёл полсотни; чем различаются базы advisory (GitHub Advisory, OSV, Go vuln DB, RustSec) и методы (presence-based против call-graph govulncheck); плейбук починки транзитивных CVE по экосистемам (Go, Maven, Python, Rust) и честная работа с no-fix и ложными срабатываниями