English
Related papers

Related papers: Divide, Conquer and Verify: Improving Symbolic Exe…

200 papers

Quantum protocols such as the BB84 Quantum Key Distribution protocol exchange qubits to achieve information-theoretic security guarantees. Many variants thereof were proposed, some of them being already deployed. Existing security proofs in…

Cryptography and Security · Computer Science 2019-04-11 Lucca Hirschi

Verification of modern microprocessors is a complex task that requires a substantial allocation of resources. Despite significant progress in formal verification, the goal of complete verification of an industrial design has not been…

Logic in Computer Science · Computer Science 2019-12-24 Shilpi Goel , Anna Slobodova , Rob Sumners , Sol Swords

Fuzzy logic programming is a growing declarative paradigm aiming to integrate fuzzy logic into logic programming. One of the most difficult tasks when specifying a fuzzy logic program is determining the right weights for each rule, as well…

Programming Languages · Computer Science 2016-08-17 Ginés Moreno , Jaime Penabad , Germán Vidal

Security protocols are concurrent processes that communicate using cryptography with the aim of achieving various security properties. Recent work on their formal verification has brought procedures and tools for deciding trace equivalence…

Cryptography and Security · Computer Science 2015-09-08 David Baelde , Stéphanie Delaune , Lucca Hirschi

Guided fuzzing has, in recent years, been able to uncover many new vulnerabilities in real-world software due to its fast input mutation strategies guided by path-coverage. However, most fuzzers are unable to achieve high coverage in deeper…

Software Engineering · Computer Science 2019-10-14 Saahil Ognawala , Fabian Kilger , Alexander Pretschner

Mutation testing consists of generating test cases that detect faults injected into software (generating mutants) which its original test suite could not. By running such an augmented set of test cases, it may discover actual faults that…

Software Engineering · Computer Science 2024-06-05 Jaekwon Lee , Enrico Viganò , Fabrizio Pastore , Lionel Briand

Symbolic execution has shown its ability to find security-relevant flaws in software, but faces significant scalability challenges. There is a commonly held belief that manual intervention by an expert can help alleviate these limiting…

Software Engineering · Computer Science 2018-05-10 John Galea , Sean Heelan , Daniel Neville , Daniel Kroening

Explicit signaling between threads is a perennial cause of bugs in concurrent programs. While there are several run-time techniques to automatically notify threads upon the availability of some shared resource, such techniques are not…

Programming Languages · Computer Science 2018-04-10 Kostas Ferles , Jacob Van Geffen , Isil Dillig , Yannis Smaragdakis

Spectre attacks disclosed in early 2018 expose data leakage scenarios via cache side channels. Specifically, speculatively executed paths due to branch mis-prediction may bring secret data into the cache which are then exposed via cache…

Cryptography and Security · Computer Science 2020-05-26 Guanhua Wang , Sudipta Chattopadhyay , Arnab Kumar Biswas , Tulika Mitra , Abhik Roychoudhury

An effective way to maximize code coverage in software tests is through dynamic symbolic execution$-$a technique that uses constraint solving to systematically explore a program's state space. We introduce an open-source dynamic symbolic…

Software Engineering · Computer Science 2019-11-19 Mark Mossberg , Felipe Manzano , Eric Hennenfent , Alex Groce , Gustavo Grieco , Josselin Feist , Trent Brunson , Artem Dinaburg

We present a novel approach to pre-silicon verification of processor designs. The purpose of pre-silicon verification is to find logic bugs in a design at an early stage and thus avoid time- and cost-intensive post-silicon debugging. Our…

Symbolic execution uses various algorithms (matching, (anti)unification), whose executions are parameters for proof object generation. This paper proposes a generic method for generating proof objects for such parameters. We present in…

Logic in Computer Science · Computer Science 2022-09-22 Andrei Arusoaie , Dorel Lucanu

This paper focuses on automated synthesis of divide-and-conquer parallelism, which is a common parallel programming skeleton supported by many cross-platform multithreaded libraries. The challenges of producing (manually or automatically) a…

Programming Languages · Computer Science 2017-01-31 Azadeh Farzan , Victor Nicolet

Failure indexing is a longstanding crux in software testing and debugging, the goal of which is to automatically divide failures (e.g., failed test cases) into distinct groups according to the culprit root causes, as such multiple faults in…

Software Engineering · Computer Science 2023-11-03 Yi Song , Xihao Zhang , Xiaoyuan Xie , Songqiang Chen , Quanming Liu , Ruizhi Gao

The complexity of software in embedded systems has increased significantly over the last years so that software verification now plays an important role in ensuring the overall product quality. In this context, SAT-based bounded model…

Software Engineering · Computer Science 2009-11-20 Lucas Cordeiro , Bernd Fischer , Joao Marques-Silva

Symbolic model checking by using BDDs has greatly improved the applicability of model checking. Nevertheless, BDD based symbolic model checking can still be very memory and time consuming. One main reason is the complex transition relation…

Logic in Computer Science · Computer Science 2011-06-08 Christian Appold

Concolic execution is a powerful program analysis technique for exploring execution paths in a systematic manner. Compare to random-mutation-based fuzzing, concolic execution is especially good at exploring paths that are guarded by complex…

Cryptography and Security · Computer Science 2019-05-24 Wookhyun Han , Md Lutfor Rahman , Yuxuan Chen , Chengyu Song , Byoungyoung Lee , Insik Shin

The starting point of this work is a framework allowing to model systems with dynamic process creation, equipped with a procedure to detect symmetric executions (ie., which differ only by the identities of processes). This allows to reduce…

Logic in Computer Science · Computer Science 2013-02-15 Łukasz Fronc

During software development, vulnerabilities have posed a significant threat to users. Patches are the most effective way to combat vulnerabilities. In a large-scale software system, testing the presence of a security patch in every…

Software Engineering · Computer Science 2024-01-15 Qi Zhan , Xing Hu , Zhiyang Li , Xin Xia , David Lo , Shanping Li

Runtime Verification deals with the question of whether a run of a system adheres to its specification. This paper studies runtime verification in the presence of partial knowledge about the observed run, particularly where input values may…

Logic in Computer Science · Computer Science 2022-07-13 Hannes Kallwies , Martin Leucker , Cesar Sanchez