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

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

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

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

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

Категории

Все категории
Loading categories
shiro-check — Выявляет фактически установленные у вас модули и версии Apache Shiro и по каждому пункту определяет, какие из 26 официальных CVE действительно вас затрагивают. Определение по принципу «CVE × модуль», без зависимостей, один jar. CVE-2026-49268 | Kitploit
Инструменты/GitHubGitHub/xiaoqimikko/shiro-check
Статический анализСканеры уязвимостейАнализ уязвимостейDevSecOpsБезопасность Цепочки Поставок
GitHubxiaoqimikko/shiro-check

shiro-check

Выявляет фактически установленные у вас модули и версии Apache Shiro и по каждому пункту определяет, какие из 26 официальных CVE действительно вас затрагивают. Определение по принципу «CVE × модуль», без зависимостей, один jar. CVE-2026-49268

Репозиторий
1 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

shiro-check

Определяет фактически установленные модули и версии Apache Shiro и по каждому пункту проверяет, какие из 26 официальных CVE действительно затрагивают вашу систему.

Единственный jar без зависимостей, без подключения к сети, не читает ваш pom — напрямую сканирует артефакты сборки (jar / war / fat jar / каталог).

java -jar shiro-check.jar --utf8 your-app.jar

Почему нельзя «просто взглянуть на номер версии и на этом закончить»

CVE в Shiro привязаны не к «Shiro» в целом, а к конкретным модулям. Один и тот же номер в разных модулях означает разные правила:

CVEЗатронутый модульТе, кто использует только shiro-core
CVE-2020-17510shiro-springНе затронуты
CVE-2020-17523shiro-web / shiro-spring / shiro-spring-boot-starterНе затронуты
CVE-2023-34478shiro-webНе затронуты
CVE-2026-56091shiro-guiceНе затронуты

Из 26 официальных записей 13 вообще не касаются shiro-core. Свести их к одной фразе «в Shiro < 1.7.1 есть уязвимости» — значит принять за пользователя решение, которое он должен принять сам, — и притом принять его неверно.

Гранулярность проверки в этом инструменте — CVE × модуль: 26 CVE развёрнуты в 37 правил, охватывающих 7 модулей.

Три вещи, невидимые при сопоставлении по координатам

1. 5 записей не попадают в оповещения Dependabot

Dependabot сопоставляет зависимости по координатам с GitHub advisory. Из 26 записей 5 не совпадают:

ЗаписьПочему не совпадает
CVE-2026-56091 (обход аутентификации shiro-guice, high)advisory всё ещё unreviewed, список затронутых пакетов пуст
CVE-2026-56130 (cookie RememberMe никогда не истекает)то же самое
CVE-2014-0074 (обход при пустом пароле LDAP)то же самое
CVE-2023-22602 (обход аутентификации Spring Boot 2.6+, high)advisory привязан только к org.apache.shiro:shiro-root
CVE-2010-3863то же самое

А shiro-root — это родительский POM с packaging=pom — на Maven Central нет соответствующего jar (HTTP 404), ни один проект от него не зависит, поэтому сопоставление по координатам никогда не сработает.

ℹ️ unreviewed — это нормальное состояние процесса на GitHub (автоматический импорт из NVD, затронутые пакеты ещё не размечены вручную), и сопоставление по координатам — тоже разумный подход. Здесь лишь констатируется факт «не попадает в оповещения», а не утверждается, что кто-то ошибся.

2. В uber jar спрятаны другие модули

shiro-all — это uber jar, в который упаковано несколько модулей. На практике внутри shiro-all-1.3.2.jar обнаружено 6 файлов META-INF/maven/org.apache.shiro/<модуль>/pom.properties:

shiro-all  shiro-core  shiro-web  shiro-spring  shiro-ehcache  shiro-quartz

То есть в проекте, где в pom указан только shiro-all, на уровне координат есть лишь одно имя (из 26 записей только CVE-2016-6802 привязана к этой координате), тогда как в jar фактически лежит код трёх модулей: core / web / spring.

Сканирование реальных артефактов позволяет это увидеть. При проверке одного shiro-all-1.3.2.jar данный инструмент сообщает о 20 записях, охватывающих 3 модуля.

3. Для 3 записей официальную исправленную версию невозможно получить на Maven Central

У 3 advisory значение first_patched_version равно 3.0.0-alpha-2, но эта версия никогда не публиковалась на Maven Central (официально сразу выпущена финальная версия 3.0.0). Обновление до неё невозможно — данный инструмент это отмечает и заменяет рекомендацию по обновлению на фактически доступную версию.

