Skip to content

Commit 890b929

Browse files
committed
init
0 parents  commit 890b929

40 files changed

+752
-0
lines changed

.envrc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
use flake

.gitattributes

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
*.png filter=lfs diff=lfs merge=lfs -text
2+
*.svg filter=lfs diff=lfs merge=lfs -text
3+
*.json filter=lfs diff=lfs merge=lfs -text
4+
*.ico filter=lfs diff=lfs merge=lfs -text
5+
*.pdf filter=lfs diff=lfs merge=lfs -text
6+
*.jpeg filter=lfs diff=lfs merge=lfs -text
7+
*.mp3 filter=lfs diff=lfs merge=lfs -text
8+
*.flac filter=lfs diff=lfs merge=lfs -text
9+
*.opus filter=lfs diff=lfs merge=lfs -text
10+
*.mkv filter=lfs diff=lfs merge=lfs -text
11+
*.gif filter=lfs diff=lfs merge=lfs -text
12+
*.mp4 filter=lfs diff=lfs merge=lfs -text
13+
*.jpg filter=lfs diff=lfs merge=lfs -text

.github/workflows/hugo.yml

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Sample workflow for building and deploying a Hugo site to GitHub Pages
2+
name: Deploy Hugo site to Pages
3+
4+
on:
5+
# Runs on pushes targeting the default branch
6+
push:
7+
branches: ["main"]
8+
9+
# Allows you to run this workflow manually from the Actions tab
10+
workflow_dispatch:
11+
12+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13+
permissions:
14+
contents: read
15+
pages: write
16+
id-token: write
17+
18+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
19+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
20+
concurrency:
21+
group: "pages"
22+
cancel-in-progress: false
23+
24+
# Default to bash
25+
defaults:
26+
run:
27+
shell: bash
28+
29+
jobs:
30+
# Build job
31+
build:
32+
runs-on: ubuntu-latest
33+
env:
34+
HUGO_VERSION: 0.128.0
35+
steps:
36+
- name: Install Hugo CLI
37+
run: |
38+
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
39+
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
40+
- name: Install Dart Sass
41+
run: sudo snap install dart-sass
42+
- name: Checkout
43+
uses: actions/checkout@v4
44+
with:
45+
submodules: recursive
46+
- name: Setup Pages
47+
id: pages
48+
uses: actions/configure-pages@v5
49+
- name: Install Node.js dependencies
50+
run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
51+
- name: Build with Hugo
52+
env:
53+
HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
54+
HUGO_ENVIRONMENT: production
55+
run: |
56+
hugo \
57+
--minify \
58+
--baseURL "${{ steps.pages.outputs.base_url }}/"
59+
- name: Upload artifact
60+
uses: actions/upload-pages-artifact@v3
61+
with:
62+
path: ./public
63+
64+
# Deployment job
65+
deploy:
66+
environment:
67+
name: github-pages
68+
url: ${{ steps.deployment.outputs.page_url }}
69+
runs-on: ubuntu-latest
70+
needs: build
71+
steps:
72+
- name: Deploy to GitHub Pages
73+
id: deployment
74+
uses: actions/deploy-pages@v4

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public
2+
.hugo_build.lock
3+
.direnv
4+
.DS_Store

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "themes/papersite-template"]
2+
path = themes/papersite-template
3+
url = [email protected]:papers/riscv_difffuzz/ghostwrite-papersite-template.git

README.md

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
## Serving the website
2+
3+
``` sh
4+
# Serve directly if you have hugo installed
5+
hugo serve
6+
# Serve with the nix-pinned hugo version
7+
nix run
8+
```
9+
10+
## Generating the favicon
11+
12+
``` sh
13+
nix-shell -p imagemagick --run 'magick -density 300 -define icon:auto-resize=256,128,96,64,48,32,16 -background none static/ghostwrite-no-text.svg static/favicon.ico'
14+
```

archetypes/default.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
+++
2+
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
3+
date = {{ .Date }}
4+
draft = true
5+
+++

assets/css/.gitkeep

Whitespace-only changes.

assets/css/custom.css

