* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Dealing with threats to databases
Entity–attribute–value model wikipedia , lookup
Extensible Storage Engine wikipedia , lookup
Oracle Database wikipedia , lookup
Ingres (database) wikipedia , lookup
Microsoft Access wikipedia , lookup
Functional Database Model wikipedia , lookup
Microsoft SQL Server wikipedia , lookup
Concurrency control wikipedia , lookup
Relational model wikipedia , lookup
Microsoft Jet Database Engine wikipedia , lookup
Open Database Connectivity wikipedia , lookup
Database model wikipedia , lookup
Dealing With Threats to Databases OWASP Sandeep Singh Nain Security Analyst, IBM Australia [email protected] +61-405-369420 AppSec 2008, Australia February, 2008 Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP Foundation http://www.owasp.org About Me OWASP Member Melbourne chapter Security Analyst IBM Australia (www.ibm.com/services/security) Background Application development (ASP, .NET, PHP) OWASP 2 Agenda Introduction Threats to databases From applications From configuration flaws Database rootkits Auditing and activity monitoring Questions and answers… OWASP 3 Introduction? Every organization has one or more databases FINANCIAL DATA CUSTOMER DATA SENSITIVE INFO WHICH MUST BE PROTECTED OWASP 4 Question: Is the protection secure enough??? OWASP 5 A common scenario And the database is fully secure… Database security is not limited to firewalls, IPS or IDS… OWASP 6 The Real Threat Database trusts the applications and users interacting with it OWASP 7 Threats to Databases from Applications 1. Application Code Exposure OWASP 8 Application code exposure Attackers / malicious users analyze the URL and error messages Application code to determine What platform is being used What business rules are in place And, How is database being accessed i.e. connection strings, actual SQL queries etc. Helps in launching the database attack Directly Or through application OWASP 9 Application Configuration Files Holds connection details Contains database server name And username and password to connect to database Is it stored securely? OWASP 10 Application Configuration Files Huh, Attackers won’t find my configuration file Why don’t you ask my friend Google *Search for ext:php intext:"$dbms""$dbhost""$dbuser""$dbpasswd""$table_prefix""phpbb_installed“ – (This will search for the configuration files for phpBB, a popular `php` based bulletin board) *http://johnny.ihackstuff.com/ OWASP 11 Anatomy of Application Configuration Files Options to store configuration files Web.config and global.asa files UDL files Registry Include text files Hard coding connection string For microsoft technologies For all OWASP 12 Suggestions Use windows authentication or LDAP authentication (if possible) to connect to database over a secure channel Never store the username and password in clear text Encrypt the configuration files Use DPAPI (for windows 2000 and above) Create a baseline Monitor the database connections being made Make a list of IP Addresses and applications which should be allowed to access the database And deny access to others using a good SQL firewall OWASP 13 Protecting the code Code obfuscation Provides security through obscurity Converting the intermediate code into a form that makes reverse engineering very difficult (not impossible though) Add code to break decompilers Use tools e.g. DashO and HoseMocha for java. Don’t store application code in unsecured environments Security of development and test environments is as necessary as of the production environment Patch the development and test environments regularly OWASP 14 Threats to Databases from Applications 2. SQL Injection OWASP 15 SQL Injection Famous attack September 2004 The Cardsystems breach incident, where hackers stole 263,000 credit card numbers Several million dollars fraudulent credit and debit purchases had been made with these cards Ref: http://www.webappsec.org/projects/whid/list_id_2004-17.shtml What is it? Injecting SQL commands in URL or Form fields (GET or POST data) to alter the result Most effective and popular attack Approx 23% of the successful attacks (in 2006) OWASP 16 SQL Injection Can be used to Bypass authentication – Select USERID from USER where USERID = `` or 1=1; -- and password=‘a’; Access sensitive data – Select username, address, phone from USERS where city=‘Mel’ UNION ALL select name, crdate from sysobjects where xtype=‘U’ Even shutting down a system – Select USERID from USER where USERID = ``; SHUTDOWN with NOWAIT -- ; And more… OWASP 17 SQL Injection Applicable to all the DBMS SQL Server, Oracle, DB2, Sybase , MySQL & more Vulnerability lies in the application code and not on the database server OWASP 18 SQL Injection Countermeasures Limiting application vulnerabilities Find the vulnerability and fix the code All input must be sanitized SQL used to access data must not be formed by string concatenation Prepared statements and parameterized stored procedures must be used wherever possible Add quotes to all user input including numerical data Don’t display the database generated error messages OWASP 19 SQL Injection Don’t trust the application Filter every SQL command sent by the application – Don’t let application issue any OS level commands Provide minimal data access Granular access control Create baseline and monitor What database objects are being used by the application? What commands are being used? OWASP 20 Threats to Databases from Applications 3. Buffer Overflows OWASP 21 Buffer Overflows Database systems are software products Just like any other systems they also have vulnerabilities Such as buffer overflows Risk of buffer overflow May allow an unauthorized user to gain root privileges to the host operating systems. Denial of service A number of buffer overflow vulnerabilities have been found in database systems Oracle (8, 8i, 9i), SQL Server (7, 2000), DB2 (8.2, 9.1) OWASP 22 Buffer overflow in system functions / extended stored procedures What is it? Injecting an extra long string as a parameter to the system stored procedures / functions allowing overwriting of the memory buffer with arbitrary data Can be exploited through SQL injection Examples MS SQL Server: xp_displayparamstmt , xp_proxiedmetadata Oracle: BFILENAME, NUMTODSINTERVAL Vulnerable servers MS SQL Server 7, MS SQL Server 2000, MSDE 1.0, MSDE 2000 Oracle 8i, 9i Ref: http://www.appsecinc.com/resources/alerts/mssql/02-0000.html OWASP 23 Countermeasures Apply latest patches ASAP remove or minimize the application’s access to the vulnerable function Protect from SQL injection OWASP 24 Threats to Databases from Configuration Flaws 1. Improper Access Control OWASP 25 Improper access control Common scenario Database schema is considered as a part of the application Or, Extension to the application Therefore, should be controlled by the application itself – i.e. application has full access to all objects in the schema Risk Any security breach that occurs at the application layer can become a security incident at database level OWASP 26 Granular access control Limit application access Implement fine grained access control (row level access, table level access) Make sure database control is at database layer and not application layer Create database access baselines OWASP 27 Threats to Databases from Configuration Flaws 2. Insecure Database Links OWASP 28 Insecure database links Linked databases Expose objects in one database to another Clients can connect to one database and fetch the data stored in linked database without even knowing the actual location of the data Being used in a lot of enterprise applications and architectures SO WHAT’S THE PROBLEM??? OWASP 29 Insecure database-to-database communication Limited access Full access OWASP 30 Securing the database to database communications Never create the links using administrative privileges Avoid fixed user links Use current user links instead Monitor the database link usage regularly Not just the connections but also the content being communicated Only the authorized data should be communicated OWASP 31 Threats to Databases from Configuration Flaws 3. Database doing more than required OWASP 32 Database doing more than required Vendors are adding functionalities like Running shell commands Inbuilt Web server HTML Page generation HTTP endpoints Helpful but dangerous Opens up unnecessary attack surface Let database handle what it is intended to. Security vs. Ease OWASP 33 Threats to Databases from Configuration Flaws 4. Unencrypted Data OWASP 34 Unencrypted Data Databases contain Confidential and proprietary information Therefore, unauthorized database access may lead to Privacy breach incidents Identity thefts How to protect Encrypt the confidential data Encrypt the data in transit Encrypt the data at rest OWASP 35 Encrypting data in transit What to encrypt Whole (or parts of the) data in transit is encrypted How to encrypt Encryption/ Decryption occurs at end points Data stored in the database is not encrypted Use SSL, SSH Tunnels Why to encrypt protects from MITM attack Protects from data being sniffed Tools : Ethereal, TCP Dump OWASP 36 Sniffing the data in transit User ID Database name MS SQL Server traffic OWASP 37 Encrypting Data at Rest What to encrypt Sensitive data stored in the database E.g. Credit card info, SSN, passwords etc. The whole database Why to encrypt Additional layer of security Protects from unauthorized access Can’t be decrypted (easily) Unauthorized users can’t read the data even if they have Administrator access OWASP 38 Encrypting Data at Rest How to encrypt Encryption at application layer Using the database encryption tools Encryptonizer for MS SQL Server Encryption wizard for Oracle IBM Database encryption expert for DB2 Encryption at File System layer i.e. file level encryption EFS for NTFS(MS Windows 20000 and above), IBM’s Encryption Facility for z/OS FreeOFTE, DiskCryptor (Open source) OWASP 39 Database Rootkits OWASP 40 Database rootkits What are rootkits A rootkit is a collection of programs that enables and maintains the administrator-level access to a computer or computer network DB rootkits are similar to OS rootkits Purpose To create backdoors in databases To hide database processes To hide database users To hide database jobs Modify internal functions OWASP 41 Database rootkits Implementation By modifying the database (system) objects Changing the execution path Creating a local object with the identical name Creating a synonym pointing to a different object OWASP 42 Countermeasures Use base tables instead of views for critical objects (e.g. users, processes) Use absolute execution paths for critical objects (e.g. SYS.dbms_crypto) Compare the repository regularly against a (secure) baseline For more on rootkits http://www.red-database-security.com/wp/db_rootkits_us.pdf OWASP 43 Auditing and Activity Monitoring OWASP 44 Auditing Is a Way to ensure proper controls are in place Ensures compliance Is not A method to secure systems But tells you what is not secure Or what may result in an incident so that you can investigate OWASP 45 Audit categories Security assessment (Not covered) Vulnerability assessment Penetration testing Activity monitoring (Using the audit trail) Helps to identify illicit activity from insiders (authorized users) Helps to address unknown threats Helps in being pro-active rather than reactive OWASP 46 Audit trail It answers the questions Who did it? What did they do? When did they do it? OWASP 47 Audit trail implementation – Must Monitor Events DBA actions DDL statements, Administration commands Access to sensitive data Database system tables As defined in the organization’s policies After hours access Remote Administration Known attacks OWASP 48 Deployment considerations for Audit trail Coverage v/s Volume Only store useful information False positives Too many unnecessary alerts Integrity of the audit trail No one should be able to modify the audit trail Must be stored in secure environment OWASP 49 Conclusion OWASP 50 Question Time OWASP 51