C語言安全程式設計 (Secure Coding in C and C++)
- Course Number: 219172
- 課程目標Course objectives:
This course identifies and explains these root causes of software
defects and vulnerability, and shows the steps that can be taken to
prevent exploitation. Moreover, this course encourages students to adopt
security best practices and to develop a security mindset that can help
protect software from tomorrow’s attacks, not just today’s. Drawing on
the reports and conclusions from CERT (Computer Emergency Response Team), this course systematically identifies the program errors most likely to lead to security breaches, shows how they can be exploited, reviews the potential consequences, and presents secure alternatives.
- Course time: Wednesday 18:10-21:00 (3JKL)
- Classroom: TC-209
- 修課人數: 23
- Textbook:
- [eBook] Michael Howard and David LeBlanc, "Writing Secure Code",
2nd Edition, Microsoft Press, 2003.
- References:
-
Robert Seacord, "Secure
Coding in C and C++", Addison-Wesley Professional; 2nd edition
(April 11, 2013).
ISBN: 978-0321822130
- Robert C. Seacord, "CERT® C Coding Standard, Second Edition,
The: 98 Rules for Developing Safe, Reliable, and Secure Systems"
- John Viega, "Secure Programming Cookbook for C and C++: Recipes for
Cryptography, Authentication, Input Validation and More",
O'Reilly Media; 1st edition (August 5, 2003).
ISBN:978-0596003944
- 授課方式Teaching approach:
Lectures, Oral Presentations, & Hands-On Exercises
- Grading criteria:
- Oral Presentation (30%)
- Exercise (10%)
- Midterm Exam (30%)
- Term Project (30%)
- 先修課程Prerequisites: 程式設計
- Software:
- VirtualBox 6.1
- PuTTY 0.76
-
Visual Studio 2022 Community Edition (English version)
- TA協助事項Teaching Assistant tasks:
Hands-On Assistance, Presentation Rehearsal
Syllabus
- 9/14 Chapter 5: Buffer Overrun
- 9/21 Chapter 3: Security Principles to Live By
- 9/28 Chapter 6: Access Control
- 10/5 Chapter 7: Running with Least Privilege
- 10/12 Chapter 8: Cryptographic Foibles
- 10/19 Chapter 9: Protect Secret Data
- 10/26 Chapter 10: Input Validation
- 11/2 Chapter 11: Canonical Representation Issue
- 11/9 Chapter 12: Database Input Issues
- 11/16 Chapter 13: Web-Specific Input Issues
- 11/23 Chapter 14: Internationalization Issues
- 11/30 Chapter 15: Socket Security
- 12/7 Chapter 16: Securing RPC (Remote Procedure Call)
- 12/14 Chapter 17: Protecting Against DoS Attacks
- 12/21 Rehearsal of Exam
- 12/28 Exam
Websites
- OpenSSF
- Mailing Lists
- 教育部資訊安全人才培育計畫
- SecTools.Org: Top 125 Network
Security Tools
- Prossimo - Memory Safety
- x86
Assembly Instrctions
- Assembly
Directives
- GNU Assembler
(as)
- [Oracle]
x86 Assembly Language Reference Manual
- [Brown]
x64 Cheat Sheet
- The Cheat Sheet lists brief concepts about the X86 assembler, including registers, operands specifiers, instructions, and simple code practices.
- [Yale]
x86
Assembly Guide
- The guide provides a clear explanation and example of each component in X86.