Расположение приоритетов уязвимостей с использованием Budibase - не требуется дорогостоящих инструментов

Расположение приоритетов уязвимостей с использованием Budibase - не требуется дорогостоящих инструментов

7 августа 2025 г.

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

В моей предыдущей статье я обсуждалКак управлять уязвимостями безопасности с помощью BudibaseПолем В этой статье я направлю вас через свой собственный подход к оценке приоритета восстановления и продемонстрировать, как я интегрировал эту функциональность в платформу Budibase.

Несколько проблем часто возникают в процессе восстановления:

  1. Существует большой объем уязвимостей с различными уровнями риска в разных активах.
  2. Опираясь исключительно на оценки риска CVSS для определения приоритета, не всегда эффективно, как часто показывает тестирование на проникновение.
  3. Некоторые уязвимости не могут быть быстро исправлены из -за плохо разработанных процессов разработки приложений или, в некоторых случаях, отсутствия поддержки поставщиков.

Теория и приоритетные показатели

После сканирования уязвимостей важно проанализировать результаты и установить приоритеты восстановления. Регулярное применение патчей может разрешить большинство уязвимостей с минимальными усилиями.

Тем не менее, есть случаи, когда необходимо тщательно изучить конкретные уязвимости и оценить связанные с ними риски. Если немедленное исправление невозможно, рассмотрите возможность реализации компенсационных элементов управления. Например, если вы идентифицируете уязвимость в инъекции SQL в веб -приложении, которое не может быть исправлено быстро, вы можете использовать брандмауэр веб -приложения (WAF) в качестве компенсационного контроля с соответствующей подписью для этой уязвимости.

В целях оценки я создал интерфейс в Budibase, который позволяет мне количественно оценивать приоритетные уязвимости и экспортировать список в формате .csv для наших коллег.

Я обрисую основные показатели, на которых я построил свои фильтры:

  1. Время с момента раскрытия уязвимости: Чем дольше уязвимость остается непрерывной, тем больше вероятность того, что эксплойт появится в будущем. Тем не менее, со временем, более компенсирующие элементы управления и исправления обычно становятся доступными. И наоборот, если недавно была раскрыта уязвимость, нереально ожидать немедленного исправления от вашей команды. Поэтому я добавил фильтр, чтобы исключить уязвимости, которые моложе X Days.
  2. Активная критичность: This metric assesses the importance of an asset if it would be compromised.
  3. Расположение актива: Этот фактор помогает определить, насколько выставлен актива из неконтролируемых сегментов сети, и какие компенсационные элементы управления применяются в зависимости от его размещения. Я объединил этот показатель с критичностью; Активы, расположенные по периметру, помечены как высокий приоритет.
  4. Уязвимость модность: Это указывает на то, эксплуатируется ли уязвимость в настоящее время. Если поставщик или поставщик интеллекта угроз предлагает трендовый балл, этот параметр может быть использован в фильтре.
  5. Эксплойт вектор: Это получено из метрик CVSS, таких как локальная и отдаленная эксплуатационность.
  6. Используйте доступность: Это указывает на то, существует ли работающий эксплойт для уязвимости.
  7. Серьезность CVSS: Это отражает базовый рейтинг критичности в соответствии со стандартными метриками CVSS.
  8. Доступность патча: Это указывает на то, существуют ли поставщики исправления или обновления для устранения уязвимости.

Эти метрики в совокупности помогают расставить приоритеты уязвимостей на основе их потенциального воздействия и эффективности стратегий реагирования.

Внедрение фильтров приоритетов в Budibase

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

В Budibase фильтрация осуществляется с помощью элементов фильтра пользовательского интерфейса. Выбранное значение передается в качестве переменной для запроса SQL с использованием привязки. Эти переменные настроены в настройках элемента диаграммы. Привязки отображаются в центре изображения ниже, как показано в примере.

В запросе SQL переменные вставляются с использованием двойных кудрявых кронштейнов {{var}} в соответствующих местах. Это обеспечивает полностью функциональный запрос SQL.

All user interface components are organized in containers on the left.

Запрос SQL создается на вкладке Data в разделе подключения базы данных.

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

Примеры запросов SQL с приоритетом для создания панели инструментов

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

Панель инструментов 1: 10 лучших наиболее уязвимых активов

