c# regex - regex для c# - regex c#

DoS-атака на C# Regex: когда шаблоны становятся векторами атак

Когда регулярные выражения мешают производительности  

Одна строка регулярного выражения на C# может поставить на колени весь API в рабочем состоянии. Плохо написанные шаблоны приводят к катастрофическим возвратам, сжиганию ресурсов процессора и блокировке потоков. Это классический пример. Отказ в обслуживании с помощью регулярных выражений (ReDoS) — тонкий, но опасный вектор атаки, скрытый в вашем коде.

⚠️Небезопасный пример, только для образовательных целей. Не использовать в продакшене.

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

Защищенная версия:

Образовательная заметка: Всегда используйте тайм-ауты (RegexOptions + Промежуток времени) и упростить вложенные группы. В регулярных выражениях C# проверка производительности — это требование безопасности, а не оптимизация.

Почему шаблоны регулярных выражений C# становятся уязвимыми

Неоднозначные квантификаторы (.*, .+ или (а+)+) и неограниченное повторение делают регулярные выражения частой целью DoS-атак.
Когда они появляются в пользовательских контекстах, таких как проверка входных данных или анализ журнала, одна специально созданная полезная нагрузка может монополизировать ресурсы ЦП.

⚠️Небезопасный пример, только для образовательных целей. Не использовать в продакшене.

Защищенная версия:

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

Реальное влияние на API и CI/CD Рабочие процессы

Небезопасные регулярные выражения для C# не ограничиваются формами валидации. Разработчики встраивают шаблоны в фильтры журналов, сопоставления веб-хуков и автоматизированные сканирования. CI/CD, один небезопасный шаблон может остановить весь pipeline.

⚠️Небезопасный пример, только для образовательных целей. Не использовать в продакшене.

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

Защищенная версия:

Образовательная заметка: Проверьте входные данные внешнего регулярного выражения перед выполнением. Добавьте явные проверки длины и используйте тайм-ауты. pipelines.

Безопасные методы предотвращения DoS-атак на регулярные выражения в C#

Предотвращение ReDoS-атак в регулярных выражениях C# должно быть интегрировано в вашу разработку и Рабочий процесс DevSecOps. Вот как сделать его безопасным по умолчанию:

Лучшие практики

  1. Всегда устанавливайте тайм-ауты при всех оценках регулярных выражений.
  2. Избегайте катастрофических моделей, нет вложенных квантификаторов или неоднозначных групп.
  3. Ограничить размер входных данных перед переходом к регулярному выражению.
  4. Предварительная компиляция доверенных шаблонов с RegexOptions.Compiled.
  5. Очистка пользовательских выражений или белый список разрешенных шаблонов.

Мини-профилактический контрольный список

  • Проверьте все регулярные выражения на предмет использования C# в вашей кодовой базе.
  • Применить Промежуток времени постоянные тайм-ауты.
  • Ограничьте длину входных данных API и CI.
  • Проверьте производительность регулярных выражений перед выпуском.
  • Автоматизировать статические регулярные выражения сканирование в CI/CD.

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

Как Xygeni обнаруживает рискованное использование регулярных выражений в C#

Ксигени Code Security автоматически обнаруживает небезопасные шаблоны регулярных выражений C# во время статического анализа. Он выявляет катастрофические возвраты, пропуски тайм-аутов и закономерности, которые могут привести к зависанию сервисов. In CI/CD, Ксигени действует как ворота DevSecOps, блокируя небезопасные регулярные выражения для C# перед их слиянием или развертыванием.

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

Ваше регулярное выражение мощное, убедитесь, что оно не превращено в оружие

Уязвимости ReDoS превращают невинное на вид регулярное выражение C# в оружие отказа в обслуживании. Небезопасные регулярные выражения для шаблонов C# являются распространенной ошибкой, пока они не заморозят производство или не сломаются CI/CD.

Сделайте безопасность регулярных выражений частью гигиены вашего кодирования:

  • Всегда используйте тайм-ауты.
  • Избегайте вложенных квантификаторов.
  • Ограничить ввод данных пользователем.
  • Автоматизируйте проверки с помощью Xygeni Code Security.

Регулярные выражения всегда будут мощным инструментом, но при тщательном проектировании ваши шаблоны регулярных выражений на C# не станут очередным отчетом об инциденте.

sca-инструменты-программное обеспечение-композиция-анализ-инструменты
Расставьте приоритеты, устраните и защитите риски, связанные с программным обеспечением
Получите бесплатный аккаунт.
Нет необходимости кредитную карту.

Защитите свою разработку и доставку программного обеспечения

с пакетом продуктов Xygeni