Se­cu­re Soft­ware En­gi­nee­ring SS2025

Cour­se Ab­s­tract

What does it take to engineer software systems securely? This is the key question we wish to address in this course. Answering it requires to develop an understanding of the following key areas of secure software engineering: threat modeling, secure design, secure coding, security validation, secure deployment and maintenance. In this course we will be covering those areas in an example-driven style, discussing current techniques applicable to those areas and lessons learned from concrete real-world security breaches.

Pre­re­qui­si­tes

Participants are expected to have completed or nearly completed the first section of the Bachelor degree, in particular the Softwaretechnikpraktikum. On top of that there are no special prerequisites for this course.

Cour­se Ma­te­ri­al

The slides and exercise sheets will be uploaded after each lecture on the course's PANDA page (TBA)

Sche­du­le

The teaching language will be English. Questions in German will be permitted.

 

The following course schedule is non-binding and may change at any time. Changes will be announced via PANDA.

No.DateLecture TopicOWASP Top-10Lecturer
110.04.25IntroductionOWASP IntroductionBodden
217.04.25What Security Is!A1: Broken Access ControlBodden
324.04.25Misuse & Abuse CasesA3: InjectionBodden
408.05.25Threat ModelingA4: Insecure DesignKhedkar
515.05.25Risk Assessment and Test PlanningA5: Security MisconfigurationBodden
622.05.25Defensive Coding and Security Mechanisms 1A9: Security Logging and Monitoring FailuresBodden
705.06.25Defensive Coding and Security Mechanisms 2A7: Identification and Authentication FailuresBodden
812.06.25Applied CryptographyA2: Cryptographic FailuresBodden
926.06.25Code Inspection and Program AnalysisA6: Vulnerable and Outdated ComponentsKhedkar
1003.07.25Vulnerability AssessmentA10: Server-Side Request ForgeryBodden
1110.07.25Deployment and DistributionA11: Next stepsBodden
1217.07.25Insider Threats and Usability and RecapA12: OWASP-RecapBodden

 

Exercise Sheets

There will be 5 exercise sheets published in PANDA. One will be published every second week.

 

Exercise Sessions

There will be an exercise session (almost) every 2 weeks.  The exercise sessions will introduce each newly released exercise sheet and discuss the results of the previous assignment sheet. Additionally, each of the {S}ecurify phases will be introduced and {S}ecurify presentations will be given.

Exercise session 1: Wednesday, 09:00 - 11:00 in  F 0 530

Exercise session 2: Thursday, 14:00 - 16:00 in  F 2 211

 

Exercise Schedule

ExerciseDates{S}ecurify Content
116.04.25 / 17.04.25Introduction to Contest & Develop Phase
230.04.25 / 01.05.25 (Holiday) 
314.05.25 / 15.05.25Introduction to Breach & Review Phase
428.05.25 / 29.05.25 (Holiday) 
511.06.25 / 12.06.25Introduction to Repair Phase
625.06.25 / 26.06.25 

Re­gis­tra­ti­on & Ques­ti­ons

To attend the course, you have to register in the PAUL system as a participant.

{S}ecurify: participation in the {S}ecurify contest is optional but highly encouraged. There is also a possibility to gain bonus points for successful participation.

Lear­ning Out­co­mes

After having attended this course, participants will have developed a solid understanding of the most important aspects of secure software engineering, both in theory and practice. This includes the ability to identify and model threats to software systems, to avoid the most common classes of vulnerabilities, and to identify and apply techniques and tools to avoid or identify the introduction of security vulnerabilities.

Syl­la­bus

The course will be comprising different theoretical and practical parts:

  • The main lecture will cover background information about all relevant aspects of a secure software-engineering lifecycle. We will be motivating and explaining the core ideas with real-world examples. An integral part of every lecture will be the discussion of one of OWASP top-10 security risks. inspired by past real-world vulnerabilities and attacks, we will discuss each category of OWASP security risks and showcase common weaknesses and how to prevent them. Where possible, the discussion will directly relate to this day's remaining content of the lecture.
  • In addition, we will be conducting a practical contest called {S}ecurify. The course is meant to help students experience a secure development lifecycle first hand. In the "Develop" phase, students will be asked to gather in teams and develop small software projects based on a formal specification, also including security requirements. In the "Breach" phase, the developed software will be exchanged between development teams to break the implementation, i.e., find and exploit security vulnerabilities in code of other teams. Lastly, in the "Repair" phase, teams will get the chance to fix found vulnerabilities and, hence, render their software product more secure. This contest will be conducted using an automated online infrastructure.
  • The exercise classes are meant to reinforce the student's understanding of the main lecture's content. With practical, sometimes interactive exercises students will be able to learn important skills that can also support their work in the {S}ecurify contest.

The main lecture will discuss crucial elements of a Secure Software Development Lifecycle, including:

  • Threat modeling
  • Risk analysis
  • Architectural security
  • Secure coding
  • Applied Cryptography
  • Secure configuration and deployment
  • Updates and maintenance

Re­com­men­ded Rea­ding Ma­te­ri­al

We will not be able to provide a script for this course.
However, a lot of the topics are also covered in the book:

Gary McGraw. Software Security: Building Security In

(online resource of the book)

Regarding the contest, we recommend this publication:

Andrew Ruef, Michael Hicks, James Parker, Dave Levin, Michelle L. Mazurek, and Piotr Mardziel. 2016. Build It, Break It, Fix It: Contesting Secure Development. In Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (CCS '16). ACM, New York, NY, USA, 690-703. DOI: doi.org/10.1145/2976749.2978382