Papers for

security testing engineers

Papers whose findings have a practical use for this group, as judged from the abstract. Open a paper to read what it means in practice.

Z3 extension solves cyclic string constraints more effectively

Taming Cyclic Dependencies in Stabilization-Based String Constraint Solving

Abstract: Word equations with cyclic variable dependencies pose a challenge to SMT string solvers. In stabilization-based procedures, such dependencies can trigger repeated refinement of regular-language assignments without reaching stability. We present Z3-Noodler-C, an extension of Z3-Noodler, combining equality-aware stabilization with dedicated loop reasoning. We introduce equality predicates to retain relevant equations as single stability obligations, and extend stabilization with equality-aware substitution and adapted concatenation-eliminating refinement to expose cyclic dependencies as overlapping variable bindings. Dedicated loop reasoning rules then exploit the periodic structure of these bindings, avoiding certain infinite derivations. We evaluate Z3-Noodler-C against Z3-Noodler, cvc5 and OSTRICH2. On 64 systematically generated, syntactically simple instances involving cyclic dependencies and regular constraints, our solver solves all instances, compared with only 20 solved for the best baseline. On equation-oriented instances from SMT-LIB'25, Z3-Noodler-C achieves the highest coverage, solving 20 more instances than Z3-Noodler while maintaining competitive aggregate CPU time.

Sun 18 OctLogic in Computer Science
The gist
Solving puzzles involving strings and equations can get stuck when variables depend on each other in loops. The paper’s authors improved a solver named Z3-Noodler by adding special techniques that recognize and handle these loops directly. Their new tool, Z3-Noodler-C, avoids endless guesswork and finds solutions faster and more reliably. Tests show it solves many tough problems that previous tools could not.
Open → 2610.25197v1

HarnessMinimizer boosts library fuzzing crash debugging speed by four times

Efficient Program Reduction for Library Fuzzing Harnesses

Abstract: Library fuzzing harnesses translate generated inputs into API calls. When a complex harness triggers a crash, developers must determine whether the cause is a library defect or invalid harness usage. A smaller reproducer can simplify this investigation, but obtaining one requires repeatedly building and executing modified harnesses and analyzing their crashes, making manual or even automatic minimization time-consuming. Moreover, data-dependent statements prevent the reducer to remove unnecessary code and the heavy stack trace symbolization in libraries also slows down the candidate execution. To address these challenges, we present HarnessMinimizer, a system for efficient minimization of C/C++ library fuzzing harnesses. Its optimized pipeline reuses header analysis and prepared libraries and runtimes to reduce the work required to build and execute each simplified harness during the reduction process. It records and replays input values so that unnecessary input operations can be removed without changing the values supplied to surviving calls. It also uses a fast method to check whether each simplified harness preserves the original crash, avoiding repeated stack trace symbolization. We evaluate HarnessMinimizer with four reduction engines on 200 crash cases from 21 open source libraries. Compared with the unoptimized pipeline, HarnessMinimizer achieves speedups of 3.46-4.51 times in average total wall time. Average harness size decreases from 1,352 original tokens to 143-263 remaining tokens after minimization. In crash triage using a large language model, accuracy in identifying harness bugs increases from 28% with the original harnesses to 44-51% with the minimized harnesses, while accuracy for library bugs remains at 100%.

Fri 16 OctSoftware Engineering
The gist
When software libraries crash during testing, it’s hard for developers to tell if the problem is in the library or the test code. Smaller test cases help but making them by hand takes too long. The authors created HarnessMinimizer, a tool that quickly shrinks test programs without losing the crash, saving time. This lets developers find real bugs more easily and speeds up crash investigation.
Open → 2610.23054v1