8/28/2014
Hải V. Phạm
Bộ môn HTTT – Viện CNTT&TT
H BKHN
@Hai V Pham
2
– Dạng tấn công thụ động rất khó bị phát hiện vì
không làm thay đổi dữ liệu.
– Với dạng tấn công thụ động, nhấn mạnh vấn đề
ngăn chặn hơn là vấn đề phát hiện.
3
1
8/28/2014
Dạng
ng tấn
n công chủ
ng
ch động
Mối đe dọa chủ động
4
Bảo đảm chỉ người dùng có quyền truy xuất
có thể truy cập thôngtin
Thông tin luôn luôn sẵn sàng cho người dùng
truy xuất
Dữ liệu phải luôn chính xác, không bị cập
nhật trái phép
@Hai V Pham
5
Phần mềm ác tính
◦ Các phần mềm ác tính thường gặp
◦ Các biện pháp ngăn chặn
Lỗi phần mềm
◦ Các lỗi phần mềm thường gặp
◦ Các biện pháp an toàn
Kiểm thử (Testing)
Kiểm định hình thức (Formal Verification)
Lập trình an toàn (Secure Coding)
2
8/28/2014
Phần mềm ác tính
◦ Các phần mềm ác tính thường gặp
◦ Các biện pháp ngăn chặn
Lỗi phần mềm
◦ Các lỗi phần mềm thường gặp
◦ Các biện pháp an toàn
Kiểm thử (Testing)
Kiểm định hình thức (Formal Verification)
Lập trình an toàn (Secure Coding)
Chạy theo chủ định của người lập trình ra nó
Chạy và phản ứng theo cách bất thường,
không trông đợi từ phía người dùng
Ẩn náu trong hệ thống, hoặc gắn vào các
phần mềm không ác tính
Có thể làm được mọi thứ mà một phần mềm
có thể làm
Vi rut (Virus)
◦ Gắn vào một chương trình, phát tán bản sao ra khác chương trình
khác
Trojan horse
◦ Có các tính năng bất thường
Bom logic (Logic bomb)
◦ Phát động khi điều kiện được thỏa mãn
Bom thời gian (Time bomb)
◦ Phát động khi đến hạn thời gian
Trapdoor
◦ Cho phép truy nhập trái phép các tính năng
Sâu (Worm)
◦ Phát tán bản sao qua mạng
Thỏ (Rabbit)
◦ Nhân bản đến khi không còn tài nguyên
3
8/28/2014
Virus chỉ gây hại khi được kích hoạt
◦ Virus chạy cùng với một chương trình khác chạy bởi
người dùng
◦ Virus chạy khi mở tệp đính kèm trong e-mails, tệp
ảnh, tệp đồ họa
Mã virus đính vào mã chương trình
◦ Nối mã virus với mã chương trình
◦ Mã virus bao quanh mã chương trình
◦ Mã virus tích hợp vào mã chương trình
Virus tài liệu
◦ Tài liệu chứa cả dữ liệu và các lệnh
Vùng Boot (Boot Sector)
Bộ nhớ (Memory-Resident)
Ứng dụng (Application Program)
Thư viện (Library)
…
4
8/28/2014
Mã virus có kiểu mẫu đặc biệt
◦ Có thể nhận biết các đoạn mã của từng loại virus
Mã đính kèm không thay đổi
◦ Chương trình đính kèm sẽ lớn hơn chương trình
ban đầu
Vị trí đính kèm không thay đổi
Sử dụng phần mềm thương mại từ nguồn tin
cậy
Kiểm thử phần mềm trên một máy tính/hệ
thống tách biệt
Mở tệp đính kèm chỉ khi nào biết rõ nguồn gốc
Lưu ở nơi an toàn một phiên bản có thể tái tạo
của hệ thống đang sử dụng
Sử dụng phần mềm quét diệt virus
Virus chỉ lây nhiễm trên các hệ thống MS
Windows
Virus không thể thay đổi các file “hidden” hoặc
“read-only”
Virus chỉ xuất hiện trong tệp dữ liệu, chương
trình
Virus chỉ phát tán thông qua qua đĩa, e-mail
Virus không thể tồn tại trong bộ nhớ sau khi
reboot power off/on
Virus lây nhiễm trên phần cứng
5
8/28/2014
Phần mềm ác tính
◦ Các phần mềm ác tính thường gặp
◦ Các biện pháp ngăn chặn
Lỗi phần mềm
◦ Các lỗi phần mềm thường gặp
◦ Các biện pháp an toàn
Kiểm thử (Testing)
Kiểm định hình thức (Formal Verification)
Lập trình an toàn (Secure Coding)
Phần mềm ác tính
◦ Các phần mềm ác tính thường gặp
◦ Các biện pháp ngăn chặn
Lỗi phần mềm
◦ Các lỗi phần mềm thường gặp
◦ Các biện pháp an toàn
Kiểm thử (Testing)
Kiểm định hình thức (Formal Verification)
Lập trình an toàn (Secure Coding)
Lập trình viên thường mắc lỗi
◦ không cố ý
◦ không ác tính
◦ nhưng đôi khi gây hậu quả nghiêm trọng
6
8/28/2014
Tràn bộ đệm (Buffer Overflow)
◦ Array Index Out of Bound
Không đầy đủ (Incomplete Mediation)
◦ Format String
◦ Implicit Cast, Integer Overflow
ồng bộ (Synchronization)
◦ File stat()/open()
Phần mềm ác tính
◦ Các phần mềm ác tính thường gặp
◦ Các biện pháp ngăn chặn
Lỗi phần mềm
◦ Các lỗi phần mềm thường gặp
◦ Các biện pháp an toàn
Kiểm thử (Testing)
Kiểm định hình thức (Formal Verification)
Lập trình an toàn (Secure Coding)
Phần mềm ác tính
◦ Các phần mềm ác tính thường gặp
◦ Các biện pháp ngăn chặn
Lỗi phần mềm
◦ Các lỗi phần mềm thường gặp
◦ Các biện pháp an toàn
Kiểm thử (Testing)
Kiểm định hình thức (Formal Verification)
Lập trình an toàn (Secure Coding)
7
8/28/2014
Mục đích của kiểm thử là tìm ra lỗi của hệ
thống
◦ Nếu không tìm ra lỗi, chúng ta hi vọng rằng hệ
thống là an toàn
1.
2.
3.
4.
5.
6.
ơn vị (Unit Testing)
Tích hợp (Integration Testing)
Chức năng (Function Testing)
Hiệu năng (Performance Testing)
Công nhận (Acceptance Testing)
Cài đặt (Installation Testing)
Hồi quy (Regression Testing)
◦ Nếu hệ thống có thay đổi, chỉnh sửa
Xoắn (Fuzz Testing)
◦ Các trường hợp đặc biệt, dễ bị khai thác và tấn
công
8
8/28/2014
Hộp đen (Black-box)
◦ Không có thông tin về cấu trúc bên trong của phần
mềm
◦ Dùng cho tất cả các mức của quy trình kiểm thử
Hộp trắng (White-box)
◦ Biết cấu trúc bên trong của phần mềm
◦ Thường dùng cho kiểm thử đơn vị
Hộp xám (Grey-box)
◦ Hỗn hợp
en: kiểm thử
Trắng: thiết kế ca kiểm thử
Phần mềm ác tính
◦ Các phần mềm ác tính thường gặp
◦ Các biện pháp ngăn chặn
Lỗi phần mềm
◦ Các lỗi phần mềm thường gặp
◦ Các biện pháp an toàn
Kiểm thử (Testing)
Kiểm định hình thức (Formal Verification)
Lập trình an toàn (Secure Coding)
Mục đích của kiểm định hình thức là chứng
minh hệ thống an toàn
9
8/28/2014
Kiểm định mô hình (Model checking)
◦ Phần mềm được đặc tả bằng một mô hình
◦ Quá trình kiểm định thực hiện bằng cách duyệt tất cả
các trạng thái thông qua tất cả các chuyển tiếp
Suy diễn logic (Logical Inference)
ầu vào của phần mềm bị ràng buộc bằng một biểu
thức logic
◦ Tương tự với đầu ra
◦ Bản thân phần mềm cũng bị ràng buộc bằng một biểu
thức logic
◦
ầu vào
Chương trình
ầu ra
ầu vào
+ iều kiện trước
Chương trình
+ iều kiện
ầu ra
+ iều kiện sau
Phần mềm ác tính
◦ Các phần mềm ác tính thường gặp
◦ Các biện pháp ngăn chặn
Lỗi phần mềm
◦ Các lỗi phần mềm thường gặp
◦ Các biện pháp an toàn
Kiểm thử (Testing)
Kiểm định hình thức (Formal Verification)
Lập trình an toàn (Secure Coding)
10
8/28/2014
Nguyên tắc
◦ Mô đun (Modularity)
◦ óng gói (Encapsulation)
◦ Giấu thông tin (Information Hiding)
Thiết kế các hợp phần
◦ Một mục tiêu/nhiệm vụ
◦ Nhỏ
◦ ơn giản
◦ ộc lập
Giấu thông tin về cách thức cài đặt các hợp
phần
◦ Ví dụ: lớp ảo C++, giao diện Java
Giảm thiểu chia xẻ giữa các hợp phần
◦ Ví dụ: các thư viện
Các hợp phần tương tác thông qua các giao
diện
◦ Ví dụ: tương tác giữa các đối tượng thông qua các
phương thức
11
8/28/2014
Một hợp phần như một hộp đen nhìn từ phía
ngoài
◦ Ví dụ: một lớp C++, Java
Các phần tử bên ngoài không thể thay đổi
sữa chữa thông tin một cách ác ý và trái phép
◦ Ví dụ: các thuộc tính private, protected
Một số quy tắc thực hành
◦ Sử dụng một chuẩn lập trình
◦ Lập trình phòng thủ
Kiểm tra dữ liệu đầu vào/đầu ra
Sử dụng đặc quyền thấp nhất có thể
◦ Thiết kế theo chính sách an toàn
◦ Sử dụng các công cụ đảm bảo chất lượng
Kiểm thử
Kiểm định
Duyệt lại mã
Hãy thiết kế mô hình tổng quát bảo mật hệ
thống thông tin / phần mềm của một doanh
nghiệp hay tổ chức có cơ sở hạ tầng CNTT
mạng LAN kết nối trực tuyến với Internet:
1) Mô hình bảo mật hệ thống thông tin /
phần mềm
2) Các kỹ thuật và công cụ phần mềm để bảo
mật hệ thống / phần mềm
36
12