Vulnerability and Attack Labs
People learn from mistakes. In security education, we study mistakes
that lead to software vulnerabilities. Studying mistakes from the
past not only help students understand why systems are vulnerable, why
a "seemly-benign" mistake can turn into a disaster, and
why many security mechanisms are needed. More importantly,
it also helps students learn the common patterns of vulnerabilities,
so they can avoid making similar mistakes in the future.
Moreover, using vulnerabilities as case studies,
students can learn the principles of secure design, secure programming,
and security testing.
(1) Software in general
- Set-UID Program Vulnerability Lab:
exploit the vulnerabilities of the privileged Set-UID programs.
(Survey Results)
-
Buffer Overflow Vulnerability Lab:
exploit the buffer overflow vulnerability using the shell-code approach.
(Survey Results)
-
Return-to-libc Attack Lab:
exploit the buffer-overflow vulnerabilities using the return-to-libc attack.
(Survey Results)
-
Format String Vulnerability Lab:
exploit the format string vulnerability.
(Survey Results)
-
Race Condition Vulnerability Lab:
exploit the race condition vulnerability.
(Survey Results)
- Chroot Sandbox Vulnerability Lab:
explore how the chroot sandbox can be broken.
(2) Network Protocols
- TCP/IP Attack Lab: exploit the vulnerabilities
of the TCP/IP protocols.
(Survey Results)
- DNS Pharming Attack Lab:
exploit the vulnerabilities of the DNS protocol to
launch Pharming attacks.
(3) Web Applications
-
Cross-site Scripting Attack Lab
exploiting cross-site scripting vulnerabilities.
(Survey Results)
-
Cross-site Request Forgery Attack Lab:
exploiting cross-site request forgery vulnerabilities.
-
ClickJacking Attack Lab
(new):
experience the ClickJacking attacks.
- SQL-Injection Attack Lab
(Under revision):
experience the SQL-Injection attacks.
(Survey Results)
Design/Implementation Labs
The objective of the design/implementation labs is to
provide students with opportunities to apply security principles
in
designing and implementing systems.
They help students achieve learning by system development.
(1) Networking
- Linux Firewall Lab
(new):
implement a simple firewall (called "minifirewall") for Linux.
- Minix Firewall Lab
implement a simple firewall (called "minifirewall") for Minix.
(Survey Results)
- IPSec Lab:
implement the IPSec protocol (simplified) for Minix (a comprehensive
project).
(Survey Results)
- Virtual Private Network (VPN) Lab (Under development):
implement a simple SSL VPN for Linux.
(2) System
- Role-Based Access Control (RBAC) Lab
design and implement an integrated access control system for Minix
that uses both capability-based and role-based access control
mechanisms. Students need to modify Minix kernel to implement both capability
and RBAC (this is a comprehensive project for access control).
(Survey Results)
- Capability Lab: design and implement
a capability-based access control system for Minix (this is a comprehensive project).
- Encrypted File System Lab:
design and implement an encrypted file system for Minix (a comprehensive project).
- Set-RandomUID Lab: design and
implement a simple sandbox for Minix.
- Address Space Layout Randomization (ASLR) Lab
randomize stack and heap in Minix to improve security.
Exploration Labs
The objective of the exploration labs is two-fold: the first is
to enhance students' learning via observation, playing and exploration, so
they can see what security principles ``feel'' like in a real system;
the second objective is
to provide students with opportunities to apply security principles
in
analyzing and evaluating systems.
The exploration labs provide a feasible means by which the students have
"a direct encounter with the phenomena being studied rather than merely thinking
about the encounter, or only considering the possibility of doing something
about it".
-
Packet Sniffing and Spoofing Lab
(new):
explore how sniffing and spooring tools are implemented.
-
Linux Capability Exploration Lab:
explore the capability access control in Linux.
-
Web Browser Access Control Lab:
explore the Same-Origin Access Control Policy in web browsers.
-
Crypto Lab I -- Secret-Key Encryption
(under development):
explore secret-key encryption and its applications.
-
Crypto Lab II -- One-Way Hash Function
(under development):
explore one-way hash function and its applications.
-
Crypto Lab III -- Public-Key Cryptography and PKI
(Under development):
explore public-key cryptography, certificate, and PKI.
- Pluggable Authentication Modules (PAM) Lab:
explore a flexible authentication technique.
- SYN Cookies Lab:
explore the SYN Cookies mechanism in Linux.