+139
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
@font-face {
2+
font-family: "Montserrat";
3+
font-weight: 300;
4+
font-display: swap;
5+
font-style: normal;
6+
font-named-instance: "Light";
7+
src: url(/fonts/Montserrat-Light.ttf) format("truetype");
8+
}
9+
10+
@font-face {
11+
font-family: "Montserrat";
12+
font-weight: 300;
13+
font-display: swap;
14+
font-style: normal;
15+
font-named-instance: "Light";
16+
src: url(/fonts/Montserrat-Light.ttf) format("truetype");
17+
}
18+
19+
@font-face {
20+
font-family: "Montserrat";
21+
font-weight: 400;
22+
font-display: swap;
23+
font-style: normal;
24+
font-named-instance: "Regular";
25+
src: url(/fonts/Montserrat-Regular.ttf) format("truetype");
26+
}
27+
28+
@font-face {
29+
font-family: "Montserrat";
30+
font-weight: 500;
31+
font-display: swap;
32+
font-style: normal;
33+
font-named-instance: "Medium";
34+
src: url(/fonts/Montserrat-Medium.ttf) format("truetype");
35+
}
36+
37+
@font-face {
38+
font-family: "Montserrat";
39+
font-weight: 600;
40+
font-display: swap;
41+
font-style: normal;
42+
font-named-instance: "SemiBold";
43+
src: url(/fonts/Montserrat-SemiBold.ttf) format("truetype");
44+
}
45+
46+
@font-face {
47+
font-family: "Montserrat";
48+
font-weight: 700;
49+
font-display: swap;
50+
font-style: normal;
51+
font-named-instance: "Bold";
52+
src: url(/fonts/Montserrat-Bold.ttf) format("truetype");
53+
}
54+
55+
@font-face {
56+
font-family: "Montserrat";
57+
font-weight: 800;
58+
font-display: swap;
59+
font-style: normal;
60+
font-named-instance: "ExtraBold";
61+
src: url(/fonts/Montserrat-ExtraBold.ttf) format("truetype");
62+
}
63+
64+
:root {
65+
--text: #1c1c1c;
66+
--background: #f5f5f5;
67+
--primary: #283272;
68+
--secondary: #f5b21b;
69+
--accent: #756783;
70+
--success: #00c458;
71+
--error: #eb1c50;
72+
--danger: #ff653f;
73+
74+
--link: #f5b21b;
75+
--link-visited: #f5b21b;
76+
77+
--nav-text: #f5f5f5;
78+
--nav-active: #f5b21b;
79+
--nav-background: #292929;
80+
81+
--accordion: #f5b21b;
82+
--accordion-dark: #f5b21b;
83+
--accordion-content-dark: #2b2b2b;
84+
--accordion-content: #ffffff;
85+
--accordion-active: #fac341;
86+
--accordion-divider: #1c1c1c;
87+
--accordion-divider-dark: #ca9313;
88+
--subtitle: #2b2b2b;
89+
--subtitle-dark: #a0a0a0;
90+
--button-border: #f5b21b;
91+
--button-background: #f5b21b;
92+
--button-background-hover: #f5b41b90;
93+
--button-active: #00509b;
94+
--button-outline-background-hover: #f5b41b52;
95+
--dialog-border: #f5b21b;
96+
--dialog-text-border: #f5b21b;
97+
}
98+
99+
#headline {
100+
font-family: "Impact", sans-serif;
101+
color: var(--primary);
102+
word-break: break-word;
103+
}
104+
105+
#headline > span {
106+
word-break: keep-all;
107+
}
108+
109+
.accordion-active, .accordion.accordion-last {
110+
--accordion-divider-dark: var(--accordion);
111+
}
112+
113+
body,
114+
button {
115+
font-family: "Montserrat", sans-serif;
116+
}
117+
118+
/* https://codepen.io/sosuke/pen/Pjoqqp?__cf_chl_jschl_tk__=ecc0b72797ae71bc009d6322e3e470773936b386-1604211766-0-ASpz720gXnc6Ej0vzlgY9-KLmlPkldgcOx1wAmGTUCjLZLOxkArNxpRzZ9m8woL-NGmP9LBGVPws8UxMJZrR7O1qFH6QkKtrGVPw6StRnXiK1XTQR_nY905r0XobAG2nOmyC6Zq8mdyPDp1MyHD7JLodJUXCRViXhtmLmRVE_-JGarVJRlxs6k3DzAOQQEJewfp00DjhlD0mxr8ZKpk2yq6IPTZZQ52XYxh26FC5MxLHhs7LuAwhtolmDZyp4_IuwRg8I5m-2--MmvGE8CCqjRWrkE85zgkMXPlOqcZtppRpZhn6Uz9DZAuKheHwVBb0ySIhFYG92bvQOgiKX0TTswB1SHgOLIeqktuyUaAgxI_h */
119+
.iconadjusted {
120+
filter: invert(57%) sepia(61%) saturate(2399%) hue-rotate(156deg) brightness(105%) contrast(102%);
121+
}
122+
123+
#people {
124+
width: 60%;
125+
}
126+
127+
@media screen and (max-width: 768px) {
128+
#people {
129+
width: 80%;
130+
}
131+
132+
.smallcolumn-img {
133+
width: 100%;
134+
}
135+
136+
.smallcolumn-img img {
137+
width: 100%;
138+
}
139+
}

