正規表現における実行時間と DoS 攻撃 (ReDoS)

正規表現の処理にかかる負荷で生じる DoS 攻撃の種類である ReDoS についての覚え書き

python-multipart というライブラリで過去に存在した CVE の脆弱性を元に簡単な検証をする

検証環境

基礎

CVE-2024-24762

python-multipart について

対象となる正規表現

multipart/form-data; boundary=----hogebound; charset=utf-8
ctype: b'multipart/form-data'
options: {b'boundary': b'----hogebound', b'charset': b'utf-8'}
# These are regexes for parsing header values.
SPECIAL_CHARS = re.escape(b'()<>@,;:\\"/[]?={} \t')
QUOTED_STR = br'"(?:\\.|[^"])*"'
VALUE_STR = br'(?:[^' + SPECIAL_CHARS + br']+|' + QUOTED_STR + br')'
OPTION_RE_STR = (
    br'(?:;|^)\s*([^' + SPECIAL_CHARS + br']+)\s*=\s*(' + VALUE_STR + br')'
)
OPTION_RE = re.compile(OPTION_RE_STR)
"\\\\\\\\\\\\\\

検証

time-backslash image

まとめ