Course: ECU 510 Secure Programming
Purpose of Class:
This class is designed to provide students an insight of current security scenario and increasing hacking attempts on various information systems. The goal of the ethical hacking and countermeasures is to help the organizations take preemptive measures against malicious attacks by attacking the system themselves staying within legal limits.
Course Learning Outcomes:
Students who successfully complete this class will be able to:
- Understand the importance of secure programming and implement a standard set of secure programming practices, policies and guidelines to develop robust software applications
- Compare various application development models and methodologies, and implement a threat modelling approach to balance between usability and security of applications
- Analyze cryptography algorithms and encryption techniques, and design implementation strategies for securing information flow in the applications
- Understand the fundamental security concepts used by different programming languages and analyze the usability of different programming constructs in developing secure applications
- Identify the common vulnerabilities, threats and attack vectors in different programming languages, assess the implications and determine the appropriate countermeasures
- Analyse the working of port scanners and hacking tools, and write exploits to assess the application security for common attack vectors based on evidence, information, and research
- Understand the security implications of application documentation and error messages, and modify default documentation and error message settings so as not to reveal sensitive information
- Compare and contrast different application testing and debugging approaches, develop application testing strategy and explore the ways to avoid classic testing mistakes
- Examine updates, activation, piracy, and other real time application deployment issues, and implement controls for secure data communication between various applications
- Compare and contrast different tools that help in developing secure codes and assess the role of these tools in reducing development time and cost
Required Reading
- Writing Secure Code, Second Edition, by Michael Howard and David LeBlanc, Microsoft Press © 2003, ISBN:9780735617223.
- Writing Security Tools and Exploits, by James C. Foster and Vincent Liu, Syngress Publishing © 2006, ISBN:9781597499972.
- Buffer Overflow Attacks: Detect, Exploit, Prevent, by James C. Foster et al., Syngress Publishing © 2005, ISBN:9781932266672.
- Hack Proofing Your Web Applications, by Jeff Forristal and Julie Traxler (Technical ed.), Syngress Publishing © 2001, ISBN:9781928994312.
- Sockets, Shellcode, Porting & Coding: Reverse Engineering Exploits and Tool Coding for Security Professionals, by James C. Foster and Mike Price, Syngress Publishing © 2005, ISBN:9781597490054.
- Special OPS: Host and Network Security for Microsoft, UNIX, and Oracle, by Erik Pace Birkholz et al., Syngress Publishing © 2003, ISBN:9781931836692.
- Hack Proofing Linux: A Guide to Open Source Security, by James Stanger, Ph.D., Patrick T. Lane and Edgar Danielyan, Technical Editor, Syngress Publishing © 2001, ISBN:9781928994343
- Red Hat Linux Security and Optimization, by Mohammed J. Kabir, John Wiley & Sons © 2002, ISBN:9780764547546.
- Pro PHP Security, by Chris Snyder and Michael Southwell, Apress © 2005,ISBN:9781590595084
- Pro JSP, Third Edition, by Simon Brown et al., Apress © 2003, ISBN:9781590592250.
- JavaScript: The Complete Reference,by Thomas Powell and Fritz Schneider, McGraw-Hill/Osborne © 2001, ISBN:9780072191271.
- Microsoft PowerShell, VBScript and JScript Bible, by William R. Stanek, James O'Neill and Jeffrey Rosen, John Wiley & Sons © 2009, ISBN:9780470386804.
- Microsoft .NET Framework Security, by Surbhi Malhotra, Premier Press © 2002, ISBN:9781931841825.
- Malicious Bots: An Inside Look into the Cyber-Criminal Underground of the Internet, by Ken Dunham and Jim Melnick, Auerbach Publications © 2009, ISBN:9781420069037.
- Microsoft SQL Server 2008 Administrator's Pocket Consultant, by William Stanek, Microsoft Press © 2009, ISBN:9780735625891.
- Manage Software Testing, by Peter Farrell-Vinay, Auerbach Publications © 2008, ISBN:9780849393839.
- Ajax: The Complete Reference, by Thomas A. Powell, McGraw-Hill/Osborne © 2008, ISBN:9780071492164.
- PHP Oracle Web Development: Data Processing, Security, Caching, XML, Web Services, and Ajax, by Yuli Vasiliev, Packt Publishing © 2007, ISBN:9781847193636.
- Perl: The Complete Reference, Second Edition, by Martin C. Brown, McGraw-Hill/Osborne © 2001, ISBN:9780072129502.
- ASP 3 Fast & Easy Web Development, by Michael D. Thomasson, Premier Press © 2000, ISBN:9780761528548.
- Mac for Linux Geeks, by Tony Steidler-Dennison, Apress © 2009, ISBN:9781430216506.
- The Oracle Hacker's Handbook: Hacking and Defending Oracle, by David Litchfield, John Wiley & Sons © 2007, ISBN:9780470080221.
- Network Programming in .NET: With C# and Visual Basic .NET, by Fiach Reid, Digital Press © 2004, ISBN:9781555583156.
- Protecting Games: A Security Handbook for Game Developers and Publishers, by Steven Davis, Cengage Learning © 2008, ISBN:9781584506706.
- Security of e-Systems and Computer Networks, by Mohammad S. Obaidat and Noureddine A. Boudriga, Cambridge University Press © 2007,ISBN:9780521837644.
- Mobile Phone Programming and its Application to Wireless Networking, by Frank H.P. Fitzek and Frank Reichert, Springer © 2007, ISBN:9781402059681.
Week One:
Topics: Introduction to Secure Coding, Designing Secure Architecture, Cryptography, Buffer Overflows, Secure C and C++ Programming
OUTCOME:
- Understand the importance of secure programming and implement a standard set of secure programming practices, policies and guidelines to develop robust software applications
- Compare various application development models and methodologies, and implement a threat modelling approach to balance between usability and security of applications
- Analyze cryptography algorithms and encryption techniques, and design implementation strategies for securing information flow in the applications
- Understand the fundamental security concepts used by different programming languages and analyze the usability of different programming constructs in developing secure applications
- Identify the common vulnerabilities, threats and attack vectors in different programming languages, assess the implications and determine the appropriate countermeasures
- Compare and contrast different application testing and debugging approaches, develop application testing strategy and explore the ways to avoid classic testing mistakes
- Compare and contrast different tools that help in developing secure codes and assess the role of these tools in reducing development time and cost
Week Two:
Topics: Secure Java and JSP Programming, Secure JavaScript and VBScript Programming, Secure Microsoft.NET Programming, Secure PHP Programming, Securing Applications from Bots
OUTCOME:
- Understand the importance of secure programming and implement a standard set of secure programming practices, policies and guidelines to develop robust software applications
- Compare various application development models and methodologies, and implement a threat modelling approach to balance between usability and security of applications
- Analyze cryptography algorithms and encryption techniques, and design implementation strategies for securing information flow in the applications
- Understand the fundamental security concepts used by different programming languages and analyze the usability of different programming constructs in developing secure applications
- Identify the common vulnerabilities, threats and attack vectors in different programming languages, assess the implications and determine the appropriate countermeasures
- Understand the security implications of application documentation and error messages, and modify default documentation and error message settings so as not to reveal sensitive information
- Compare and contrast different tools that help in developing secure codes and assess the role of these tools in reducing development time and cost
Week Three:
Topics: Secure SQL Server Programming, SQL Rootkits, Secure Application Testing, VMware Remote Recording and Debugging, Writing Secure Documentation and Error Messages
OUTCOME:
- Understand the importance of secure programming and implement a standard set of secure programming practices, policies and guidelines to develop robust software applications
- Compare various application development models and methodologies, and implement a threat modelling approach to balance between usability and security of applications
- Analyze cryptography algorithms and encryption techniques, and design implementation strategies for securing information flow in the applications
- Understand the fundamental security concepts used by different programming languages and analyze the usability of different programming constructs in developing secure applications
- Identify the common vulnerabilities, threats and attack vectors in different programming languages, assess the implications and determine the appropriate countermeasures
- Understand the security implications of application documentation and error messages, and modify default documentation and error message settings so as not to reveal sensitive information
- Compare and contrast different application testing and debugging approaches, develop application testing strategy and explore the ways to avoid classic testing mistakes
- Compare and contrast different tools that help in developing secure codes and assess the role of these tools in reducing development time and cost
Week Four:
Topics: Secure ASP Programming, Secure Perl Programming, Secure XML, Web Services and AJAX Programming, Secure RPC, ActiveX and DCOM Programming, Secure Linux Programming
OUTCOME:
- Understand the importance of secure programming and implement a standard set of secure programming practices, policies and guidelines to develop robust software applications
- Analyze cryptography algorithms and encryption techniques, and design implementation strategies for securing information flow in the applications
- Understand the fundamental security concepts used by different programming languages and analyze the usability of different programming constructs in developing secure applications
- Identify the common vulnerabilities, threats and attack vectors in different programming languages, assess the implications and determine the appropriate countermeasures
- Compare and contrast different tools that help in developing secure codes and assess the role of these tools in reducing development time and cost
Week Five:
Topics: Secure Linux Kernel Programming, Secure Xcode Programming, Secure Oracle PLSQL Programming, Secure Network Programming, Windows Socket Programming,
OUTCOME:
- Understand the importance of secure programming and implement a standard set of secure programming practices, policies and guidelines to develop robust software applications
- Analyze cryptography algorithms and encryption techniques, and design implementation strategies for securing information flow in the applications
- Understand the fundamental security concepts used by different programming languages and analyze the usability of different programming constructs in developing secure applications
- Identify the common vulnerabilities, threats and attack vectors in different programming languages, assess the implications and determine the appropriate countermeasures
- Analyse the working of port scanners and hacking tools, and write exploits to assess the application security for common attack vectors based on evidence, information, and research
- Compare and contrast different application testing and debugging approaches, develop application testing strategy and explore the ways to avoid classic testing mistakes
- Compare and contrast different tools that help in developing secure codes and assess the role of these tools in reducing development time and cost
Week Six:
Topics: Writing Shellcodes, Writing Exploits, Programming Port Scanners and Hacking Tools, Secure Mobile Phone and PDA Programming, Secure Game Designing, Securing E-Commerce Applications, Software Activation, Piracy Blocking, and Automatic Updates
OUTCOME:
- Understand the importance of secure programming and implement a standard set of secure programming practices, policies and guidelines to develop robust software applications
- Analyze cryptography algorithms and encryption techniques, and design implementation strategies for securing information flow in the applications
- Understand the fundamental security concepts used by different programming languages and analyze the usability of different programming constructs in developing secure applications
- Identify the common vulnerabilities, threats and attack vectors in different programming languages, assess the implications and determine the appropriate countermeasures
- Analyse the working of port scanners and hacking tools, and write exploits to assess the application security for common attack vectors based on evidence, information, and research
- Examine updates, activation, piracy, and other real time application deployment issues, and implement controls for secure data communication between various applications
- Compare and contrast different tools that help in developing secure codes and assess the role of these tools in reducing development time and cost
Weeks Seven and Eight: Summative Experiences
Introduction to Weeks: Weeks seven and eight are designed to provide cumulative experience while
faculty and students are given the opportunity to finalize uncompleted work. For this course,
students will engage in one summative assessment, and a final project.
|