Tải bản đầy đủ (.pdf) (12 trang)

Bài giảng An toàn phần mềm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.06 MB, 12 trang )

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



×