Navigation auf uzh.ch
- Template for the CT slides is available here (direct link), or here (page).
- Presentation schedule (R6), defined as below. Five groups will present on Day 1 (L14, 21.12), and two will present on Day 2 (E14, 22.12).
Attack | Defense | Day | Time | Room |
Group 7 - Name_of_your_group (PDF, 796 KB) | Group 5 - Anonymous (PDF, 665 KB) | 21.12 | 10:15 | 2.A.01 |
Group 5 - Anonymous (PDF, 726 KB) | Group 7 - Name_of_your_group (PDF, 505 KB) | 21.12 | ~ 10:33 | 2.A.01 |
Group 4 - rm -rf malware/ (PDF, 695 KB) | Group 3 - New security engineers here! (PDF, 458 KB) | 21.12 | ~ 10:51 | 2.A.01 |
Group 3 - New security engineers here! (PDF, 767 KB) | Group 2 - Group 9'; DROP TABLE USERS; -- (PDF, 581 KB) | 21.12 | ~ 11:09 | 2.A.01 |
Group 2 - Group 9'; DROP TABLE USERS; -- (PDF, 910 KB) | Group 6 - Still in progress (PDF, 429 KB) | 21.12 | ~ 11:27 | 2.A.01 |
Group 6 - Still in progress (PDF, 271 KB) | Group 1 - //TODO: Implement Security (PDF, 482 KB) | 22.12 | 10:15 | 1.D.29 |
Group 1 - //TODO: Implement Security (PDF, 1 MB) | Group 4 - rm -rf malware/ (PDF, 497 KB) | 22.12 | ~ 10:33 | 1.D.29 |
- Time: 7 mins (A), 7 mins defense (D). Around 4 mins Q&A.
- Send the slides at least 30 mins before the CT presentation. They will be presented from a single laptop to be efficient time-wise.
- Confirm whether the received source-code works. Via e-mail until E10, 24.11.2022.
- Template for the challenge task report is available here (ZIP, 590 KB) (.ZIP file). You can upload it directly to Overleaf.
- Stage 3 - "The Offense": Exchange of source code as in the Table below:
# | Group | Receive code from |
---|---|---|
1 | //TODO: Implement Security | 4 - confirmed |
2 | Group 9'; DROP TABLE USERS; -- | 6 - confirmed |
3 | New security engineers here! | 2 - confirmed |
4 | rm -rf malware/ | 3 - confirmed |
5 | Anonymous | 7 - confirmed |
6 | Still in progress | 1 - confirmed |
7 | Name_of_your_group | 5 - confirmed |
This semester's Challenge Task (CT) will happen in three stages.
In the first stage, each group will have to prepare a simple Web application containing a service that may store user credentials and service-related data. The application will be a Web-based TODO list in which users can define tasks at a future date/time defined by the user interacting with the front end. All data should be stored in a database at the backend, and a user may also be able to retrieve certain tasks that happened in the past. Since the developed application should be straightforward to deploy and operate, groups strongly recommend using Docker and docker-compose to implement the application.
In the second stage, each group will design and implement security policies and services they deem necessary to protect the application and its users' data. Once again, it is a key requirement that all security services and measures are deployed within the same docker-compose file.
In the third stage, the groups will exchange their source codes and perform a penetration test on the application to assess the application and data security. Two talks (offensive/defensive) should be presented, and a report should be delivered (6 pages disclosing the defensive and offensive measures - 3 pages each).
The full CT's description is also available in PDF (PDF, 405 KB).
The learning objective of this CT is to have students discuss and decide in small groups which theoretical concepts to use in practice, exercising the different aspects of network security (i.e., offensive and defensive security). Thus, this exercise is expected to foster students' creativity and ability to use adequate defense and offensive techniques and mechanisms in different environments (Web services) selected by the groups.
The groups shall inform the teaching assistants on the topic and discuss the proposal's feasibility. Each group must hand in their proposal until E03 via e-mail. Even though the groups are free to choose the application to be implemented, all groups must ensure that all requirements are met and follow the defined deadlines. The necessary information to complete the CT, assumptions, libraries, tools, and impact on the grade are detailed in the next sections.
A group will have a maximum of three two participants. Any special cases/requests should be agreed upon with the TA. During the challenge task, each group will be able to ask questions and get support from their supervisor(s):
# | Group Name | Participants | R1.1 | R1.2 | R3.1 | R2 | R5.1 | R3.2 | R4 | R5.2 | R6 |
---|---|---|---|---|---|---|---|---|---|---|---|
1 |
//TODO: Implement Security |
Oliver Kamer Bulin Shaqiri |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
2 |
Group 9'; DROP TABLE USERS; -- |
Kyrill Hux Jan Willi |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
3 |
New security engineers here! |
Zeen Wang Stefano Anzolut |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
4 |
rm -rf malware/ |
Nicolas Huber Anton Ivashkevich |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
5 |
Anonymous |
Ahmad Eynawi Valery Cortez |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
6 |
Still in progress |
Andrea Yachaya Tobias Frauenfelder |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
7 |
Name_of_your_group |
Reto Odoni Iulia Prozorova |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Portability is a key characteristic that must be ensured in all stages of the CT, meaning that the Web-based TODO-list application should be easily deployed and operated on different machines. However, for each CT group, the following key requirements need to be met:
This year's CT will be executed in three main stages and different tasks within each stage. The first stage concerns the definition and implementation of a Web service; stage 2 is the addition of protection services, mechanisms, and policies; and stage 3 is the penetration test. Figure 2 illustrates the main stages.
Clarification: Deadlines consider until 23:59 of the day given in the description (and not the day before. Thus, it is possible to use exercise lectures to discuss (and remind) the necessary details.
Stage 1 - "The Service"
Stage 2 - "The Defense"
Stage 3 - "The Offense"
The CT's grading will be based on objective and subjective criteria. While objective criteria are the basis to check whether groups have achieved or not the minimum requirements (and within their deadlines), subjective criteria are used to assess how well these requirements have been implemented. A discussion between the professor and TAs will define the subjective criteria based on a qualitative assessment of the group's work based on the produced/delivered code, reports, and talks. Deadlines are based on exercise classes (e.g., E02, E03, check here), and involve the requirements defined in Sections 3 and 4. Deadlines for the minimum requirements are defined as follows (cf., Figure 3):
Thus, if all the aforementioned requirements are met on their specified deadlines, a group is approved with a minimum grade on the CT (i.e., 4.0). A subjective evaluation by the course TAs and professor will adjust the grading based on the quality of the code, report, and talks.
Reference Architecture
An overview of architectural components is given in Figure 1. The application should be exposed at ports 80 (443 preferably) in the localhost. As mentioned in the requirements, it is possible and recommended to use existing applications as a basis to develop and deploy its security mechanisms. That would allow groups to get familiar with the syntax and functioning of the application.
Additional security services and mechanisms can be freely chosen and adapted to application design. For example, it is possible to harden the security of a backend/frontend while adding additional security services (i.e., containers) such as firewall, authentication, intrusion detection system, and others. It is important that all security services are declared within the same docker-compose file and any additional configuration file shared between the localhost and containers, is also provided. Figure 1 shows a basic reference configuration serving as a starting point for each group to implement its own Web service and security mechanism(s).
It is also important to note that security should be improved as much as possible without sacrificing portability. The use of any additional security service that impairs its straightforward deployment and operation should be avoided. For example, adding a two-factor authentication that requires the use of external tokens or sending SMS. Given the CT goals where each group should play both the defensive and offensive roles, it is key that the developed application can be easily deployed in different machines. As such, any additional configuration should be automated (e.g., Python/bash script).
I found a mistake in the description, what should I do?
How many participants are allowed in a group?
Is it possible to use a different platform rather than Docker?
Should we contact a TA only during exercise classes in case we need assistance?
Is it possible to reuse code for my application or security mechanisms?
Our code requires additional/external configuration files, what should we do?
Can we use the time allocated to exercise classes for implementing the CT?
We are lost, what should we do/ask?
Starting point(s)
[1] https://docs.docker.com/get-started/02_our_app/
[2] https://hub.docker.com/r/thoba/todo-list-app
[3] https://github.com/julianoboese/docker-todo-list
[4] https://a7medayman6.github.io/projects/devops/todolist/
[5] https://learn.microsoft.com/en-us/visualstudio/docker/tutorials/docker-tutorial
[6] https://www.google.com/search?q=todo+list+docker&oq=todo+list+docker
Reminder: always be extra careful with running non-verified third-party code (such as the application developed by another CT group).