All Projects → pavel-kirienko → cpu-load-side-channel

pavel-kirienko / cpu-load-side-channel

Licence: MIT license
Side-channel file transfer between independent VMs or processes executed on the same physical host.

Programming Languages

C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to cpu-load-side-channel

DiscordGo
Discord C2 for Redteam....Need a better name
Stars: ✭ 55 (+22.22%)
Mutual labels:  covert-channel, covert-channels
sicak
SIde-Channel Analysis toolKit: embedded security evaluation tools
Stars: ✭ 17 (-62.22%)
Mutual labels:  side-channel, side-channel-attacks
pyecsca
Python Elliptic Curve Side-Channel Analysis toolkit.
Stars: ✭ 23 (-48.89%)
Mutual labels:  side-channel, side-channel-attacks
hardware-attacks-state-of-the-art
Microarchitectural exploitation and other hardware attacks.
Stars: ✭ 29 (-35.56%)
Mutual labels:  infosec, side-channel-attacks
fuzzmost
all manner of wordlists
Stars: ✭ 23 (-48.89%)
Mutual labels:  infosec
Kubestriker
A Blazing fast Security Auditing tool for Kubernetes
Stars: ✭ 213 (+373.33%)
Mutual labels:  infosec
Autosqli
An automatic SQL Injection tool which takes advantage of ~DorkNet~ Googler, Ddgr, WhatWaf and sqlmap.
Stars: ✭ 222 (+393.33%)
Mutual labels:  infosec
Ronin
Ronin is a Ruby platform for vulnerability research and exploit development. Ronin allows for the rapid development and distribution of code, Exploits or Payloads, Scanners, etc, via Repositories.
Stars: ✭ 220 (+388.89%)
Mutual labels:  infosec
jlsca-tutorials
Tutorials and examples on how to use Jlsca, the high-performance side channel analysis toolkit written in Julia
Stars: ✭ 43 (-4.44%)
Mutual labels:  side-channel
hackthebox
Notes Taken for HTB Machines & InfoSec Community.
Stars: ✭ 286 (+535.56%)
Mutual labels:  infosec
evtx-hunter
evtx-hunter helps to quickly spot interesting security-related activity in Windows Event Viewer (EVTX) files.
Stars: ✭ 122 (+171.11%)
Mutual labels:  infosec
Keydecoder
KeyDecoder app lets you use your smartphone or tablet to decode your mechanical keys in seconds.
Stars: ✭ 236 (+424.44%)
Mutual labels:  infosec
Leakfa.com
A simple way to know if you are on the list of major security breaches like "HIBP", but it is specific for Iran.
Stars: ✭ 106 (+135.56%)
Mutual labels:  infosec
Cameradar
Cameradar hacks its way into RTSP videosurveillance cameras
Stars: ✭ 2,775 (+6066.67%)
Mutual labels:  infosec
rhme-2016
The RHme2 (Riscure Hack me 2) is a low level hardware CTF challenge that comes in the form of an Arduino Nano board. The new edition provides a completely different set of new challenges to test your skills in side channel, fault injection, cryptoanalysis and software exploitation attacks.
Stars: ✭ 42 (-6.67%)
Mutual labels:  side-channel
Sec Admin
分布式资产安全扫描核心管理系统(弱口令扫描,漏洞扫描)
Stars: ✭ 222 (+393.33%)
Mutual labels:  infosec
py-scripts-other
A collection of some of my scripts
Stars: ✭ 79 (+75.56%)
Mutual labels:  infosec
conti-pentester-guide-leak
Leaked pentesting manuals given to Conti ransomware crooks
Stars: ✭ 772 (+1615.56%)
Mutual labels:  infosec
Personal Security Checklist
Personal security checklist for securing your devices and accounts.
Stars: ✭ 252 (+460%)
Mutual labels:  infosec
Isthislegit
Dashboard to collect, analyze, and respond to reported phishing emails.
Stars: ✭ 251 (+457.78%)
Mutual labels:  infosec

Inter-process or cross-VM data exchange via CPU load modulation

What is this

I made this PoC as a visual aid for an online discussion about M1RACLES --- a method of covert inter-process data exchange via a system register in Apple M1. The point is to demonstrate that said register does not add new means of data exchange, since any set of processes executed on the same physical host necessarily share the underlying hardware resources, which can be exploited for covert data exchange (proper modulation provided).

In the best spirit of "someone is wrong on the internet", I made this demo to prove the point.

Principle

This PoC demonstrates a straightforward side-channel that allows one to construct reasonably robust data links between multiple processes, possibly executed in different virtualized environments, by modulating the CPU load or altering the state of any other shared hardware resource (such as CPU caches).

The method is based on CDMA modulation, which effectively allows one to pull useful signal from beneath the noise floor. The sender and the receiver(s) share a specific CDMA spread code sequence. Logic 1 is encoded by emitting the spread code in its original form; logic 0 is produced by inverting the code. Each chip of the spread code is emitted by driving the state of the shared resource appropriately; one trivial approach is to modulate the computing load on the CPU such that a high-level chip is emitted by increasing the computing load and vice versa.

The receiver samples the state of the shared resource and feeds its observations into the CDMA correlator. The correlator maintains an array of concurrent correlation channels; each channel compares the received sample feed against the reference spread code (shared with the transmitter). Each correlation channel has its copy of the spread code shifted by a fraction of the chip, such that one of the channels is always guaranteed to match the sequence emitted by the transmitter, while others would perceive the mismatching sequence as noise.

The correlator computes a weighted sum of the outputs of its channels, where the weight of each channel is a function of the correlation between the received sample feed and the spread code. The weighting ensures that uncorrelated channels are suppressed along with the noise in the medium. This ensures that the data link is resilient against noise; e.g., random variations of the processing load on the host generally do not cause link disruption.

The correlator also performs clock recovery in a similar manner by computing a weighted sum of the code phase from each channel.

RX pipeline

Any given system may host a theoretically unlimited number of such data links provided that each link leverages sufficiently distinct spread code sequences.

The method provides reasonably robust VM-crossing data link at 1023 chips, 16 ms per chip, resulting in the data rate of about 0.06 bits per second. Data rates over 1 bit per second can be achieved if the data link does not cross the boundaries of virtualized environments. The speed vs. bit error rate trade-off can be adjusted by updating the chip period and the code length defined in the header file.

Demo

video

Building

The build instructions are given at the top of each file.

Links

Online discussions of this work:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].