assets/js/.gitkeep

Whitespace-only changes.

config.toml

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
theme = "papersite-template"
2+
languageCode = "en-us"
3+
baseurl = "http://ghostwriteattack.com/"
4+
title = "GhostWrite"
5+
6+
author = "Fabian Thomas"
7+
copyright = "Copyright © 2024, CISPA Helmholtz Center for Information Security, all rights reserved."
8+
9+
disableKinds = ["section", "taxonomy", "term", "RSS", "robotsTXT"]
10+
11+
[params]
12+
name = "GhostWrite"
13+
description = "This is the site for an example attack."
14+
15+
institute_street = "Musterstraße 42"
16+
institute_city = "12345 Berlin"
17+
institute_country = "Germany"
18+
19+
favicon = "favicon.ico"
20+
21+
[markup]
22+
# syntax highlight settings
23+
# available themes: https://xyproto.github.io/splash/docs/
24+
[markup.highlight]
25+
style = "onedark"
26+
# unsafe to ensure all shortcodes function correctly
27+
[markup.goldmark.renderer]
28+
unsafe= true

content/_index.md

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
author: Leon Trampert
3+
title: "GhostWrite"
4+
logo: "/ghostwrite.svg"
5+
logo_header: "/ghostwrite-no-text.svg"
6+
header_title: "Home"
7+
header_menu: true
8+
date: 07-10-2023
9+
---
10+
11+
The GhostWrite vulnerability affects the T-Head XuanTie C910 RISC-V CPU.
12+
This vulnerability allows unprivileged attackers, even those with limited access, to read and write any part of the computer's memory and to control peripheral devices like network cards.
13+
GhostWrite renders the CPU's security features ineffective and cannot be fixed without disabling around half of the CPU's functionality.
14+
15+
{{< linkbutton title="READ" icon="fas fa-book fa-1x" url="/riscvuzz.pdf" >}}
16+
17+
<div class="columns" style="margin-top: 1rem">
18+
<div>
19+
{{< modalbutton title="CITE" icon="fa-solid fa-quote-left" id="citebutton" classes="buttonoutline buttonsmall" >}}
20+
@misc{Thomas2024RISCVuzz,
21+
title={{RISCVuzz}: Discovering Architectural {CPU} Vulnerabilities via Differential Hardware Fuzzing},
22+
author={Thomas, Fabian and Hetterich, Lorenz and Zhang, Ruiyi and Weber, Daniel and Gerlach, Lukas and Schwarz, Michael},
23+
howpublished = {\url{https://ghostwriteattack.com/}},
24+
year={2024},
25+
}
26+
{{< /modalbutton >}}
27+
</div>
28+
<div>
29+
{{< linkbutton title="TRY" icon="fas fa-flask fa-1x" url="https://github.com/cispa/ghostwrite" classes="buttonoutline buttonsmall" >}}
30+
</div>
31+
</div>

content/external.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
title: "External"
3+
---
4+
5+
## External Site
6+
7+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Soluta eaque autem consectetur possimus, animi iusto. Eveniet nesciunt nemo blanditiis voluptatibus inventore ipsum magni facilis ut saepe vel? Expedita, possimus ea.

content/homepage/acknowledgements.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
title: "Acknowledgements"
3+
weight: 80
4+
slug: "acknowledgements"
5+
small: true
6+
---
7+
8+
This work was supported in part by Semiconductor Research Corporation (SRC) Hardware Security Program (HWS) and by a Google Research Scholar award.
9+
Any opinions, findings, conclusions, or recommendations expressed in this paper are those of the authors and do not necessarily reflect the views of the funding parties.

content/homepage/background.md

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
weight: 0
3+
header_title: "Description"
4+
header_menu: false
5+
slug: "fundamentals"
6+
---
7+
8+
<div width=100% style="text-align: justify;">
9+
10+
{{< title title="Fundamentals." subtitle="Process Isolation and Assembly Instructions.">}}
11+
12+
Modern operating systems work together with the CPU to keep each process running on your system isolated from the others.
13+
To do this, the operating system divides the *physical* memory into separate *virtual* memory spaces, one for each process.
14+
This ensures that each process can only access its own *virtual* memory and cannot interfere with other processes.
15+
16+
Your computer runs programs by executing instructions on the CPU.
17+
These instructions can range from very simple tasks, such as adding two numbers, to more complex operations.
18+
Usually, these instructions and their behaviors are thoroughly documented in the CPU vendor's manuals.
19+
However, CPUs sometimes also contain undocumented instructions.
20+
21+
</div>

0 commit comments

Comments
 (0)