- (7/5) A list that maps group numbers to email addresses has been posted to the discussion group. Please, go ahead and exchange project report drafts with your opposing group by email before the deadline.
- (7/5) Project presentation schedule is now available (see below). Note that the presentation time is 8 minutes + 2 minutes for questions. Groups listed together are each others' "opponents".
- (20/4) Notes from the course evaluation meeting with student representatives are now available.
- (5/4) Registration to the OWASP Gothenburg event on April 11 is now open - first come, first served (link below)!
- (20/3) The student representatives for course evaluation are:
MPALG hallenv AT student.chalmers.se VIKTOR HALLÉN MPALG mondal AT student.chalmers.se SOUMYADEEP MONDAL MPCSN fremarl AT student.chalmers.se FREDRIK MÅRLIND MPSOF sinans AT student.chalmers.se SINAN SALEH
- (20/3) The lab submission system is now online.
- (19/3) Registration to the OWASP Gothenburg event on March 27 is now open - first come, first served (link below)!
- (19/3) For the labs and the project, you need to work in groups of two. There will be an opportunity for group matching at the break of the first lecture. If you have difficulties finding a partner, please use the discussion group.
- (16/3) Course discussion group is up and running. Discussions of general questions, labs, and projects are welcome. Helping each other to find answers is encouraged, but of course without giving away solutions.
- (7/3/2018) First lecture: Monday, Mar 19.
Security specializationThis course is a part of the Chalmers and GU Security Specialization, a package of four courses in computer security.
Why language-based security?Traditionally, computer security has been largely enforced at the level of operating systems. However, operating-system security policies are low-level (such as access control policies, protecting particular files), while many attacks are high-level, or application-level (such as email worms that pass by access controls pretending to be executed on behalf of a mailer application). The key to defending against application-level attacks is application-level security. Because applications are typically specified and implemented in programming languages, this area is generally known as language-based security. A direct benefit of language-based security is the ability to naturally express security policies and enforcement mechanisms using the developed techniques of programming languages.
Who should study language-based security?You should have previously studied a course in programming languages (and of course basic programming skills are assumed) and basics of computer security. It is an advantage if you have studied courses such as semantics of programming languages and compiler construction.
You should be interested in some of the following:
- Obtaining a deeper understanding of programming language-based concepts for computer security.
- The design and implementation of security mechanisms.
- Computer science research in the area of programming languages and security.
What will you learn?After the course, you should be able to apply practical knowledge of security for modern programming languages. This includes the ability to identify application- and language-level security threats, design and argue for application- and language-level security policies, and design and argue for the security, clarity, usability, and efficiency of solutions, as well as implement such solutions in expressive programming languages. You should be able to demonstrate the critical knowledge of principles behind such application-level attacks as race conditions, buffer overruns, and code injections. You should be able to master the principles behind such language-based protection mechanisms as static security analysis, program transformation, and reference monitoring.
ContentThis course combines practical and cutting-edge research material. For the practical part, the dual perspective of attack vs. protection is threaded through the lectures, laboratory assignments, and projects. For the cutting-edge research part, the course's particular emphasis is on the use of formal, or semantic, models of program behaviour for specifying and enforcing security properties.
PrerequisitesKnowledge of the material covered in the courses Programming Languages and Computer Security is recommended although not required as a prerequisite.
Instructor and TAsInstructor: Andrei Sabelfeld, office 5476, voice 1018 (Chalmers).
Course literatureNo specific book is used as a course book. The material consists of hand-outs, papers, etc. However, I recommend the following book for complimentary reading on the subject:
- Building Secure Software: How to Avoid Security Problems the Right Way by John Viega and Gary McGraw, Addison-Wesley, 2001, 528 pages.
Lecture/supervision schedule and deadlines
The schedule is subject to change. Stay tuned!
Last year's lecture slides are already on the web, but changes and updates may be done before the actual lecture. If these updates are substantial then it will be indicated in the latest news section.
In order to view the slides, you need to be under the .se domain. Otherwise, let us know your domain - we will include it in the permission set.
All deadlines are firm.
|Mon, Mar 19, 10-12, EA||Introduction to language-based security. Overview of the
Sect. I of Saltzer and Schroeder, Protection of Information in Computer Systems, 1975.
|Wed, Mar 21, 13-15, EC||Information flow security
|Sabelfeld and Myers, Language-Based
Information-Flow Security, 2003.|
Try this information flow exercise. See below for exercise supervision time. Bonus: JSFlow challenge.
|Mon, Mar 26, 10-12, EA||Design principles for security protocols||Abadi and Needham, PrudentEngineering Practice for Cryptographic Protocols, 1995.|
|Tue, Mar 27||OWASP Gothenburg event: automotive IT security. Registration is here. First come, first served!|
|Wed, Mar 28, 10-12, ED-3507||Exercise: Information Flow Challenge||Bonus: JSFlow challenge.|
|Wed, Mar 28, 13-15, ED-5476||Office hours to consult on project proposals|
|Thu, Mar 29||Project proposal deadline|
|Mon, Apr 9, 10-12, EA||Data races, randomness, and determinism
|Savage, Burrows, Nelson, Sobalvarro, and Anderson, Eraser:
A Dynamic Data Race Detector for Multithreaded Programs, 1997.
Rafnsson and Sabelfeld, Secure Multi-Execution: Fine-grained, Declassification-aware, and Transparent, 2013.
Clark and Hunt, Noninterference for Deterministic Interactive Programs, 2008.
|Wed, Apr 11, 10-12, ED-3507||ToCToU lab supervision|
|Wed, Apr 11, 13-15, ED-5476||Office hours to consult on projects|
|Wed, Apr 11||OWASP Gothenburg event: Cryptography. Registration is here. First come, first served!|
|Fri, Apr 13, 10-12, 2505/7||ToCToU lab supervision|
|Fri, Apr 13||ToCToU lab deadline|
|Mon, Apr 16, 10-12, EA||Buffer overruns; Database security; Privacy-violating information
flow in web applications|
|Aleph One, Smashing
the Stack for Fun and Profit.
Claes Nyberg's slides and tutorial with exercises.
|Wed, Apr 18, 10-12, ED-3507||r00tshell lab supervision|
|Wed, Apr 18, 13-15, ED-5476||Office hours to consult on projects|
|Fri, Apr 20, 10-12, 2505/7||r00tshell lab supervision|
|Fri, Apr 20, 13-15, 2505/7||r00tshell lab supervision|
|Fri, Apr 20||r00tshell lab deadline|
|Mon, Apr 23, 10-12, EA||Web-application security
|OWASP Excess XSS, tutorial by Jakob Kallin and Irene Lobo Valbuena, from their course project in 2013|
|Wed, Apr 25, 10-12, ED-3507||WebAppSec lab supervision|
|Wed, Apr 25, 13-15, EC||Safe By Default Privacy Frameworks|
Invited lecture by Ioannis Papagiannis, Facebook, London.
|Marinescu, Parry, Pomarole, Tian, Tague, Papagiannis, IVD: Automatic Learning and Enforcement of Authorization Rules in Online Social Networks, 2017.|
|Fri, Apr 27, 10-12, 2505/7||WebAppSec lab supervision|
|Fri, Apr 27, 13-15, ED-3354||WebAppSec lab supervision|
|Fri, Apr 27||WebAppSec lab deadline|
|Wed, May 2, 13-15, EC||
Advanced web application security|
Lecture by Steven Van Acker.
Slides: part 1 and part 2.
|Mon, May 7, 10-12, EA|| Java security, Stack inspection and access
Certifying compilation; Typed Assembly Languages, Proof-Carrying Code; Copyright protection and code obfuscation
|Wallach, Felten, Understanding
Java Stack Inspection, 1998.|
Morrisett, Walker, Crary, Glew, From System F to Typed Assembly Language, 1999.
|Wed, May 9, 13-15, ED-5476||Office hours to consult on projects|
|Thu, May 10||Project draft to opponents|
|Mon, May 14, 10-12, EA||Project presentations|
Presentation time: 8 minutes + 2 minutes for questions (strict limit!), following the presentation guidelines. If you are unable to use your laptop for the presentation, just email your powerpoint/pdf presentation to me in advance.
The opponent group must be present and ask at least two questions. The groups (as in Fire) to present projects:
Groups 1-2 4-5 6-7 8-9
Groups listed together are each others' "opponents". For example, groups 1 and 2 oppose each other and so on.
|Wed, May 16, 13-15, EC||Project presentations continued. Groups 28-29 30-31 13-33 27|
|Mon, May 21, 10-12, EA||Project presentations continued. Groups 10-24 12-26 15-16 17-18|
|Wed, May 23, 13-15, EC||Project presentations continued. Groups 19-21 22-23 11-25 32-35|
|Fri, May 25||Project report deadline|
ExercisesIn order to get up to speed on information flow, try this information flow challenge. See the schedule for the supervision slot for working on this exercise. Bonus: JSFlow challenge.
Lab assignments and project
You are expected to find a lab partner, with whom you will do the assignments (laborations). If you have difficulties finding a partner, please use the discussion group. No one-person or three-person groups are allowed unless there is a well-justified reason and permission from the instructor.
There are three assignments ("laborations") and a project. The lab are about specific problems whereas projects can be more open-ended (some ideas for projects are supplied below). Further information on the lab and project:
- ToCToU lab (on data races)
- r00tshell lab (on buffer overruns)
- WebAppSec lab (on web application security)
The supervision takes place according to the schedule above.
In case you have passed some of the labs and/or project in previous years, no need to resumbit the solutions. However, you still need to submit a short text file for each passed lab/project saying when (what year) you passed it.