Software Security

开始时间: 04/22/2022 持续时间: 6 weeks

所在平台: CourseraArchive

课程类别: 计算机科学

大学或机构: University of Maryland, College Park(马里兰大学学院园分校)

授课老师: Michael Hicks

课程主页: https://www.coursera.org/course/softwaresec

课程评论:没有评论

第一个写评论        关注课程

课程详情

Software is everywhere: in laptops and desktops, mobile phones, the power grid ... even our cars and thermostats. Software is increasingly the vehicle that drives our economy and our personal lives. But software’s pervasiveness, and its importance, make it a target: at the root of many security compromises is vulnerable software.

In this course we will look at how to build software that is secure.

We will see that security must appear at all phases in the development lifecycle, including requirements development, system design, implementation, testing/validation, and maintenance. To start, we will consider tasks and methods that enhance a software system's design, including threat modeling and attack surface reduction.

Then we will examine the most prevalent software implementation flaws. At the root of many of these flaws is a failure to mute the influence of untrusted information, and a failure to restrict the flow of private information. We will examine flaws like buffer overruns and double-free's that are present in programs written in low-level programming languages like C and C++. We will also examine flaws, like data races and improper randomness, that can arise in software written any language. Finally, we will look at flaws like SQL injection and cross-site scripting that are notable for their presence in web and mobile applications. Having examined these flaws and their role in security compromises, we will look at steps you can take to fix them, both at the design and the implementation level.

Finally, we will look at state-of-the-art tools and techniques for testing and otherwise verifying that software is secure. We will consider how security testing differs from functional testing (it's harder!). We will look at the art of penetration testing, which is the activity of trying to find and exploit weaknesses in a system prior to its deployment. We will also look at an emerging class of program analysis tools that can automatically identify flaws in programs, either by analyzing their code or by monitoring their execution.

At the conclusion of the course, the student will know how to "build security in" rather than consider it as an afterthought, and will have a plethora of skills, applicable at each phase of the development cycle, that can be used to strengthen the security of software systems.


课程大纲

The following topics will be covered, though not necessarily in equal depth; the first topics are likely to be about ¼ of the time, while the last two for the remaining ¾ with the secure coding topic problem being the majority of that.

Secure software design principles and process
  • How security fits in the development lifecycle, from requirements to support/maintenance

  • Threat modeling and impact on the design and code

  • Principles of secure code design

    • -- E.g., defense in depth, least privilege, small/simple trusted computing base, secure failures, secure defaults

  • Attack surface, and reducing it

Secure coding, including the following topics:
  • Idea: information and data flow, and application to input validation and privacy protection

  • Flaws and their remediation: Buffer overruns, integer arithmetic errors, cross-site scripting, SQL injection, race conditions, bad randomness, information exposure

Security testing, and auditing, including the following topics:
  • Differences between security testing and functional testing

  • Fuzz testing and other penetration testing techniques

  • Static and dynamic analysis methods/tools

课程评论(0条)

课程简介

In this course we will look at how to build software that is secure. At the conclusion of the course, the student will know how to "build security in" rather than consider it as an afterthought, and will have a plethora of skills, applicable at each phase of the development cycle, that can be used to strengthen the security of software systems.

课程标签

0人关注该课程

主题相关的课程