Вердикт не означает «вы скомпрометированы»

«Совпадение» = этот модуль присутствует и его версия попадает в официальный диапазон затронутых версий. Это не означает «уже эксплуатируется» или «обязательно эксплуатируемо».

Подавляющее большинство из 26 записей срабатывает только при определённой конфигурации, поэтому инструмент выводит их раздельно:

  • 🔴 Затронуто при конфигурации по умолчанию — обрабатывать в первую очередь (например, CVE-2026-43827 session fixation)
  • ⚠️ Требуются определённые условия — условия приводятся для каждой записи; если они не выполняются, уязвимость не срабатывает

Примеры условий (дословно по оригинальному тексту официального описания, без экстраполяции):

CVE-2026-49268  仅当使用 DefaultLdapRealm(用户名未转义即拼进 LDAP DN)
CVE-2023-22602  仅当与 Spring Boot 2.6+ 一起使用,且未把
                spring.mvc.pathmatch.matching-strategy 设回 ant_path_matcher
CVE-2026-23903  仅当静态文件放在大小写不敏感的文件系统上(如 macOS 默认设置),
                且 Shiro 里只配了小写的 filter 路径;只影响静态文件

🔴 Инструмент не парсит вашу конфигурацию. Shiro можно настроить в shiro.ini / application.yml / Java-коде, вывод, полученный в результате парсинга, опаснее, чем его отсутствие. Условия явно перечислены, решение за вами — это осознанный дизайн, а не лень.

Использование

# 扫一个 jar / war
java -jar shiro-check.jar your-app.jar

# 扫整个目录(递归)
java -jar shiro-check.jar /path/to/libs

# 连「不适用」的条目也列出来
java -jar shiro-check.jar --all your-app.jar

# Windows 控制台中文乱码时
java -jar shiro-check.jar --utf8 your-app.jar

Возможности распознавания: обычный jar · Spring Boot fat jar (BOOT-INF/lib/) · традиционный WAR (WEB-INF/lib/) · uber jar (shiro-all, с разворачиванием вложенных модулей) · переименованный jar (определяется по pom.properties) · аномальные архивы с путями, записанными через обратную косую черту.

Требуется JDK 17+. Ноль зависимостей во время выполнения.

Откуда взялась таблица решений

Ни одна строка не переписана вручную. tools/gen_rules.py генерирует её из двух первоисточников:

ИсточникЧто предоставляет
shiro.apache.org/security-reports.htmlПолный набор записей, оригинальные тексты описаний, оригинальные тексты условий срабатывания
GitHub Advisory APIЗатронутые координаты модулей, структурированные диапазоны версий, рейтинг

Процесс генерации содержит 12 утверждений; если хотя бы одно не выполняется, процесс прерывается и файл не записывается (защита от ситуации «разбор не удался, сгенерирована пустая таблица, а тесты всё равно зелёные»):

  • Полнота: формулировка h3 в основном тексте и формулировка якорей оглавления должны давать один и тот же набор CVE
  • Прослеживаемость: строки версий вручную заполненных диапазонов версий должны дословно присутствовать в официальном исходном тексте
  • Проверка на практике: принадлежность к модулю должна подтверждаться расположением классов в реальном jar (не принимается «я помню, что это из web»)
  • Исполнимость: каждая версия с исправлением проверяется в Maven Central; недоступные помечаются
  • Утверждения: количество слепых зон Dependabot, межмодульные различия, модули внутри uber jar — всё это должно по-прежнему выполняться

Перед публикацией дополнительно запускается tools/recheck_before_publish.py, который перепроверяет несущие аргументы по второму независимому набору правил (он не импортирует скрипт генерации и не читает его вывод — повторное использование той же логики разбора привело бы к воспроизведению и ошибок вместе с ней).

Ограничения

  • Охватывает только 26 записей на официальной странице security-reports, не включает непубличные проблемы или проблемы сторонних интеграций
  • Диапазоны версий взяты из официальных источников и GitHub; при occasional расхождениях между ними приоритет отдаётся структурированным диапазонам по координатам модуля
  • Конфигурация не разбирается, поэтому для условных записей вам нужно самостоятельно определить, выполняется ли условие
  • Таблица решений — это снимок на момент генерации; GitHub в любой момент может перевести unreviewed в reviewed

English

Скачать инструмент