Trustfull: Trustworthy Fullstack Computing
The Trustfull project, funded by Stiftelsen för Strategisk Forskning (SSF), aims to show that formal techniques can be used in combination with intelligent static and dynamic program manipulation techniques at scale to significantly strengthen the security of real life application stacks. The focus is on software-based attacks: attacks manifested through software that affect the host systems in adversarial ways through bugs, vulnerabilities, and design deficiencies at any level in the software stack.
The project brings together different research groups, the group of Dam and Guanciale with deep experience in provable security and low level execution platforms from the previous SSF-supported PROSPER project, and the groups of Baudry and Monperrus, with extensive experience in large scale software engineering, software diversity, and automated program repair.
The proposed research program involves three main components:
• Theories and tools for formal modelling, security analysis, and program manipulation at the level of processor architecture, firmware, kernel and application code.
• Defensive mechanisms that use formal methods and diversity-based techniques in innovative ways for application hardening at both application and system level.
• A core demonstrator application, an electronic voting system, serving as the main tool for focusing project work and evaluating the results.
This project is funded by SSF, see https://strategiska.se/pressmeddelande/300-miljoner-till-cybersakerhet-en-strategisk-injektion/
People
The team (alphabetical order):
- Musard Balliu (faculty)
- Benoit Baudry (faculty)
- Javier Cabrera Arteaga (PhD student)
- Zimin Chen (PhD student)
- Mika Cohen (researcher)
- Mads Dam (faculty)
- Ning Dong (PhD student)
- Arve Gengelbach (postdoc)
- Roberto Guanciale (faculty)
- Didrik Lundberg (PhD student)
- Martin Monperrus (faculty)
- Karl Palmskog (lecturer)
- Aman Sharma (PhD student)
- Douglas Wikström (faculty)
- Alexander Pretschner
- Frank Piessens
- Mats Näslund, Swedish National Defence Radio Establishment (FRA)
- Amir Gaber, FMV
- John Thilén, Saab
- Per Holmer, Tutus Data AB
- Christoph Baumann, Ericsson AB
- Orestis Floros (engineer)
- Vincent Lohse (engineer)
- Pablo Buiras (researcher)
- Fernanda Madeiral (postdoc)
- Xiaomo Yao (PhD student)
Scientific Advisory Board
Industrial Advisory Board
Alumni
News & Events
- 2023-05-25 Benoit delivered keynote at CDIS Spring Conference 2023
- 2023-05-03 Karl’s paper accepted at ITP
- 2023-03-05 Javier presented at Dagstuhl Seminar 2023
- 2023-01-26 Presentation at The Cybernode Collaboration Conference
- 2022-12-12 Musard co-chairing PLAS workshop
- 2022-12-12 Douglas joins panel on the Future of Democracy at IVA
- 2022-11-24 Talk at EclipseCon’22 uploaded on YouTube
- 2022-11-02 Trustfull project extended till March 2024
- 2022-10-05 Roberto presents at SEED workshop
- 2022-09-12 Musard and Mikhail’s article on The Register.
- 2022-09-07 Aman presents Sorald at EclipseCon’22
- 2022-09-07 Musard presents at Internetdagarna
- 2022-08-22 MIL Formalization released on Zenodo
- 2022-07-25 Article in The Register: Node.js prototype pollution is bad for your app environment
- 2022-06-01 CASTOR Software days: August 31, September 1
- 2022-01-10 We co-organize the Coq Workshop in August 2022
- 2021-01-01: Jonas Haglund did a 7-week internship at Arm spent on studying and refining part of a research project
- 2020-11-09: Andreas Lindner did a 6-week internship at Arm on high-level formalization and rough justification of a system for software isolation
- 2020-05-05 We co-organize the 2nd International Workshop on Automated Program Repair (APR 2021) http://program-repair.org/workshop-2021/
- 2020-10-26 Pellow, browser art installation at Tekniska Museet, Stockholm
- 2020-06-18 Article at Framtidens Forskning: Skydd mot buggar i digitala system
- 2020-04-16 KTH Nordic Open Workshop on Automatic Program Repair (NPR)
- 2020-01-01 Our work on AI for bug fixing appears on Swedish television SVT2
- 2019-12-04 Chaos Day
- 2019-11-22, Mads Dam is giving an invited talk “First-Order mu-calculus as a Language Independent Program Verification Framework” at the conference on Circularity in Syntax and Semantics in Gothenburg, URL: http://www.cse.chalmers.se/~bahafs/CiSS2019/
- 2019-10-14/16 CASTOR Software Days
- 2019-07-01: Martin Monperrus, Talk at University of California Davis, “SequenceR: Sequence-to-Sequence Learning for End-to-End Program Repair“
- 2019-04-18: Martin Monperrus, Talk at University College London, “SequenceR: Sequence-to-Sequence Learning for End-to-End Program Repair“
- 2019-04-17: Martin Monperrus, Talk at Microsoft Research Cambridge, “SequenceR: Sequence-to-Sequence Learning for End-to-End Program Repair“
- 2019-01-23 Radio: AI och samhällsutvecklingen
- 2018-06-26 Tillförlitliga fullstack programvarusystem vid KTH
Media
- A short introduction to Trustfull suitable for a general audience
- Demonstrator
- Presentation about the Trustfull demonstrator
- Code diverisfication for WebAssembly
Data
- Codrep machine learning on source code competition, the raw diff
- Coq OPAM archive
- Definitions of all packages related to Coq for the package manager OPAM
- Coq Platform
- Curated collection of packages to support Coq use in industry, education, and research
- MathComp corpus
- Machine learning dataset of high quality code from Coq verification projects
- Maven Central Dependency Graph
Trustfull-funded researchers have developed or contributed to the following data sets:
Software
- Algorand Verification
- Verified model of the Algorand consensus protocol in Coq
- Coq
- Proof assistant and formal language for executable algorithms and theorems
- Chip
- Verified change impact analysis Coq library and OCaml-based tool
- DepClean
- Tool for automatically removing unused dependencies from Java projects
- Giskard verification
- Verified model of the Giskard consensus protocol in Coq
- Hydras & Co.
- Collaborative, documented library of discrete mathematics for Coq
- HolBA
- Binary analysis library for the HOL4 proof assistant
- HOL4P4
- mCoq
- Mutation analysis tool for Coq verification projects
- MIL
- Formalization and tools in the HOL4 theorem prover of a machine independent language for defining the semantics of microarchitectural features such as out-of-order execution.
- OpenMZ
- Security kernel for embedded RISC-V applications
- Ott
- Tool for writing definitions of programming languages and calculi that can be translated to Coq and HOL4
- Repairnator
- Software development bot that automatically repairs build failures on continuous integration
- Roosterize
- Tool for suggesting lemma names in Coq verification projects
- Scam-V
- Abstract side channel model validation framework
- SequenceR
- seq2seq system to do bug fixes in source code change at the line level
- SerAPI
- Library and tools for (de)serialization of Coq code to and from JSON and S-expressions
- Slumps
- Research project on superoptimization, diversification (CROW) for WebAssembly WASM
- Sorald
- An automatic repair system for bug and vulnerability warnings in Java
- Spoon
- Metaprogramming library to analyze and transform Java source code, supporting Java 9, 10, and 11
- Tarjan and Kosaraju
- Verified implementation in Coq of topological sorting with extended guarantees for acyclic graphs
- Templates for Coq projects
- Template files for use in generating configuration files for Coq
- VLSM
- Formalized model in Coq for stating and solving distributed consensus problems
- VRepair
- AI system for for repairing vulnerabilities in C
- Wasm-mutate
- a new tool for fuzzing Wasm compilers, runtimes, validators, and other Wasm-consuming programs
- xPerturb
- Perturbation analysis, correctness attraction and randomization
Talks
- EclipseCon 2022
- Let a bot deal with your static analysis warnings backlog
- Speaker: Aman Sharma
- FMCAD 2021
- Refinement-Based Verification of Device-to-Device Information Flow (Video)
- Speaker: Ning Dong
- Coq Users and Developers Workshop 2020
- Towards better Coq batch incremental proving (Video)
- Demonstration of Roosterize, a tool for suggesting Coq lemma names using deep learning (Video)
- Speaker: Karl Palmskog
- CCS 2020
- InSpectre: Breaking and Fixing Microarchitectural Vulnerabilities by Formal Analysis (Video)
- Speaker: Roberto Guanciale
- CAV 2020
- Scam-V: validation of abstract side channel models for computer architectures (Video)
- Speaker: Andreas Lindner
- ICSE 2020
- SequenceR: sequence-to-sequence learning for end-to-end program repair (Video)
- Speaker: Steve Kommrusch
- MoreVMs’20
- Superoptimization of WebAsssembly Bytecode (Video)
- Speaker: Javier Cabrera
Publications
- Source Code Representations of Deep Learning for Program Repair
Published on 2023-11-17
- Self-Supervised Learning to Prove Equivalence Between Straight-Line Programs via Rewrite Rules Published on 2023-08-24
- Multi-variant Execution at the Edge
Published on 2023-08-02
- Sorald : Automatic Patch Suggestions for SonarQube Static Analysis Violations
Published on 2023-01-24
- Neural Transfer Learning for Repairing Security Vulnerabilities in C Code
Published on 2022-10-26
- Spork : Structured Merge for Java with Formatting Preservation
Published on 2022-10-05
- Styler : learning formatting conventions to repair Checkstyle violations
Published on 2022-09-05
- Enclave-Based Secure Programming with JE
Published on 2022-06-10
- Estimating the potential of program repair search spaces with commit analysis
Published on 2022-05-18
- Dynamic Policies Revisited
Published on 2022-03-07
- Automated Classification of Overfitting Patches with Statically Extracted Code Features
Published on 2022-02-16
- On Compositional Information Flow Aware Refinement
Published on 2021-12-17
- Security-Aware Multi-User Architecture for IoT
Published on 2021-11-24
- Refinement-Based Verification of Device-to-Device Information Flow
Published on 2021-10-29
- Enclave-Based Secure Programming with JE
Published on 2021-09-10
- Vivienne: Relational Verification of Cryptographic Implementations in WebAssembly
Published on 2021-09-03
- A Software-Repair Robot Based on Continual Learning
Published on 2021-08-05
- SandTrap: Securing JavaScript-driven Trigger-Action Platforms
Published on 2021-05-28
- A comprehensive study of bloated dependencies in the Maven ecosystem
Published on 2021-04-26
- CROW: Code Diversification for WebAssembly
Published on 2021-04-11