Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
DB_Audit_Research — Self-Defeating Audits: воспроизводимый лабораторный стенд, демонстрирующий, как роль PostgreSQL с низкими привилегиями обратимо ослепляет триггерного аудитора, а также отравляет атрибуцию (PG14/16), с описанием мер защиты. Синтетические данные; упомянуты примитивы CVE-2018-1058. | Kitploit
Инструменты/GitHubGitHub/mthamil107/db_audit_research
Оборонительные ИнструментыЭксплуатацияСтатьи и ИсследованияНеправильная КонфигурацияБезопасность Баз ДанныхСостязательная АтакаЛаборатории и Практика
GitHubmthamil107/db_audit_research

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

DB_Audit_Research

Self-Defeating Audits: воспроизводимый лабораторный стенд, демонстрирующий, как роль PostgreSQL с низкими привилегиями обратимо ослепляет триггерного аудитора, а также отравляет атрибуцию (PG14/16), с описанием мер защиты. Синтетические данные; упомянуты примитивы CVE-2018-1058.

Репозиторий
2 дней назадЕщё не проверено

Самоопровергающиеся аудиты — воспроизводимый лаб.

DOI  Лицензия: MIT (код) / CC BY 4.0 (документация)

Исследование в области защитной безопасности, проверяющее, может ли малопривилегированная, только-инъекционная роль базы данных обратимо ослепить триггерный аудит и отравить атрибуцию на стандартном PostgreSQL — и какие защиты это реально останавливают. Всё запускается в одноразовых локальных Docker-контейнерах с полностью синтетическими данными (документационные IP из RFC 5737, вымышленные личности). Никакие реальные системы, учётные данные или данные не задействованы.

См. краткое описание лаборатории в self-defeating-audits-lab.md.

Что это делает

Строит широко копируемую с wiki PostgreSQL «аудиторную триггерную» жертву, затем проходит матрицу выполнимости ячейка за ячейкой на PostgreSQL 14 и 16, измеряя — вне полосы — действительно ли каждый вектор атаки останавливает запись от аудита, обратим ли он с нулевым остатком, и какие защиты его убивают.

Запуск

root@kitploit:~
cd scripts
./00_up.sh 16          # поднять postgres:16-alpine на localhost:55432
./run_matrix.sh 16     # прогнать все ячейки матрицы + защиты -> ../results/RESULTS_pg16.md
docker rm -f sda_pg16  # освободить порт между версиями
./00_up.sh 14
./run_matrix.sh 14     # -> ../results/RESULTS_pg14.md
./teardown.sh          # удалить все контейнеры лаборатории

Требуется Docker. Используются образы -alpine (функционально идентичный движок).

Кросс-движковое расширение (семейство MySQL + SQL Server)

Исследование воспроизведено ещё на двух семействах движков. Семейство MySQL (MariaDB, модель триггеров DEFINER) — в scripts/mysql/:

root@kitploit:~
cd scripts/mysql
./00_up.sh 10.11 && ./run_matrix_mysql.sh 10.11   # -> results/RESULTS_mariadb_10.11.md
docker rm -f sda_maria_10_11 && ./00_up.sh 10.6 && ./run_matrix_mysql.sh 10.6

SQL Server (модель ownership-chaining) — в scripts/mssql/; выполняется на локальном экземпляре LocalDB через хост-sqlcmd (без Docker; малопривилегированный атакующий моделируется имперсонацией EXECUTE AS USER):

root@kitploit:~
cd scripts/mssql
./run_matrix_mssql.sh        # -> results/RESULTS_mssql.md ; затем ./teardown.sh

Оговорка о воспроизводимости (SQL Server). В отличие от Docker-движков, третья часть на SQL Server имеет зависимость от хоста: она запускается на локальном экземпляре SQL Server LocalDB через sqlcmd (путь жёстко прописан в run_matrix_mssql.sh), поэтому работает только в Windows и не может быть привязана к дайджесту образа. Малопривилегированный атакующий моделируется имперсонацией EXECUTE AS USER (LocalDB поддерживает только Windows-аутентификацию). Выводы о поведении движка (DISABLE с нулевым остатком; DDL-защита не замечает DISABLE) не зависят от типа сессии и сохранились бы для реального логина; выводы о правах на объекты честно воспроизводятся имперсонацией. Это наименее переносимая из трёх частей — указано честно.

