My Links
My Home Page
Books
Classes
Papers
Reports and Notes
Research
Security in Programming
Service
Students
Talks
Miscellaneous
My Family
About Me (CV and such)
Other Links
Cybersecurity Club
Computer Security Lab
Dept. of Computer Science
College of Engineering
University of California, Davis
City of Davis
County of Yolo
State of California
United States of America
Me
This Quarter’s Classes
Office Hours for This Quarter
Contacting Me
My
Personal
Blog
(Last Entry September 4, 2020; “Don’t Vote Twice”)
Current Time in Davis, CA, USA
Robust Programming
Author: Matt Bishop
Given at: UC Computer Security Conference
Date: June 16, 2011
First slide (slide 1)
Last slide (slide 130)
Slide 1: Robust Programming
Slide 2: Weinberg's Second Law
Slide 3: What We Will Talk About
Slide 4: Outline
Slide 5: Part 1: General Philosophy
Slide 6: Basic Rule: Find Assumptions!
Slide 7: An Obvious Place
Slide 8: General Thoughts
Slide 9: What Is Intended?
Slide 10: Policies and Procedures
Slide 11: Puzzle
Slide 12: Program Design
Slide 13: Watch Out For . . .
Slide 14: Check Implementation
Slide 15: Check Implementation
Slide 16: Where To Look
Slide 17: Network Servers
Slide 18: Local Servers
Slide 19: Setuid, Setgid Programs
Slide 20: Clients
Slide 21: Key Ideas
Slide 22: Puzzle
Slide 23: Part 2: Good Coding Practice
Slide 24: What Is Robust Code?
Slide 25: Example of Fragile Code
Slide 26: Queue Structure
Slide 27: Interfaces
Slide 28: How To Mess This Up
Slide 29: qmanage
Slide 30: Puzzle
Slide 31: Adding to a Queue
Slide 32: Puzzle
Slide 33: Taking from a Queue
Slide 34: Puzzle
Slide 35: Robust Programming
Slide 36: Queue Structure
Slide 37: Example Token
Slide 38: Error Handling
Slide 39: Error Handling
Slide 40: Cohesion
Slide 41: New Interfaces
Slide 42: Queue Structure
Slide 43: Token Generation
Slide 44: Token Generation
Slide 45: Token Generation
Slide 46: Checklist
Slide 47: Token Interpretation
Slide 48: Token Interpretation
Slide 49: Token Interpretation
Slide 50: Checklist
Slide 51: Creating a Queue
Slide 52: Creating a Queue
Slide 53: Creating a Queue
Slide 54: Checklist
Slide 55: Deleting a Queue
Slide 56: Checklist
Slide 57: Adding an Element to a Queue
Slide 58: Adding an Element to a Queue
Slide 59: Removing an Element from a Queue
Slide 60: Removing an Element from a Queue
Slide 61: Calling Removing Function
Slide 62: Summary of Problems
Slide 63: Summary of Problems
Slide 64: Non-Robust Programming
Slide 65: Key Ideas
Slide 66: Fun Problem
Slide 67: Part 3: Problems and Solutions
Slide 68: CWE/SANS Top 25 Errors
Slide 69: CWE/SANS Top 25 Errors
Slide 70: CWE/SANS Top 25 Errors
Slide 71: This Talk Discusses in Detail
Slide 72: Buffer Overflows
Slide 73: Process Memory Structure
Slide 74: Typical Stack Structure
Slide 75: Idea
Slide 76: In Pictures
Slide 77: In Words
Slide 78: Required
Slide 79: Also Required
Slide 80: Quick Test
Slide 81: Where to Put Shell Code
Slide 82: Data Segment Buffer Overflows
Slide 83: Example: login Problem
Slide 84: In Pictures
Slide 85: Requires
Slide 86: Selective Buffer Overflow
Slide 87: Sendmail Configuration File
Slide 88: In Pictures
Slide 89: Problems and Solutions
Slide 90: Attack: Whacking the Heap
Slide 91: Attack: Changing the Heap
Slide 92: Things To Alter
Slide 93: Requires
Slide 94: General Rule
Slide 95: Handling Arrays
Slide 96: Common Error
Slide 97: One Way to Fix Them
Slide 98: Canaries
Slide 99: Puzzle
Slide 100: Puzzle
Slide 101: Cross-Site Scripting
Slide 102: Reflected XSS
Slide 103: Stored, DOM Injection XSS
Slide 104: Another Example
Slide 105: The Attack
Slide 106: Filtering
Slide 107: Filtering
Slide 108: Filtering
Slide 109: Making It Worse
Slide 110: Prevention
Slide 111: SQL Injection Attacks
Slide 112: Puzzle
Slide 113: Error Handling
Slide 114: That Old su Bug (Apocryphal?)
Slide 115: Error Recovery
Slide 116: When to Recover
Slide 117: UNIX errno
Slide 118: In Fact . . .
Slide 119: Warning
Slide 120: Puzzle
Slide 121: Key Ideas
Slide 122: Part 6: Resources
Slide 123: Good Books
Slide 124: More Good Books
Slide 125: Mailing Lists
Slide 126: Useful Web Sites
Slide 127: More Useful Web Sites
Slide 128: Key Ideas
Slide 129: Conclusion
Slide 130: Author Information