Engineering Secure Software

Case Study Project

Back to schedule

Overview

The purpose of the case study project is to get you acquainted with the security challenges of a real, complex, messy software product. In class, you will be learning about security ideals, common mistakes, and best practices. In the case study, you will see how those ideals are applied, or not applied.

This case study is designed to help you in two key ways: investigation and co-authorship. The investigative part of this project is to help you to learn about software projects from the outside in. This means reading bug reports, documentation, mailing lists, commit logs, and anything else you can get your hands on to understand what's going on. The co-authorship part of this project is to help you learn what it's like to describe complex arguments (i.e. specific security risks) to a technical, yet non-security-minded audience. The "co-" part is to help you learn how to write much like how you've learned how to code... communicating, coordinating, know when to work alone, know when to work collaboratively, giving good feedback, and reacting to feedback.

The main component of this project is a paper that will be written much like we write code - iteratively. Every few weeks we will have another chapter of the paper due, along with the revisions from the previous chapter. A significant grading emphasis will be based on how well you react to the instructor's feedback, and how well you give feedback to others.

In terms of writing style, here's what the instructor likes to see:

For formal, technical writing, brevity and clarity are key. I would far rather see one clear, thoughtful sentence than three repetitive sentences. You might notice that we have no word minimums or maximums here - only questions that must be answered.

Furthermore, the paper must have a cohesive writing style. Like coding, this is not something you want to be slapping together from a few paragraphs people wrote separately. The varying sections need to be all part of a single narrative.

Submissions and Deadlines

Formatting

Please use following formatting throughout your paper.

Case Study Proposal

Your instructor will assign teammates for this project (2-3 members per team). As a team, choose a case study project. Choosing a project may take some effort, as not every project out there makes a good candidate. Here are the minimum requirements for a good case study:

In your proposal, include the following:

Submission

Using the RIT GoogleDocs system, create a GoogleDoc Collection called "SE331 X" (where X is the name of your case study). Give editing permissions for that collection to all of your teammates, and to your instructor (you will have to use a special, non-RIT email for the instructor - given in class).

For this proposal, create a document called "X Case Study Proposal".

Grading scheme (10pts)

Chapter 1: Domain Analysis

The purpose of this chapter is to provide an overall assessment of the security risks posed by the domain of your case study. Your chapter must include:

A few notes:

Grading scheme (30pts)

Chapter 2: Design Analysis

The purpose of this chapter is to assess the high-level design of the system. Your chapter must include:

A few notes:

Grading Scheme (50 pts)

Code Inspection Assessment

The purpose of this chapter is to do a brief security assessment of your system at the code level. You will choose three different pieces of source code (e.g. a file or module) and conduct a code inspection as a group. Your goal is to find potential security concerns in your product. Your chapter must include:

A few notes:

Grading Scheme: (50 pts)

Presentation

Prepare a lightning talk of your case study. You do not need to cover every chapter of your paper. Instead, choose the most interesting part of your case study and present it in 7 minutes. You will have 3 minutes for questions. Powerpoint is not required. You may have one person present, or multiple people. Concrete examples are strongly encouraged.

Total Points: (20 pts)