regulární výraz v c# - regulární výraz pro c# - regulární výraz v c#

DoS v C# Regex: Když se vzory stanou vektory útoku

Když regulární výrazy negativně ovlivňují výkon  

Jediný řádek regulárního výrazu v jazyce C# může srazit produkční API na kolena. Špatně napsané vzory způsobují katastrofické backtracking, vyčerpávání cyklů CPU a zamykání vláken. Toto je klasika. Odmítnutí služby regulárních výrazů (ReDoS), což je nenápadný, ale nebezpečný útočný vektor skrytý ve vašem kódu.

⚠️Nezabezpečený příklad, pouze pro vzdělávací účely. Nepoužívejte v produkčním prostředí.

Tento regulární výraz pro C# trpí vnořenými kvantifikátory, které způsobují exponenciální zpětné sledování. Dlouhý, škodlivý řetězec může zamrznout koncový bod nebo mikroslužbu.

Bezpečná verze:

Poznámka k vzdělání: Vždy používejte časové limity (RegexOptions + Časové rozpětí) a zjednodušit vnořené skupiny. V regexu C# je validace výkonu bezpečnostním požadavkem, nikoli optimalizací.

Proč se vzory regulárních výrazů v C# stávají zranitelnými

Nejednoznačné kvantifikátory (.*, .+nebo (a+)+) a neomezené opakování dělají z regulárních výrazů běžný cíl DoS.
Když se tyto funkce objeví v kontextech řízených uživatelem, jako je ověřování vstupu nebo analýza protokolu, může jeden vytvořený datový obsah monopolizovat CPU.

⚠️Nezabezpečený příklad, pouze pro vzdělávací účely. Nepoužívejte v produkčním prostředí.

Bezpečná verze:

Poznámka k vzdělání: Vyhněte se nejednoznačnému opakování, omezte velikost vstupu a vždy porovnávajte výkon regulárních výrazů při zátěži. Funkční úryvek, vynucování časových limitů a maximální délky vstupu jako ochranných prvků v produkčním prostředí.

Skutečný dopad na API a CI/CD Pracovní postupy

Nebezpečný regulární výraz pro C# se neomezuje pouze na ověřovací formuláře. Vývojáři vkládají vzory do filtrů protokolů, porovnávačů webhooků a automatizovaných skenů. CI/CD, jeden nebezpečný vzorec může zastavit celý pipeline.

⚠️Nezabezpečený příklad, pouze pro vzdělávací účely. Nepoužívejte v produkčním prostředí.

Nikdy nezpracovávejte uživatelem zadaný regulární výraz bez ověření nebo kontroly časového limitu.

Bezpečná verze:

Poznámka k vzdělání: Ověřte vstup externího regulárního výrazu před spuštěním. Přidejte explicitní kontroly délky a vynuťte časové limity v pipelines.

Bezpečné postupy pro prevenci DoS v C# s regexy

Prevence ReDoS v regexu C# by měla být integrována do vašeho vývoje a Pracovní postup DevSecOps. Zde je návod, jak to ve výchozím nastavení zabezpečit:

Doporučené postupy

  1. Vždy nastavit časové limity u všech vyhodnocení regulárních výrazů.
  2. Vyhněte se katastrofickým vzorcům, žádné vnořené kvantifikátory ani nejednoznačné skupiny.
  3. Omezení velikosti vstupu před přechodem k regulárnímu výrazu.
  4. Předkompilace důvěryhodných vzorů s RegexOptions.Compiled.
  5. Opravte výrazy zadané uživatelem nebo přidat na bílou listinu povolené vzory.

Mini preventivní kontrolní seznam

  • Zkontrolujte každý regulární výraz, zda ve vaší kódové základně nepoužívá jazyk C#.
  • Přihláška Časové rozpětí časové limity důsledně.
  • Omezte délku vstupů API a CI.
  • Před vydáním otestujte výkon regulárních výrazů.
  • Automatizace statických regulárních výrazů skenování v CI/CD.

Poznámka k vzdělání: Vzory regulárních výrazů považujte za nedůvěryhodný kód. Zaslouží si stejnou kontrolu jako SQL nebo provádění příkazů.

Jak Xygeni detekuje riskantní použití regexů v C#

Xygeni Code Security automaticky detekuje nebezpečné vzory regulárních výrazů v jazyce C# během statické analýzy. Identifikuje katastrofické zpětné sledování, chybějící časové limity a vzorce, které pravděpodobně vedou k zablokování služeb. In CI/CD, Xygeni funguje jako Brána DevSecOps, blokování nebezpečných regulárních výrazů pro C# před jejich sloučením nebo nasazením.

Poznámka k vzdělání: Integrace Xygeni zajišťuje bezpečné zpracování regulárních výrazů napříč sestaveními a prostředími a zabraňuje regresím a DoS útokům před nasazením.

Váš regulární výraz je mocný, ujistěte se, že není zbraňovaný.

Zranitelnosti ReDoS proměňují nevinně vypadající regulární výrazy v C# v zbraň bránící útokům typu „donikání služby“. Nebezpečné regulární výrazy pro vzory C# jsou běžným přehlédnutím, dokud nezaseknou produkci nebo se nepřeruší. CI/CD.

Začleňte bezpečnost regulárních výrazů do svého kódovacího hygienického postupu:

  • Vždy používejte časové limity.
  • Vyhněte se vnořeným kvantifikátorům.
  • Omezte vstup uživatele.
  • Automatizujte kontroly pomocí Xygeni Code Security.

Regex bude vždycky mocný, ale s pečlivým návrhem se vaše vzory regexů v C# nestanou vaším dalším hlášením incidentu.

nástroje pro analýzu složení softwaru SCA
Stanovte priority, opravte a zabezpečte svá softwarová rizika
Získejte svůj bezplatný účet.
Nevyžaduje se žádná kreditní karta.

Zajistěte si vývoj a dodávky softwaru

s produktovým balíčkem Xygeni