Git Product home page Git Product logo

transientfail's Introduction

Transient Fail

Transient Fail is a project that gathers different proof-of-concept implementations of Transient Execution Attacks. It was originally developed for our Usenix 2019 paper

A Systematic Evaluation of Transient Execution Attacks and Defenses by Canella, Van Bulck, Schwarz, Lipp, von Berg, Ortner, Piessens, Evtyushkin and Gruss

Content

This project provides two different things:

  • In the docs folder, we provide the source for the content of the transient.fail website.
  • In the pocs folder, we provide our proof-of-concept implementations as well as two libraries required for them. Libcache is a small library that provides all the required functionality for time measurement, flushing and loading values, TSX transactions and so on. Libpte is a fork of PTEditor developed by Michael Schwarz and allows manipulation of paging structures via a Linux kernel module.

Status

Transient Fail is under active development as we add new proof-of-concepts that we discover during our research. We invite everybody who wants to contribute to do so via pull requests.

Compilers and Operating Systems

So far, we only support Linux with gcc on x86 and ARMv8. Therefore, we have only tested them on such platforms, but welcome any feedback and pull requests on other platforms.

Literature

transientfail's People

Contributors

cattius avatar cc0x1f avatar dgruss avatar jovanbulck avatar misc0110 avatar saagarjha avatar shravanrn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

transientfail's Issues

Add BibTex/GH PR to website

add buttons to open PRs on GH (maybe also GH stars) and to cite the paper with an extended bibtex entry with a note to the website

Add SWAPGS/WRFSBASE attacks

Described here and here, this actually also includes an interesting sub-instance of MD-GP. The paper and deep-dive are not very clear on the exact interaction with #GP faults, but afaik some of the attacks abuse that transient execution continues with wrong segement selectors after a faulting WRFSBASE. Hence, we should figure out and clearly describe the MD-GP behavior and update the tree accordingly.

Vendor option throws "Uncaught Error: missing: 9"

Browser: Chrome 80.0.3987.132
OS: Windows 1909

Uncaught Error: missing: 9
    at e (index.js:formatted:3765)
    at Object.n.generateNestedData (index.js:formatted:1149)
    at Object.refresh (index.js:formatted:925)
    at toggleMeltdownSpectre (filter.js:57)
    at filter (filter.js:107)
    at (index):406

Reproduce

  1. Open https://transient.fail/
  2. Deselect all vendors
  3. Select "Intel"

Selecting either "ARM" or "AMD" does not give this error.

Add LVI attacks

We should incorporate https://lviattack.eu/ into the tree. Either as an addition to the MD subtree or a separate branch? Given the symmetry with existing MD-type attacks, Id argue for extending the MD subtree instead of creating a new branch. Proposed plan RFC:

  • rename Meltdown-type to Meltdown/LVI-type to reflect that MD is not anymore only about "melting down" protection domains by leaking
  • update each MD leaf with a "leakage" and "injection" subsection briefly describing the impact of the leakage/injection angles, if applicable
  • add NULL as an extra leaf for the last-level u-arch buffer split. At least for MD-US-NULL, we can also mention EchoLoad in the "leakage"-oriented subsection, as it abuses NULL forwarding to break ASLR which leaks side-channel info.
  • add a new MD-PPN node to describe Foreshadow-EPCM SGX leakage attacks and LVI-PPN-L1D attacks; for completeness we should prob also add MD-RSVD

Ideas, feedback?

Add ARMv8-A Meltdown-AC variants

Unlike on x86, alignment checks on ARMv8-A can cause one of three different exceptions: a program counter alignment fault, a stack pointer alignment fault, or a data abort exception (for any other misaligned address, if alignment checking is enabled). As these are different exceptions rather than simply different ways to trigger the same exception, we should distinguish them in the systematization tree.

Proposal to add:

  • Meltdown-AC-PC
  • Meltdown-AC-SP
  • Meltdown-AC-AD

I'm undecided on the name for the latter - I think AD might be confusing given we also use it for the accessed/dirty page table bit. Two alternatives are Meltdown-AC-G (G for general case) and Meltdown-AC-DA (DA for Data Abort).

This is all assuming we want to keep the tree naming x86-centric, which I think does make sense (rather than adding, for example, Meltdown-SPA for the stack pointer alignment fault). Thoughts?

Add Snoop Assisted L1D Sampling attack?

Described here and here; "Snoopy" seems to be a special type of Foreshadow/L1TF; not sure how this would fit into the classification tree? It doesn't seem that snoops are a new type of faults or assists, but maybe we can mention the technique under the various -L1 leaves? Would probably require more experimentation as well..

On certain processors and under certain conditions, data in a modified cache line that is being returned in response to a snoop may also be forwarded to a faulting, microarchitectural assist, or Intel® Transactional Synchronization Extensions (Intel® TSX) asynchronous aborting load operation to a different address that occurs simultaneously.

add timeline feature

would be a nice feature to have a "timeline" feature where you can drag a slider to see how the transient exec landscape and each of the attack nodes in the tree have been explored/disclosed over time (eg 2018 era vs 2019 era)

Self-contained tikz export

we should probably improve the tikz export for the JavaScript tree to be a minimal self-contained LaTeX document with all the necessary packages in the header

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.