◈ Research Topic 03 · root@sec_

$ Security & Reliability

Hunting ReDoS vulnerabilities, fuzzing stateful protocols, and tracing vulnerable versions — hardening software at the intersection of security and reliability.

4
Papers
4
Venues
2
USENIX Security
scroll to scan
// ═══════════════════════ [ 01 · REGEXSCALPEL ] ═══════════════════════════════════
root@sec:~/redos$ regexscalpel --localize-and-fix pattern.re
◆ Featured Work
USENIX Security '22

RegexScalpel: ReDoS Defense by Localize-and-Fix

Yeting Li, Yecheng Sun, Zhiwu Xu, Jialun Cao, Yuekang Li, Rongchen Li, Haiming Chen, Shing-Chi Cheung, Yang Liu, Yang Xiao

Regular-expression Denial of Service (ReDoS) hides in nested quantifiers that trigger catastrophic backtracking. RegexScalpel localizes the vulnerable sub-pattern, then fixes it in place — preserving semantics while killing the exponential blow-up.

💡 Localize-and-fix repairs 98.88% of vulnerable regexes (vs. 21.20% for best prior work), producing semantics-preserving patches that eliminate exponential backtracking.
// scanning pattern.re
^(a+)+$
⚠ VULNERABILITY LOCALIZED — nested quantifier (a+)+ → exponential backtracking
✓ FIXED — replaced with atomic a+ · semantics preserved
Before
DoS! ⚠
After
Safe ✓
// matching attempts on "aaaa…a!" — doubling per char
n=1
n=2
n=3
2⁴
n=4
2⁵
n=5
2⁶
n=6
2⁷
n=7
Repaired
443 / 448 (98.88%)
of vulnerable regexes
Best prior work
95 (21.20%)
Confirmed CVEs
8
incl. Python, NLTK
// ═══════════════════════ [ 02 · REDOSHUNTER ] ════════════════════════════════════
root@sec:~/redos$ redoshunter --static --dynamic ./pattern.re
◆ Featured Work
USENIX Security '21

ReDoSHunter: Combined Static & Dynamic ReDoS Detection

Yeting Li, Zixuan Chen, Jialun Cao, Zhiwu Xu, Qiancheng Peng, Haiming Chen, Liyuan Chen, Shing-Chi Cheung

A two-phase pipeline: static analysis parses the regex into an NFA and flags ambiguous, self-overlapping paths across five vulnerability patterns; dynamic analysis then feeds crafted attack strings, assessing the exponential-vs-polynomial degree of blow-up as the execution-time meter climbs past the danger threshold.

💡 Combined static+dynamic analysis achieves 100% precision and recall on 37,651 regexes, identifying all 35 known ReDoS CVEs and assigning 26 new ones.
1 Static · NFA construction
a a a a $ q0 q1 q2 qf
⚠ ambiguous overlap at q1: loop vs. advance both consume a
2 Dynamic · attack-string probe
test = "a"×32 + "!"  // forces max backtracking
exec time 0.000s
redoshunter.log
Precision / Recall
100% / 100%
37,651 regexes · 3 datasets
Known ReDoS CVEs
35 / 35
all identified
New CVEs assigned
26
28 vulns · 26 projects
// ═══════════════════════ [ 03 · STATEFUL FUZZING ] ═══════════════════════════════
root@sec:~/fuzz$ ./statefuzz --proto ftp --send-random
◆ Featured Work
TASE '24

Fuzzing for Stateful Protocol Implementations: Are We There Yet?

Kunpeng Jian, Yanyan Zou, Yeting Li, Jialun Cao, Menghao Li, Jian Sun, Jingyi Shi, Wei Huo

Stateful protocols only reveal bugs deep in their state machine. This empirical study puts 6 state-of-the-art fuzzers (including AFLNet) through their paces on 13 widely-used programs across the FTP, SIP, and RTSP protocols — finding that state-coverage guidance helps navigate the state space but yields limited code-coverage gains, while sequence mutation proves pivotal. The demo below illustrates the general idea: walking legal transitions until a malformed packet forces an unexpected transition, here jumping straight to DATA, bypassing AUTH.

💡 State-coverage guidance helps navigate protocol state spaces but yields limited code-coverage gains — sequence mutation proves pivotal for finding deep bugs.
syn hello ok send fin malformed! INIT CONNECT AUTH DATA CLOSE
0
Packets sent
0
Crashes
statefuzz.log
✗ CRASH FOUND — unexpected transition
CONNECT → DATA (AUTH bypassed)
Fuzzers evaluated
6
incl. AFLNet
Programs tested
13
widely-used
Protocols
FTP · SIP · RTSP
// ═══════════════════════ [ 04 · VULN VERSIONS ] ══════════════════════════════════
root@sec:~/cve$ vaffident --cve CVE-2024-XXXX --trace-range
◆ Featured Work
ASE '25

Vulnerability-Affected Versions Identification: How Far Are We?

Xingchu Chen, Chengwei Liu, Jialun Cao, Yang Xiao, Xinyue Cai, Yeting Li, Jingyi Shi, Tianqi Sun, Haiming Chen, Wei Huo

A CVE rarely affects a single release. Starting from the version that introduced the flaw, the vulnerability propagates forward across every release until a patch lands — identifying that precise affected range is the crux of accurate vulnerability triage.

💡 No existing tool exceeds 45% accuracy in identifying vulnerability-affected version ranges — a critical gap in vulnerability triage.
v1.0
v1.1
v1.2
v1.3
v1.4
v1.5
v1.6
v1.7
v1.8
v1.9
v2.0
vulnerable range
Affected
Fixed in
Impact
Benchmark
1,128 CVEs
real-world C/C++
Tools evaluated
12
tracing + matching
Best tool accuracy
< 45.0%
no tool exceeds