Research Article

A Pattern-Based Software Testing Framework for Exploitability Evaluation of Metadata Corruption Vulnerabilities

Table 4

Typical state migration pairs for heap vulnerabilities.

Serial numberFragmented knowledgeMigration pair

#1If callable memory is controlled, it may cause control-flow hijackingC(<p,4>)∧I(<p,4>)C(PC)

#2If size of top chunk is controlled, it may cause arbitrary chunk allocation in the high address directionC(H.T.Sc)IN(c,.A) ∧C(c.a) ∧GE(c.a, .T.a) ∧ LE(c.a,add(.T.a..T.Sc))

#3The data area of the allocated chunk can be controlled by external inputIN(c,.A) ∧LE(p,add(c.a, c.sc)) ∧GE(p,c.D.a)

#4If FastBin list has a controllable chunk, it may cause arbitrary chunk allocationIN(c,.LF) ∧C(c.a) ∧SZ(c.sc,LF)IN(c′,.A) ∧C(c′.a) ∧EQ(c.a, c′.a)

#5Pointer to low address −12 bytes can be controlled by external inputC(<p,4>)∧PT(<p,4>,<p-12,4>)∧W(<p,4>)

#6If the heap block pointer is controlled, a chunk with a controllable address can be obtainedCP(<p,4>)C(<p,4>)SZ(<val(val(p)+4),4>,.LF)IN(c,.LF)C(c.a)EQ(c.a,val(p))

#7Backward merge process of heap blockIN(c,.Ls)BCS(c, c1, c2)BCD(c,c1, c2)PT(<p,4>, c1.D)PT(<p,4>,<p-12,4>)

#8The writable area pointed by the heap pointer can be controlled by external inputCP(<p, 4>)∧PT(<p, 4>,<p′, 4>)∧W(<p′, 4>)C(<p′, 4>)

#9If size of allocated chunk is controllable, it may cause chunk overlapIN(c,.A) ∧C(c.sc)IN(cH,.A) ∧HT(cH, c) ∧Lap(c, cH, p)

#10If chunks are overlapped, it may cause chunk in FastBin list controllableIN(cH,.A) ∧HT(cH, c) ∧Lap(c, cH, p)IN(cF,.LF) ∧C(cF.a) ∧SZ(cF.sc,.LF)

Dot notation is used to indicate access to fields in an object, and comma is used to separate two objects in predication.