Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution
Riccardo Paccagnella, Pubali Datta, Wajih Ul Hassan, Adam Bates, Christopher W. Fletcher, Andrew Miller, Dave Tian
Custos: Practical Tamper-Evident Auditing of Operating Systems - - PowerPoint PPT Presentation
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution Riccardo Paccagnella, Pubali Datta, Wajih Ul Hassan, Adam Bates, Christopher W. Fletcher, Andrew Miller, Dave Tian Logs Are Useful 2 Custos: Practical
Riccardo Paccagnella, Pubali Datta, Wajih Ul Hassan, Adam Bates, Christopher W. Fletcher, Andrew Miller, Dave Tian
2
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
3
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
1 Carbon Black Quarterly Incident Response Threat Report April 2019
4
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
1 Carbon Black Quarterly Incident Response Threat Report April 2019
5
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
6
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
7
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
8
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
Logs about the compromise are crucial for forensics!
9
Logs about the compromise are crucial for forensics!
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
If the attacker does not tamper with them, we can detect the attack.
10
If the attacker tampers with them, we can’t detect the attack.
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
If the attacker does not tamper with them, we can detect the attack.
Logs about the compromise are crucial for forensics!
11
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
12
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
13
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
Central Server?
14
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
Logs Integrity proofs
15
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
16
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
17
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
18
Logger
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
19
sk // secret key
Logger
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
ENCLAVE
20
sk // secret key c // counter H // current hash Logging: H.Update(mi)
Logger
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
ENCLAVE
21
sk // secret key c // counter H // current hash Logging: H.Update(m1)
Logger
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
ENCLAVE
22
sk // secret key c // counter H // current hash Logging: H.Update(m2)
Logger
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
ENCLAVE
23
sk // secret key c // counter H // current hash Logging: H.Update(mh)
Logger
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
ENCLAVE
24
sk // secret key c // counter H // current hash Logging: H.Update(mh)
Logger
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
ENCLAVE
25
sk // secret key c // counter H // current hash Logging: H.Update(mh)
Logger
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
Auditor
ENCLAVE
26
sk // secret key c // counter H // current hash Logging: H.Update(mh) Commitment: H.Update(c) ! = Sigsk(H) H.Init() c++
Logger
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
Auditor
ENCLAVE
27
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
28
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
29
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
Logger+Auditor Logger+Auditor Logger+Auditor Logger+Auditor
30
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
Auditor z Logger v
ENCLAVE
pkv -> public key of v
31
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
Auditor z Logger v
ENCLAVE
audit challenge
1
pkv -> public key of v
32
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
Auditor z Logger v
ENCLAVE
audit challenge
1
pkv -> public key of v
33
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
Auditor z Logger v
ENCLAVE
audit challenge logs and 3
1 2
pkv -> public key of v
34
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
Verification (!, m1 , …, mh , c): H = Hash(m1 || … || mh || c) result = Verpk_v(!, H)
Auditor z Logger v
ENCLAVE
audit challenge logs and !
1 2
pkv -> public key of v
35
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
36
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
sk // secret key c // counter H // current hash Logging: H.Update(mi)
Logger v
ENCLAVE
37
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
sk // secret key c // counter H // current hash Logging: H.Update(mh)
Logger v
ENCLAVE
Attack pattern: 1. Initial Access 2. Establish Foothold 3. Download Exploit 4. Privilege Escalation
38
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
sk // secret key c // counter H // current hash Logging: H.Update(mh)
Logger v
ENCLAVE
Attack pattern: 1. Initial Access 2. Establish Foothold 3. Download Exploit 4. Privilege Escalation 5. Log tampering
39
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
sk // secret key c // counter H // current hash Logging: H.Update(mh)
Logger v
ENCLAVE
Auditor
ENCLAVE
Attack pattern: 1. Initial Access 2. Establish Foothold 3. Download Exploit 4. Privilege Escalation 5. Log tampering
40
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
sk // secret key c // counter H // current hash Logging: H.Update(mh) Commitment: H.Update(c) ! = Sigsk(H) H.Init() c++
Logger v
ENCLAVE
Auditor
ENCLAVE
Attack pattern: 1. Initial Access 2. Establish Foothold 3. Download Exploit 4. Privilege Escalation 5. Log tampering
41
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
sk // secret key c // counter H // current hash Logging: H.Update(mh) Commitment: H.Update(c) ! = Sigsk(H) H.Init() c++
Logger v
ENCLAVE
Verification (!, m’1 , …, m’k , c): H = Hash(m’1 || … || m’k || c) result = Verpk_v(!, H)
Auditor
ENCLAVE
Attack pattern: 1. Initial Access 2. Establish Foothold 3. Download Exploit 4. Privilege Escalation 5. Log tampering
42
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
sk // secret key c // counter H // current hash Logging: H.Update(mh) Commitment: H.Update(c) ! = Sigsk(H) H.Init() c++
Logger v
ENCLAVE
Verification (!, m’1 , …, m’k , c): H = Hash(m’1 || … || m’k || c) result = Verpk_v(!, H)
Auditor
ENCLAVE
Attack pattern: 1. Initial Access 2. Establish Foothold 3. Download Exploit 4. Privilege Escalation 5. Log tampering
43
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
sk // secret key c // counter H // current hash Logging: H.Update(mh) Commitment: H.Update(c) ! = Sigsk(H) H.Init() c++
Logger v
ENCLAVE
Verification (!, m’1 , …, m’k , c): H = Hash(m’1 || … || m’k || c) result = Verpk_v(!, H)
Auditor
ENCLAVE
Attack pattern: 1. Initial Access 2. Establish Foothold 3. Download Exploit 4. Privilege Escalation 5. Log tampering
44
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
45
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
1 Karande et al. ”SGX-log: Securing System Logs With SGX." ASIACCS 2017. 2 Hartung et al. “Practical and Robust Secure Logging from Fault-Tolerant Sequential Aggregate Signatures”, ProvSec 2017
0.001 0.01 0.1 1 10 100 1000 10000 100000 Custos SGX-Log BGLS Logging Latency (μs)
1 2
46
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
47
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1.1 1.2 nginx apache2 redis blast blast-multicore
Normalized Runtime
Insecure Custos
48
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
49
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
50
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
51
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
52
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
53
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
54
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
55
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
56
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
sk // secret key c // counter H // current hash Logging: H.Update(mi)
m
Logger
ENCLAVE
57
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
sk // secret key c // counter H // current hash Logging: H.Update(mi)
m
Logger
ENCLAVE
58
Custos: Practical Tamper-Evident Auditing of Operating Systems Using Trusted Execution – Riccardo Paccagnella
sk // secret key c // counter H // current hash Logging: H.Update(mi)
m
Logger
ENCLAVE