P
Purple Team Diary's
@purple_team_diary419 подп.
495просмотров
1 сентября 2025 г.
Score: 545
Как безопасно анализировать pickle-файлы без выполнения кода Появилась необходимость реализовать алгоритм, который безопасно проверяет pickle-файлы на предмет backdoor’ов. Используется двухуровневый подход для максимально полного выявления угроз: Уровень 1: Анализ opcodes pickle В байткоде pickle инструкция GLOBAL (opcode 'c') и инструкция STACK_GLOBAL (opcode '\x93') отвечают за импорт модулей и функций. Как работает: • pickletools.genops() декомпилирует байткод и возвращает последовательность инструкций; • Ищем все инструкции с именами 'GLOBAL' и 'STACK_GLOBAL'; • Извлекаем строку импорта из аргумента инструкции; • Проверяем против списка опасных паттернов. Преимущество: Точное обнаружение реально используемых опасных импортов на уровне байткода. Пример анализа байткода: 0: \x80 PROTO 4 2: \x95 FRAME 21 11: \x8c SHORT_BINUNICODE 'os' 15: \x8c SHORT_BINUNICODE 'system' 23: \x93 STACK_GLOBAL # Эта операция будет обнаружена 24: \x94 MEMOIZE (as 0) 25: \x8c SHORT_BINUNICODE 'ls -la' 33: \x94 MEMOIZE (as 1) 34: \x85 TUPLE1 35: \x94 MEMOIZE (as 2) 36: R REDUCE 37: \x94 MEMOIZE (as 3) 38: . STOP GLOBAL-поиск найдет: 'os.system' (из операции STACK_GLOBAL) На этом этапе: Алгоритм уже может пометить файл как опасный. Уровень 2: Текстовый анализ всего содержимого Переход ко второму уровню происходит ВСЕГДА, независимо от результатов первого уровня. Это позволяет обнаружить угрозы, которые не используют явные импорты через GLOBAL операции. Как работает: • Весь файл декодируется в текст (с поддержкой multiple encoding fallback) • Применяются 300+ регулярок по категориям: • Файловые операции (rm -rf, cat /etc/passwd) • Сетевые вызовы (wget, curl, socket operations) • Выполнение кода (eval, exec, динамический импорт) • Кодировние (base64, сериализация) • Привилегии (sudo, chmod, setuid) Найденные совпадения фильтруются через список ложных срабатываний. Анализ происходит БЕЗОПАСНО - мы не исполняем код, а только анализируем структуру и содержимое файла. Результаты обоих уровней агрегируются, и файл помечается как опасный при наличии любых находок на любом уровне. Можно встроить в pipline для SAST-проверок. #DevSecOps
495
просмотров
2377
символов
Нет
эмодзи
Нет
медиа

Другие посты @purple_team_diary

Все посты канала →
Как безопасно анализировать pickle-файлы без выполнения кода — @purple_team_diary | PostSniper