SELECT
COUNT(hostname) AS total, hostname
FROM mat_allassets
WHERE osname ILIKE '%windows 20%' AND status = 'new' AND VulnerabilityIssueTime < CURRENT_DATE - {{days}}::interval AND ( 
 CASE
 WHEN {{ sev }}::text IS NULL THEN TRUE
 ELSE severity = {{ sev }}::text
 END ) AND ( 
 CASE
 WHEN {{expltbl}}::bool IS NULL THEN TRUE
 ELSE metrics ILIKE 'Exploitable: {{expltbl}}%'::text
 END ) AND ( 
 CASE
 WHEN {{netvector}}::bool IS NULL THEN TRUE
 ELSE metrics ILIKE '%HasNetworkAttackVector: {{netvector}}%'::text
 END ) AND ( 
 CASE
 WHEN {{remedy}}::bool IS NULL THEN TRUE
 ELSE metrics ILIKE '%HasFix: {{remedy}}%'::text
 END ) AND ( 
 CASE
 WHEN {{vulntrend}}::bool IS NULL THEN TRUE
 ELSE VulnerIsTrend = '{{vulntrend}}'::text
 END ) AND ( 
 CASE
 WHEN {{hostimport}}::text IS NULL THEN TRUE
 ELSE HostImportance = '{{hostimport}}'::text
 END )
GROUP BY hostname
ORDER BY total DESC
LIMIT 10;

Панель инструментов 2: 10 лучших уязвимых услуг

SELECT
COUNT(hostname) AS total, VulnerableEntity || ' ' || VulnerableEntityVersion AS VulnerableObject
FROM mat_allassets
WHERE osname ILIKE '%windows 20%' AND VulnerableEntity IS NOT NULL AND status = 'new' AND VulnerabilityIssueTime < CURRENT_DATE - {{days}}::interval AND ( 
 CASE
 WHEN {{ sev }}::text IS NULL THEN TRUE
 ELSE severity = {{ sev }}::text
 END )  AND ( 
 CASE
 WHEN {{expltbl}}::bool IS NULL THEN TRUE
 ELSE metrics ILIKE 'Exploitable: {{expltbl}}%'::text
 END ) AND ( 
 CASE
 WHEN {{expltbl}}::bool IS NULL THEN TRUE
 ELSE metrics ILIKE 'Exploitable: {{expltbl}}%'::text
 END ) AND ( 
 CASE
 WHEN {{netvector}}::bool IS NULL THEN TRUE
 ELSE metrics ILIKE '%HasNetworkAttackVector: {{netvector}}%'::text
 END ) AND ( 
 CASE
 WHEN {{remedy}}::bool IS NULL THEN TRUE
 ELSE metrics ILIKE '%HasFix: {{remedy}}%'::text
 END ) AND ( 
 CASE
 WHEN {{vulntrend}}::bool IS NULL THEN TRUE
 ELSE VulnerIsTrend = '{{vulntrend}}'::text
 END ) AND ( 
 CASE
 WHEN {{hostimport}}::text IS NULL THEN TRUE
 ELSE HostImportance = '{{hostimport}}'::text
 END )
GROUP BY VulnerableObject
ORDER BY total DESC
LIMIT 10;

Панель инструментов 3: 10 лучших активных CVE

SELECT
COUNT(DISTINCT hostname) AS total, cve
FROM mat_allassets
WHERE osname ILIKE '%windows 20%' AND status = 'new' AND cve IS NOT NULL AND VulnerabilityIssueTime < CURRENT_DATE - {{ days }}::interval AND ( 
 CASE
 WHEN {{ sev }}::text IS NULL THEN TRUE
 ELSE severity = {{ sev }}::text
 END ) AND ( 
 CASE
 WHEN {{expltbl}}::bool IS NULL THEN TRUE
 ELSE metrics ILIKE 'Exploitable: {{expltbl}}%'::text
 END ) AND ( 
 CASE
 WHEN {{netvector}}::bool IS NULL THEN TRUE
 ELSE metrics ILIKE '%HasNetworkAttackVector: {{netvector}}%'::text
 END ) AND ( 
 CASE
 WHEN {{remedy}}::bool IS NULL THEN TRUE
 ELSE metrics ILIKE '%HasFix: {{remedy}}%'::text
 END ) AND ( 
 CASE
 WHEN {{vulntrend}}::bool IS NULL THEN TRUE
 ELSE VulnerIsTrend = '{{vulntrend}}'::text
 END ) AND ( 
 CASE
 WHEN {{hostimport}}::text IS NULL THEN TRUE
 ELSE HostImportance = '{{hostimport}}'::text
 END )
GROUP BY cve
ORDER BY total DESC
LIMIT 10;

Что все это дает

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

Еда на вынос:Отсутствие бюджета для дорогостоящей платформы управления уязвимостью (VM) не означает, что вы не можете эффективно расставить приоритеты уязвимостей. Многие коммерческие решения виртуальной реальности могут не иметь уровня гибкости приоритетов, который требуется конкретной инфраструктуре.

В следующей статье я изучуЭксплуатировать систему оценки прогнозирования (EPSS), продемонстрировать, как его реализовать в Budibase и добавить функциональность для экспорта списка приоритетных уязвимостей.

Я хотел бы услышать от вас:

  • Вы используете приоритету уязвимости в своей работе?

  • Как вы отслеживаете критические активы?


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE