Announcement Project 2 Due Project 3 will be out this weekend.

Slides:



Advertisements
Similar presentations
Categories of I/O Devices
Advertisements

Communications of the ACM (CACM), Vol. 32, No. 6, June 1989
Outline Designing and Writing Secure Code –General principles –Example: sendmail vs qmail Compiler Prime: Run-time Environment and Program Organization.
Outline Designing and Writing Secure Code –General principles for architects/managers –Example: sendmail vs qmail (optional in backup slides) Buffer Overflow.
Announcement Project 2 Due Project 3 will be out this weekend.
System and Network Security Practices COEN 351 E-Commerce Security.
Slide 1 Client / Server Paradigm. Slide 2 Outline: Client / Server Paradigm Client / Server Model of Interaction Server Design Issues C/ S Points of Interaction.
It’s always better live. MSDN Events Security Best Practices Part 2 of 2 Reducing Vulnerabilities using Visual Studio 2008.
Outline Designing and Writing Secure Code
Tcl Agent : A flexible and secure mobile-agent system Paper by Robert S. Gray Dartmouth College Presented by Vipul Sawhney University of Pennsylvania.
1 Security and Software Engineering Steven M. Bellovin AT&T Labs – Research
Outline Designing and Writing Secure Code –General principles for architects/managers –Example: sendmail vs qmail Compiler Prime: Run-time Environment.
C. Edward Chow Presented by Mousa Alhazzazi C. Edward Chow Presented by Mousa Alhazzazi Design Principles for Secure.
FIREWALL TECHNOLOGIES Tahani al jehani. Firewall benefits  A firewall functions as a choke point – all traffic in and out must pass through this single.
1 北區機房 IP 維運處暨 IDC 維運組 鄭任峰 郵件系統維運 課程 : Sendmail 與 postfix 的設定與比較 北區機房 IP 維運處暨 IDC 維運組 鄭任峰.
Webmail. Agenda Why use webmail? Why use webmail? What is webmail What is webmail – basic » system MDA MDA MTA MTA MUA MUA »Protocol SMTP SMTP.
ISQS server attacks Presented by Deven Patel.
CMSC 414 Computer (and Network) Security Lecture 14 Jonathan Katz.
Honeypot and Intrusion Detection System
SECURITY ZONES. Security Zones  A security zone is a logical grouping of resources, such as systems, networks, or processes, that are similar in the.
1 Version 3.0 Module 11 TCP Application and Transport.
| nectar.org.au NECTAR TRAINING Module 5 The Research Cloud Lifecycle.
Postfix Mail Server Postfix is used frequently and handle thousands of messages. compatible with sendmail at command level. high performance program easier-
1 Electronic Messaging Module - Electronic Messaging ♦ Overview Electronic messaging helps you exchange messages with other computer users anywhere in.
Application Layer Khondaker Abdullah-Al-Mamun Lecturer, CSE Instructor, CNAP AUST.
Week 10-11c Attacks and Malware III. Remote Control Facility distinguishes a bot from a worm distinguishes a bot from a worm worm propagates itself and.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Linux Security. Authors:- Advanced Linux Programming by Mark Mitchell, Jeffrey Oldham, and Alex Samuel, of CodeSourcery LLC published by New Riders Publishing.
Security CS Introduction to Operating Systems.
1 OFF SYMB - 12/7/2015 Firewalls Basics. 2 OFF SYMB - 12/7/2015 Overview Why we have firewalls What a firewall does Why is the firewall configured the.
SMTP Tapu Ahmed Jeremy Nunn. Basics Responsible for electronic mail delivery. Responsible for electronic mail delivery. Simple ASCII protocol that runs.
Security Architecture of qmail and Postfix Authors: Munawar Hafiz Ralph E. Johnson Prepared by Geoffrey Foote CSC 593 Secure Software Engineering Seminar.
Engineering Secure Software. Key Principles  Principle of Least privilege  Defense in Depth  Obviously No Vulnerabilities (vs. No Obvious)  i.e. Assume.
Linux Operations and Administration Chapter Twelve Configuring a Mail Server.
Role Of Network IDS in Network Perimeter Defense.
June 1, 2004© Matt Bishop [Changed by Hamid R. Shahriari] Slide #13-1 Chapter 13: Design Principles Overview Principles –Least Privilege –Fail-Safe.
Implementing POP3 and IMAP4 Using Dovecot AfNOG 2016 Scalable Internet Services (SS-E) Gaborone, Botswana Presented by Michuki Mwangi (Built on materials.
Application Layer instructors at St. Clair College in Windsor, Ontario for their slides. Special thanks to instructors at St. Clair College in Windsor,
Lecture 14 Page 1 CS 236 Online Secure Programming CS 236 On-Line MS Program Networks and Systems Security Peter Reiher.
Developing a Secure Internet Service SE Linux in Production Russell Coker Linux Consultant.
SE-1021 Software Engineering II
Networking Applications
Operating System Structure
Protecting Memory What is there to protect in memory?
Web Application Vulnerabilities, Detection Mechanisms, and Defenses
Protecting Memory What is there to protect in memory?
Protecting Memory What is there to protect in memory?
draft-lemonade-imap-submit-01.txt “Forward without Download”
Outline Introduction Characteristics of intrusion detection systems
A Security Review Process for Existing Software Applications
Secure Architecture Principles Isolation and Least Privilege
SUBMITTED BY: NAIMISHYA ATRI(7TH SEM) IT BRANCH
Introduction to Networking
TCP Transport layer Er. Vikram Dhiman LPU.
Access Control and Operating System Security
has many aspects that work together to give people almost instant communication from any computer on the internet to any other computer There.
Distrustful Decomposition
Software Security Lesson Introduction
Security.
Unit – 4 Chap - 2 Mail Delivery System
Distrustful Decomposition
Introduction to Network Security
Operating System Concepts
 Zone in name space  DNS IN THE INTERNET  Generic domains :There are fourteen generic domains, each specifying an organization type.
CSE 542: Operating Systems
Preventing Privilege Escalation
Data Communications and Networks
Message Passing Systems Version 2
MESSAGE ACCESS AGENT: POP AND IMAP
Message Passing Systems
Presentation transcript:

Announcement Project 2 Due Project 3 will be out this weekend

Designing and Writing Secure Code

Outline General principles Buffer Overflow Example Least privilege, defense in depth, … Buffer Overflow Example Sendmail vs qmail Tools for secure coding Type-safe programming languages Code analysis algorithms Run-time monitoring

General Principles Compartmentalization Defense in depth Principle of least privilege Minimize trust relationships Defense in depth Use more than one security mechanism Secure the weakest link Fail securely Keep it simple Consult experts Don’t build what you can easily borrow/steal Open review is effective and informative

Compartmentalization Divide system into modules Each module serves a specific purpose Assign different access rights to different modules Read/write access to files Read user or network input Execute privileged instructions (e.g., Unix root) Principle of least privilege Give each module only the rights it needs

Compartmentalization (II) Example Sendmail runs as root Root privilege needed to bind port 25 No longer needed after port bind established But most systems keep running as root Root privileges needed later to write to user mailboxes Will look at qmail for better security design Minimize trust relationships Clients, servers should not trust each other Both can get hacked Trusted code should not call untrusted code

Defense in Depth Failure is unavoidable – plan for it Have a series of defenses If an error or attack is not caught by one mechanism, it should be caught by another Examples Firewall + network intrusion detection Fail securely Many, many vulnerabilities are related to error handling, debugging or testing features, error messages

Secure the weakest link Think about possible attacks How would someone try to attack this? What would they want to accomplish? Find weakest link(s) Crypto library is probably pretty good Is there a way to work around crypto? Data stored in encrypted form; where is key stored? Main point Do security analysis of the whole system Spend your time where it matters

Keep It Simple Use standard, tested components Don’t implement your own cryptography Don’t add unnecessary features Extra functionality  more ways to attack Use simple algorithms that are easy to verify A trick that may save a few instructions may Make it harder to get the code right Make it harder to modify and maintain code

Security by Obscurity … Is NOT Secure !!! Hiding sensitive information is hard Information in compiled binaries can be found Reverse engineering Disassembler: machine code to assembly Discomplier: machine code to high-level language Insider attacks are common Firewalls do not protect against inside attacks

Don’t reinvent the wheel Consult experts Allow public review Use software, designs that other have used Examples Bad use of crypto: 802.11b Protocols without expert review: 802.11i Use standard url parser, crypto library, good random number generater, …

Example: Mail Transport Agents Sendmail Complicated system Source of many vulnerabilities Qmail Simpler system designed with security in mind Gaining popularity Qmail was written by Dan Bernstein, starting 1995 $500 reward for successful attack; no one has collected

Simplified Mail Transactions Mail User Agent Mail Transport Agent Mail Transport Agent Mail User Agent Mail Delivery Agent Mail Delivery Agent mbox mbox procmail is a popular Message Delivery Agent (MDA). The function of an MDA is to accept a message from the MTA for a specific user or mailbox, and deliver the message according to the user's desires. procmail can be used to "filter" messages by the content of various header fields or the body of the message. For example, messages from a particular person can be directed to a mailbox for just that person. http://www.lifewithqmail.org/lwq.html#procmail Message composed using an MUA MUA gives message to MTA for delivery If local, the MTA gives it to the local MDA If remote, transfer to another MTA

Example: Qmail Compartmentalize Nine separate modules If one module compromised, others not Move separate functions into mutually untrusting programs Always validate input from other modules

THE BIG Qmail PICTURE SMTP from network from local remote mailserver tcpserver / tcp-env / inetd MUA qmail-smtpd qmail-inject forwarded message qmail-queue qmail-system qmail-send qmail-rspawn qmail-lspawn qmail-remote qmail-local mbox / maildir / program delivery remote mailserver to local

Structure of qmail qmail-smtpd qmail-inject qmail-queue Other incoming mail Incoming SMTP mail qmail-send qmail-rspawn qmail-lspawn qmail-remote qmail-local

Structure of qmail qmail-smtpd qmail-inject qmail-queue Splits mail msg into 3 files Message contents 2 copies of header, etc. Signals qmail-send qmail-send qmail-rspawn qmail-lspawn qmail-remote qmail-local

Structure of qmail qmail-smtpd qmail-inject qmail-queue qmail-send signals qmail-lspawn if local qmail-remote if remote qmail-send qmail-rspawn qmail-lspawn qmail-remote qmail-local

Structure of qmail qmail-smtpd qmail-inject qmail-queue qmail-send qmail-lspawn qmail-lspawn Spawns qmail-local qmail-local runs with ID of user receiving local mail qmail-local

Structure of qmail qmail-smtpd qmail-inject qmail-queue qmail-send qmail-lspawn qmail-local Handles alias expansion Delivers local mail Calls qmail-queue if needed qmail-local

Structure of qmail qmail-smtpd qmail-inject qmail-queue qmail-send qmail-rspawn qmail-remote Delivers message to remote MTA qmail-remote

Least Privilege in Qmail Each module uses least privileges necessary Each runs under different non-privileged UID in three groups: qmaild, qmailr, qmails Except one as root Only one run as root (except qmail-start) Spawns the local delivery program under the UID and GID of the user being delivered to Always changes effective uid to recipient before running user-specified program

Least privilege setuid root qmail-smtpd qmail-inject qmail-queue qmail-send Qmail-inject() and qmail-smtpd() call the qmail-quue() function qmail-rspawn qmail-lspawn root qmail-remote qmail-local

Principles, sendmail vs qmail Do as little as possible in setuid programs Of 20 recent sendmail security holes, 11 worked only because the entire sendmail system is setuid Only qmail-queue is setuid Its only function is add a new message to the queue Setuid to the user ID of the qmail queue owner, not root No setuid root binaries Do as little as possible as root The entire sendmail system runs as root Operating system protection has no effect Only qmail-start and qmail-lspawn run as root.

UIDs setuid root qmail-start qmail-smtpd qmail-inject qmail-queue inetd Start qmail-send & queue management qmaild user qmail-smtpd qmail-inject qmail-queue qmails setuid qmail-send qmailr qmails root inetd <networking, tool> Berkeley daemon program that listens for connection requests or messages for certain ports and starts server programs to perform the services associated with those ports. Sometimes known as netd. qmail-rspawn qmail-lspawn root setuid user qmailr user qmail-remote qmail-local

Keep it simple Parsing Libraries Small code is more secure Limited parsing of strings Minimizes risk of security holes from configuration errors Modules do parsing are isolated and run with user privilege Libraries Avoid standard C library, stdio “Write bug-free code” (DJB) Small code is more secure Plug in interposing modules rather than complicating the core code

Comparison Lines Words Chars Files qmail-1.01 16028 44331 370123 288 sendmail-8.8.8 52830 179608 1218116 53 zmailer-2.2e10 57595 205524 1423624 227 smail-3.2 62331 246140 1701112 151 exim-1.90 67778 272084 2092351 127

Comparison with other MTAs Maturity Security Features Perform ance Modular Qmail Medium High Yes Sendmail Low No Postfix

Secure Programming Techniques: An Abstract View of Program Program Component Avoid buffer overflow Secure software design Language-specific problems Application-specific issues Respond judiciously Validate input Call other code carefully

Secure Programming Validate all your inputs Avoid buffer overflow Command line inputs, environment variables, CGI inputs, … Don't just reject “bad” input, define “good” and reject all else Avoid buffer overflow Carefully call out to other resources Check all system calls and return values

Backup Slides