and web applications
play

and Web Applications 06 Secure Coding Alexandros Labrinidis - PDF document

CS 1655 / Spring 2010 Secure Data Management and Web Applications 06 Secure Coding Alexandros Labrinidis University of Pittsburgh Secure Coding From: Secure Coding: Principles and Practices by Mark G. Graff & Kenneth R. Van Wyk


  1. CS 1655 / Spring 2010 Secure Data Management and Web Applications 06 – Secure Coding Alexandros Labrinidis University of Pittsburgh Secure Coding  From: Secure Coding: Principles and Practices by Mark G. Graff & Kenneth R. Van Wyk O’Reilly, 2003  First chapter is available online: http://www.securecoding.org 2 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � 1

  2. One example  When: late 1996  Where: earth (internet problems affect all!)  What: TCP SYN Flood attack  Why: “not playing by the rules”  Real-life equivalent:  A calls B  B hangs up  A does not hang up  Result: B’s phone is busy! (no longer the case :-)) 3 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � Vulnerability Cycle  Someone discovers a security flaw  Bad guys analyze info  Good guys try to fix it  Media take over…  People get worried  Panic responses (stop all email at a company)  Patch is ready  Technical-savvy folks apply patch  Many people don’t apply patch  Good guys look for related problems  MUCH LATER, an exploit is released - those with patches are ok, the rest are victims… 4 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � 2

  3. Attacks and defenses  Architectural-design level attacks:  Man-in-the-middle  Race-condition  Replay  Sniffer  Session hijacking  Session killing 5 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � Attacks and defenses  Implementation-level attacks  Buffer-overflow  Back door attack  Parsing error attack 6 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � 3

  4. Attacks and defenses  Operations-level attacks  Denial-of-service  Default accounts  Password cracking  policies 7 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � Why good people write bad code  Technical Factors  In other fields, the whole may be greater than the sum of its parts, in computer security the sum of the parts is often a hole!  Phsychological Factors  Decisions influenced by personal experiences  Mental models (of what the program is doing)  Ways of thinking about software  Real world factors  Production pressure  Just secure enough  The tragedy of the commons 8 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � 4

  5. What can be done?  Education  Standards  Metrics 9 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � Making things clear  Phishing  E.g. activate your chase account  Data breach  Choicepoint  ABN-AMRO  Attack/Hacking  Denial of Service Attack 10 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � 5

  6. Security Architecture  Definition:  Body of high-level design principles and decisions that allow a programmer to say “yes” with and confidence and “No” with certainty  e.g., knowing that adding a certain component will not compromise the security of your system  Security architecture  serves as framework for secure design  should match a defined security need  often corresponds to a set of design documents  NEXT: Principles of Security Architecture 11 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � Principles of Security Architecture 1. Start by asking questions  About our worries  What can go wrong?  What are we trying to protect?  Who do we think might want to compromise our security?  What is the weakest point in our defense?  About our resources  Do we have a security architecture? Is it used?  Do we have access to reusable code libraries?  What guidelines and standards are available?  What are good examples that we can use for inspiration? 12 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � 6

  7. Principles of Security Architecture 1. Start by asking questions  About the software  Where does it stand in the chain of trust?  Who are the legitimate users?  Who will have access to the software (exec/source)?  Do we use usage/# users changing over time?  What is the environment it will run? (the big bad Web?)  About our goals  What impact would a security compromise have?  Who are we willing to irritate with security measures?  Do have support of others (“higher-ups”) for our security precautions?  If users go around our security measures, how will we know/ handle it? 13 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � Principles of Security Architecture 2. Select a destination before stepping on the gas  Must wait until you are sure you understand fully what needs to be done, before starting making decisions.  Contrast with house building  Before architects draw plans, they must find info about:  type of house  Area (e.g., protect from earthquakes)  building code (& restrictions)  customer’s needs  … 14 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � 7

  8. Principles of Security Architecture 3. Decide how much security is just enough  degree of assurance required by your application is very strongly related to:  size and nature of your unique risks  Cost of counter-measures that you program  I.e., not make applications as secure as possible, BUT make applications just secure enough  Of course, this level should be determined objectively, and not because you ran out of time :-)  Ideally, there are standards, as in the financial sector  Example: require biometric identification for all amazon.com purchases 15 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � Principles of Security Architecture 4. Employ standard engineering techniques  Good security requires good software design and design techniques.  Main factors for security attacks:  Lack of any design  Simple human weakness  Poor coding practices  Good security architecture eliminates top two factors only 16 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � 8

  9. Principles of Security Architecture 5. Identify your assumptions  Must be able to stand apart from the problem at hand.  Example assumptions:  If we receive a TCP packet with the SYN flag set, it means that the sender wants to start a dialog with us  1) missed malicious intent  2) assume sender identity is correct  The users of this software are human beings  maybe a script runs instead, executing our code several thousand times a second…  Q : How did yahoo/hotmail/gmail/etc solved this for their user signup systems? 17 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � Principles of Security Architecture 6. Engineer security in from day one  As opposed to “patching” things in later  Just adding encryption won’t be enough! 18 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � 9

  10. Principles of Security Architecture 7. Design with the enemy in mind  Try to anticipate how an attacker might approach solving the “puzzle” of breaking your security infrastructure. 19 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � Principles of Security Architecture 8. Understand and respect the chain circle of trust  Do not invoke untrusted programs from within trusted ones!  General rule : do not delegate authority to take an action, without delegating responsibility to check if action is appropriate. 20 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � 10

  11. Principles of Security Architecture 9. Be stingy with privileges  “Principle of least privilege”  A program must operate with just enough privilege and access to accomplish its objectives.  Example:  If you only need to read a value from a file, do not open with read/write permissions. 21 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � Principles of Security Architecture 10. Test any proposed action against policy  Make sure that moment-to-moment decisions made by software are in accordance with the up-to-date security settings.  Example:  Before adding an item to shopping cart, check that cart belongs to user.  We should not reauthenticate the user every time  We should try to verify that session has not expired, the connection has not been broken, no rules were added about shopping carts… 22 � Alexandros Labrinidis, Univ. of Pittsburgh � CS 1655 / Spring 2010 � 11

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend