-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
131 lines (104 loc) · 5.27 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
FROM ubuntu:20.04
# Config parameters
ARG BUILD_SECURITY=64
ARG BUILD_KEY=deadbeefcafebabe
ENV SANCUS_SECURITY=$BUILD_SECURITY
ENV SANCUS_KEY=$BUILD_KEY
################################################################################
## 1. Install dependencies
################################################################################
RUN apt-get update -yqq && \
apt-get -yqq install build-essential git lsb-release sloccount sudo vim verilator && \
echo "Europe/Brussels" > /etc/timezone && \
DEBIAN_FRONTEND=noninteractive apt-get install -yqq tzdata
########################################
## 1.1. SLLVM + Sancus
########################################
WORKDIR /sllvm
RUN git clone --branch dma-attack https://github.com/hanswinderix/sllvm . && make install-deps && make fetch && make configure
WORKDIR /sllvm/sancus-main/sancus-core
RUN git checkout dma-attack
WORKDIR /sllvm
RUN make install && \
################################################################################
## 1.1.1. Run case study attacks with the peripheral and untrusted C code
################################################################################
cd /sllvm/test/sancus/bsl && \
make -f Makefile.attacker && make -f Makefile.attacker sim && \
cd /sllvm/test/sancus/mulhi3 && \
make -f Makefile.attacker && make -f Makefile.attacker sim && \
################################################################################
## 1.1.2. Run mitigation evaluation for Nemesis
################################################################################
cd /sllvm && \
make checkout-master && \
make -C test/sancus nemdef-pp && \
mkdir /attacks && cp test/sancus/bsl/bsl.nemdef.vcd /attacks/ && cp test/sancus/mulhi3/mulhi3.nemdef.vcd /attacks/ && \
mkdir /benchmarks-nemesis && cp test/sancus/*/[a-z]*.nemdef /benchmarks-nemesis/ && \
cp -r test/sancus/results /benchmarks-nemesis/ && \
make -C test/sancus nemdef-clean && \
# Get TableGen description used for profiling
/sllvm/install/bin/llvm-tblgen -I /sllvm/sllvm/llvm/lib/Target/MSP430/ -I /sllvm/sllvm/llvm/include/ -gen-msp430-latency-info /sllvm/sllvm/llvm/lib/Target/MSP430/MSP430.td >/benchmarks-nemesis/tablegen_raw.txt && \
################################################################################
## 1.1.3. Run mitigation evaluation for DMA
################################################################################
make checkout-dma-attack && \
make configure && make install && \
make -C test/sancus nemdef-pp && \
mkdir /benchmarks-dma && cp test/sancus/*/[a-z]*.nemdef /benchmarks-dma/ && \
cp -r test/sancus/results /benchmarks-dma/ && \
make clean-fetch && \
make -C test/sancus nemdef-clean
########################################
## 1.2. VCDVCD
########################################
WORKDIR /vcdvcd
RUN git clone https://github.com/cirosantilli/vcdvcd .
RUN python3 -m pip install --user /vcdvcd
########################################
## 1.3. SCF-MSP
########################################
WORKDIR /scf-msp430-dma
RUN git clone https://github.com/jovanbulck/scf-msp430-dma.git . && apt-get install -yqq graphviz && pip3 install -r requirements.txt
########################################
## 1.4. Profiling scripts
########################################
WORKDIR /profiling
COPY scripts/* ./
################################################################################
## 2. Reproduce attack case studies
################################################################################
WORKDIR /sllvm/sancus-main/sancus-core/core/sim/rtl_sim/run
RUN __SANCUS_SIM=1 ./run sancus/dma_covert
WORKDIR /profiling
RUN ./attacker.py bsl /attacks/bsl.nemdef.vcd
RUN ./attacker.py mul /attacks/mulhi3.nemdef.vcd
RUN ./attacker.py covert /sllvm/sancus-main/sancus-core/core/sim/rtl_sim/run/tb_openMSP430.vcd
################################################################################
## 3. Run microarchitectural profiling
################################################################################
WORKDIR /profiling
RUN ./profiling.py /sllvm/sancus-main/sancus-core /vcdvcd /benchmarks-nemesis/tablegen_raw.txt
################################################################################
## 4. Run security validation
################################################################################
WORKDIR /scf-msp430-dma
# clean up built-in benchmarks
RUN rm testcase/*.nemdef testcase/*.vulnerable
RUN cp /benchmarks-nemesis/[a-z]*.nemdef testcase/
RUN ./run_all_nemdef.sh --minimal
RUN cp /benchmarks-dma/[a-z]*.nemdef testcase/
RUN ./run_all_nemdef.sh --minimal
################################################################################
## 5. Interactive Docker container with fully built and validated pipeline
################################################################################
# Display a welcome message for interactive sessions
RUN echo '[ ! -z "$TERM" -a -r /etc/motd ] && cat /etc/motd' \
>> /etc/bash.bashrc ; echo "\
========================================================================\n\
= MicroProfiler Docker container =\n\
========================================================================\n\
`lsb_release -d`\n\
\n" > /etc/motd
WORKDIR /
CMD /bin/bash