Archívum - Júl 24, 2019
ReDoS-ról tudtok valamit bővebben, hogy milyen minták érintettek?
Egyelőre most csak ennyit olvastam a témában: https://snyk.io/blog/redos-and-catastrophic-backtracking/
Ez alapján a cikk alapján az "a(?:b|c+)+d" jellegű minták biztosan nem jók. Ha jól vettem ki a két quantifier-t próbálja egymással többféleképpen kombinálni a regex engine, és kipróbálja az összes permutációt, hátha valamelyik működik a string-re, amit talált, de egyik sem fog, ha "d" helyett "x" van a string-ben a végén. Emiatt elmókolhat egy sima regex-es validációval akár percekig is lefagyasztva az egész szervert. Ezek alapján nekem úgy tűnik, hogy nem érdemes quantifier-eket egymásba ágyazni, mert akkor kapásból fennállhat ez a helyzet, illetve érdemes lehet a regex-es kódot kitenni külön thread-be vagy process-be, mert igaz, hogy lassabb, de legalább az olvasás működik, ha beüt a krach, mert arra nem jellemző a regexes validáció.
A kérdés az, hogy van e ott még több is, ahonnan ez jött? Jó lenne ismerni az összes ilyen sebezhető mintát, és kiváltani őket. Tudtok erről valamit?
■ Ez alapján a cikk alapján az "a(?:b|c+)+d" jellegű minták biztosan nem jók. Ha jól vettem ki a két quantifier-t próbálja egymással többféleképpen kombinálni a regex engine, és kipróbálja az összes permutációt, hátha valamelyik működik a string-re, amit talált, de egyik sem fog, ha "d" helyett "x" van a string-ben a végén. Emiatt elmókolhat egy sima regex-es validációval akár percekig is lefagyasztva az egész szervert. Ezek alapján nekem úgy tűnik, hogy nem érdemes quantifier-eket egymásba ágyazni, mert akkor kapásból fennállhat ez a helyzet, illetve érdemes lehet a regex-es kódot kitenni külön thread-be vagy process-be, mert igaz, hogy lassabb, de legalább az olvasás működik, ha beüt a krach, mert arra nem jellemző a regexes validáció.
A kérdés az, hogy van e ott még több is, ahonnan ez jött? Jó lenne ismerni az összes ilyen sebezhető mintát, és kiváltani őket. Tudtok erről valamit?