Skip to content

BitWhisper

CPU/GPU ısısını modüle edip bunu on-board thermal sensor'lar üzerinden geri okuyarak yan yana iki air-gapped bilgisayarı köprüle ve çift yönlü bir gizli kanal oluştur.

Mechanism

Note

Her PC, compute load'un bir fonksiyonu olarak ısı yayar ve her anakartta yerleşik temperature sensor'ları (CPU, GPU, chassis) vardır. Değişmez nokta: bir bilgisayar, CPU/GPU üzerinde meşgul döngüler başlatarak kendi sıcaklığını istek üzerine yükseltebilir ve santimetrelerce ötede duran ikinci bir bilgisayar, ısı boşluğun karşısına iletildikçe/yayıldıkça kendi thermal sensor'larında ölçülebilir bir yükseliş kaydeder. Her iki makine de hem ısı üretip hem sensor'larını okuyabildiği için kanal çift yönlüdür: makine A 1 göndermek için ısınır, 0 göndermek için boşta durur, makine B ise thermal sensor'larını yoklayıp decode etmek için sıcaklığa eşik uygular — ve tersi. Maliyet bandwidth: thermal mass kanalı son derece yavaş yapar, ama hiçbir network, hiçbir peripheral ve hiçbir özel hardware gerektirmez — yalnızca yan yana yerleştirilmiş iki ele geçirilmiş host (yaygın olduğu gibi, örneğin air-gapped birinin yanında internete bağlı bir PC).

Walkthrough

// Transmitter: heat to send 1, idle to send 0. Symbol period is minutes.
#include <pthread.h>
static volatile int heating;
void *burn(void *_) { while (1) if (heating) { volatile double x=0;
    for (long i=0;i<100000000L;i++) x+=i*1.000001; } else usleep(1000); }

void send_bit(int bit) {
    heating = bit;          // CPU-bound spin raises die temperature
    sleep(SYMBOL_SECONDS);  // hold long enough for the neighbor to sense it
    heating = 0;
}
// Receiver: poll a thermal sensor and threshold against a moving baseline.
int recv_bit(void) {
    double t = read_temp("/sys/class/thermal/thermal_zone0/temp") / 1000.0;
    return (t - baseline) > DELTA_C ? 1 : 0;   // sustained rise => bit '1'
}
Beklenen sonuçlar (makaleden)

Channel:    thermal (CPU/GPU heat -> motherboard temp sensors)
Direction:  bidirectional
Distance:   up to ~40 cm between the two computers
Bit rate:   ~1 – 8 bits per hour
Use:        exchange small payloads / commands, e.g. passwords, keys
Yavaş ama air-gapped bir host'u yanındaki internete bakan biriyle eşleştirip key'leri damla damla dışarı sızdırmaya ya da komutları damla damla içeri almaya yetecek kadar.

Detection

Thermal-sensor okumalarını yerel compute load ile korele et; komşu bir makineyi takip eden sıcaklık salınımlarında alarm ver; işlevsel amacı olmayan sürekli, periyodik CPU-bound aktiviteyi izle.

Mitigation

Fiziksel ayrım (kanal onlarca cm'nin ötesinde ölür); rack'lerde thermal izolasyon / aralık; thermal-sensor erişimini kısıtla; sinyali maskelemek için rastgele arka plan thermal load.

References