There will be 5 laboratory exercises given throughout the semester related to lecture content.
|Lab||Released On||Due On|
|1. Cache Side Channels||Wed, February 9||Wed, March 2|
|2. Spectre||Wed, February 23||Wed, March 16|
|3. Website Fingerprinting||Wed, March 9||Wed, April 6|
|4. Rowhammer||Wed, March 30||Wed, April 20|
|5. ASLR Bypasses||Wed, April 13||Wed, May 4|
Each lab is due at 11:59 PM.
All of the starter code is available at our GitHub.
Labs will be submitted via GitHub.
Your repo will be located at
For lab 1, we will be using the Unicorn machine located at
unicorn.csail.mit.edu. We will be emailing you credentials you can use to connect to this machine. Please note that at the end of the semester we will be deleting your account on this machine, so don’t store anything important on it! (Your lab code will be safe as it is in git).
Once you’ve received your credentials, you can login to unicorn with:
For lab 2, we will be using the arch-sec machines located at
arch-sec-X.csail.mit.edu, where X is a number. We will be emailing you credentials and your exact machine hostname that you can use to connect to your machine. Please note that at the end of the semester we will be deleting your account on this machine, so don’t store anything important on it!
For lab 3, you will be using your own machine.
Once you’ve logged into your machine, you will need to set up your Git account and repository. This only needs to be done once per machine (so it must be done before starting lab 1 on Unicorn, done on your assigned arch-sec machine before starting lab 2, and done on your own machine prior to starting lab 3).
ssh firstname.lastname@example.org(lab 1) or
ssh username@arch-sec-X.csail.mit.edu(lab 2)
ssh-keygen -t rsa -b 4096(note that if you already have an ssh key, you can skip this)
- Press return until the command finishes.
cat ~/.ssh/id_rsa.pub(feel free to use an existing key if you have one)
- Copy this and create a new ssh key on your MIT GitHub account (instructions if you need help).
git clone email@example.com:6-888-sp22/YOUR_KERBEROS_ID.git securehwlabs
git config user.name "YOUR_KERBEROS_ID"
git config user.email "YOUR_MIT_EMAIL"
git remote add lab_release firstname.lastname@example.org:6-888-sp22/lab_release.git
To pull the starter code for each lab, you’ll need to perform the following.
git fetch lab_release
git merge lab_release/labX --allow-unrelated-histories -m "Merging lab code"
labX is replaced with the lab number (so for lab 3, you’ll merge
Every time you push to your repo, you have also submitted your lab!
You can push to the repo with the following:
git add FILES_YOU_CHANGED
git commit -m "WHAT YOU CHANGED"
Here are some resources from 6.004 to help you review caches and virtual memory.
Students can choose to do an optional final project in place of labs 3, 4, and 5. The final project will replace the grades for those three labs.