Formal Security Analysis of Smart Embedded Systems
- Farid
Farid Molazem Molazem Tabrizi Tabrizi Karthik Pattabiraman Karthik Pattabiraman
- http://blogs.ubc.ca/karthik/
- 1
Formal Security Analysis of Smart Embedded Systems Farid - - PowerPoint PPT Presentation
Formal Security Analysis of Smart Embedded Systems Farid Farid Molazem Molazem Tabrizi Tabrizi Karthik Pattabiraman Karthik Pattabiraman http://blogs.ubc.ca/karthik/ 1 IoT Systems 2 Security Attacks
Farid Molazem Molazem Tabrizi Tabrizi Karthik Pattabiraman Karthik Pattabiraman
2
3
No systematic technique to automatically find security vulnerabilities in security vulnerabilities in IoT IoT devices devices
4
5
embedded device
void foo() { …} int bar() { … }
Environment
Attacker
Action
Enumerate all possible attacks
6
Abstraction
7
8
System specification
Security expert Formal model
the system Formal model
attacker User
Source code Attacks
System Model Attacker Model Analysis Attacks
Rewriting Logic
9
Start è sensorData(0, 0) sensorData(r, n) è sensorData(r, n) sensorData(r+1, 0) sensorData(r, n) è sensorData(r, n+1)
start
Receive data Store data
Rewriting logic:
10
sensorData(c1, v1) sensorData(c2, v2) sensorData(c3, v3)è sensorData(c1, v1) sensorData(c3, v3) if c2 = i
Attacker action: e.g. access to the ith sensor channel
State space
Unsafe state
Start è receive(c1, v1) where v1 < 0
Explicit model checking:
11
12
13
Read/Write access to communication interfaces[McLaughlin et al. 2010]
network [Mo et al. 2012]
14
Performance Performance
3.4 GHz CPU, 16GB RAM
Using Maude [Clavel 15]: http://maude.cs.illinois.edu/
Practicality Practicality
15
search sensor(N1, M1) sensor(N2, M2) sensor(N3, M3) ⇒ stored(N1, M1) stored(N2, M2)
16
start Receive new data Add to
Send to server Reboot
S1 è S2 where data(s1) not sent & cycle=start
17
Open file in write mode Vulnerability window Will lose data if reboot 1. 1. function function update_node_list() 2. all_data = get_node_list 3. all_data = merge_table(current,all_data) 4. 4. data_file data_file = assert( = assert(io.open io.open(dataFile dataFile, “w”)) , “w”)) 5. for key, value in pairs(node_list) do 6. data_file::write(data) 7. end 8. assert(data_file::close()) 9. 9. end end
18
Meter Server
Root Root access to access to a routing a routing node node Add Add IPTables IPTables rule: drop rule: drop messages messages to time to time server server Function confirm_time_is_OK() while while time_is_ok time_is_ok == false do == false do ... time_is_ok = check_time() if (time_is_ok == true) then set_time() break end end end end
Gets stuck Gets stuck in the loop in the loop
: iptables − A INPUT − d ADDRESS − j DROP
19
Sensor board Communi cation board
Request Request Data Data Normal behavior Normal behavior
Find serial communication communication configuration (a configuration (a handful common handful common configs configs, a couple of , a couple of hundreds total hundreds total configs configs
Use USB to 6-pin serial connector from serial connector from laptop to meter laptop to meter
Replay data data request request
Receive data on the data on the laptop – laptop – data deleted data deleted from sensor from sensor board board
One of the common common configs configs worked in our case worked in our case
http://www.ece.ubc.ca/~faridm/acsac.html
20
“Formal Security Analysis of Smart Embedded Systems”, “Formal Security Analysis of Smart Embedded Systems”, Farid Farid Molazem Molazem Tabrizi Tabrizi and Karthik Pattabiraman, and Karthik Pattabiraman, Annual Computer Security Applications Conference (ACSAC), 2016 Annual Computer Security Applications Conference (ACSAC), 2016