Главный кросс-движковый результат: класс теней search_path (1A/1B) не переносится ни на MySQL, ни на SQL Server (там нет search_path), а вот замена триггера, спящий обход и отравление атрибуции — переносятся. Привязка привилегий DEFINER в MySQL делает ослепление более обнаружимым; SQL Server, как и PostgreSQL, допускает побайтно точное восстановление и добавляет примитив DISABLE TRIGGER с нулевым остатком, который не замечает его собственная DDL-защита. Полное сравнение трёх движков — в FINDINGS.md.

Структура

Главный результат

  • 1A — внедрение тени в новую схему — проваливается уже на настройке (свежая роль не может CREATE SCHEMA), а не потому что «побеждает pg_catalog». Внедрение в уже записываемый public создаёт тень: и 1S (та же сигнатура, порядок схем), и 1T (точная перегрузка побеждает встроенную даже при pg_catalog первом — изолирует специфику типов) ослепляют (payload обнулён).
  • 1B — точная перегрузка row_to_json для составного типа — ослепляет аудитора, когда public доступен на запись, а search_path триггера не закреплён. Достижимо на стандартном PostgreSQL ≤14; на 15+ — при неправильной конфигурации. Закрепление search_path побеждает её везде.
  • 1C — замена функции аудита, принадлежащей приложению, — ослепляет и обратима с чистым object-diff (дословное воспроизведение исходника) — однако канарейка запись-против-аудита и DDL event-trigger всё равно её ловят.
  • GUC-управляемая спячка и внутрибазовое отравление атрибуции работают при своих (неправильно-сконфигурированных) предусловиях; подделанная строка аудита неотличима от одной лишь таблицы аудита.
  • Логирование на уровне движка (pgaudit/) + — это защиты, которые закрывают весь набор.

Позиция по ответственному раскрытию

Воспроизведено на стандартном PostgreSQL в локальной лаборатории с анонимизированными/синтетическими данными. SQL атак ограничен схемой лаборатории, построенной здесь; это исследование выполнимости/защит, а не оружизированный payload. Базовые примитивы уже публичны (CVE-2018-1058; эскалация search_path в SECURITY DEFINER) — вклад состоит в композиции и в оценке защит. Никакая реальная система не идентифицируется.

Скачать инструмент
ПутьЧто это
scripts/00_up.shодноразовый контейнер с зафиксированной версией (PostgreSQL)
scripts/mysql/жертва, атаки, защиты и оркестратор для семейства MySQL (MariaDB)
scripts/mssql/жертва, атаки, защиты и оркестратор для SQL Server (LocalDB)
results/RESULTS_mariadb_*.mdматрицы выполнимости и защит для семейства MySQL
results/RESULTS_mssql.mdматрица выполнимости и защит для SQL Server
scripts/10_victim.sqlаудиторная жертва по wiki-шаблону (триггер SECURITY DEFINER); параметры: pub_create, pin_path, app_owns
scripts/20_attacks.sqlвсе векторы атак (1A/1B/1C, GUC-спячка, отравление атрибуции), по одной \if-защите на ячейку
scripts/30_defenses.sqlDDL event-trigger защита + хэш-связанное append-only хранилище
scripts/40_snapshot.sqlснимок каталога для RQ2-сравнения объектов
scripts/run_matrix.shоркестратор: собирает каждую ячейку, измеряет, пишет results/RESULTS_pg<VER>.md
scripts/teardown.shудаление контейнеров
results/RESULTS_pg14.md, results/RESULTS_pg16.mdзаполненные матрицы выполнимости и защит по каждой версии
results/_evidence_pg*.log, results/_snap_1C_*.txtсырые свидетельства команд/вывода
FINDINGS.mdвыводы RQ1–RQ5 простым языком, матрица защит×атак, позиционирование новизны, аннотация
log_statement
хэш-связанное хранилище