Tải bản đầy đủ (.ppt) (34 trang)

An toàn phần mềm Lỗi 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 (466.27 KB, 34 trang )

An toàn phần mềm
Lỗi phần mềm
Giáo viên hướng dẫn: TS. Trần Đức Khánh
Học viên thực hiện :
1. Trương Thảo

Nguyên

2. Vũ Đình Phú
3. Nguyễn Hồng Tâm
4. Đỗ Ngọc Phục
5. Lê Gia Vĩnh


Tài liệu tham khảo
1. Bài giảng An toàn phần mềm – lỗi phần mềm
TS. Trần Đức Khánh, Đại học Bách Khoa Hà Nội

2. Security in Computing, Fourth Edition.
Charles P. Pfleeger, Shari Lawrence Pfleeger

3. Đồ án “Lỗi tràn bộ đệm trên Windows”
Lương Khánh Hoàng, lớp Tin5 – K48 Bách Khoa Hà Nội

4. Websites wikipedia, security focus, teach target, etc

07/27/22

An toàn phần mềm

2




Nội dung

07/27/22

1

Tổng quan về an toàn phần mềm

2

Một số lỗi phần mềm thường gặp

3

Các biện pháp an toàn

4

Tổng kết

An toàn phần mềm

3


1. Tổng quan về an tồn phần mềm
Bí mật (Confidentiability): tài sản
chỉ được truy nhập bởi những người

có quyền
Tồn vẹn (Intergrity): tài sản chỉ
được tạo/xóa/sửa đổi bởi những
người có quyền
Sẵn dùng (Availability): tài sản sẵn
sàng để đáp ứng sử dụng cho những
người có quyền
07/27/22

Tổng quan về an tồn phần mềm

4


1. Tổng quan về an tồn phần mềm
Lỗi phần mềm
Có các lỗi phần mềm thơng thường
 Có các lỗi về an toàn phần mềm ( kẻ xấu lợi dụng
để vi phạm tính Bí mật – Tồn vẹn – Sẵn dùng)

Code injection
07/27/22

Ping of death
Tổng quan về an toàn phần mềm

WebDav
5



1. Tổng quan về an toàn phần mềm

Lỗi tràn bộ đệm ( buffer over flow)

Lỗi không đầy đủ ( Incomplete mediation)

Lỗi đồng bộ (Synchronization)

07/27/22

2. Một số lỗi an toàn thường gặp

6


Nội dung

07/27/22

1

Tổng quan về an toàn phần mềm

2

Một số lỗi phần mềm thường gặp

3

Các biện pháp an toàn


4

Tổng kết

An toàn phần mềm

7


2.1. Lỗi tràn bộ đệm

 Hàm gets đọc nội dung từ stdin ghi vào buf
 Nếu đầu vào lớn hơn 80 byte, hàm gets sẽ ghi đè lên
bộ nhớ vượt quá bộ nhớ buf
 Đây là lỗi phần mềm – lỗi tràn bộ đệm.
07/27/22

2. Một số lỗi phần mềm thường gặp

8


2.1. Lỗi tràn bộ đệm
 Lỗi tràn bộ đệm (Buffer over flow)
 Chèn mã lệnh và thực hiện mã lệnh
 Phạm vi ảnh hưởng lớn (phụ thuộc vào quyền của
người dùng đăng nhập vào hệ thống và mã thực thi xấu)
Sep 05 2008: Google Chrome 0.2.149.27 'SaveAs' Function Buffer Overflow
Vulnerability

Discoverer: Le Duc Anh - SVRT – Bkis
Description : The vulnerability is caused due to a boundary error when handling
the "SaveAs" function. On saving a malicious page with an overly long title
(<title> tag in HTML), the program causes a stack-based overflow
and makes it possible for attackers to execute arbitrary code on
users' systems.
Nguồn: />07/27/22

2. Một số lỗi phần mềm thường gặp

9


2.1. Lỗi tràn bộ đệm
0x00…0

fn( param1,param2) đuợc gọi
Stack

Buffer

0x0012D000

Lưu lại SP
Nội dung file exe

Heap

Kernel
0xFF…F


07/27/22

IP

RET: Địa chỉ trả
về (IP)
Stack frame của
hàm gọi
5. fn(…)
6. fn1(…)
Nội dung hàm fn

2. Một số lỗi phần mềm thường gặp

10


2.1. Lỗi tràn bộ đệm

Buf quá lớn, SP và RET sẽ
bị ghi đè
 Có thể khéo léo ghi đè địa
chỉ trả về RET là địa chỉ của
đoạn mã độc
 Sau khi hàm fn thực hiện
xong, sẽ thực thi tiếp đoạn mã
độc
07/27/22


Buffer
Lưu
lại SP
……..
RET:
Địa chỉ
Địacủa
chỉmã
trả
vềđộc
(IP)
Stack frame của
hàm gọi

2. Một số lỗi phần mềm thường gặp

11


2.1. Lỗi tràn bộ đệm
Hình thức khai thác
 Ghi đè vào địa chỉ trả về hàm
 Ghi đè lên SEH (Structured Exception Handling)
 Tràn Heap (Heap over flow)
 Lập trình an toàn
 Phát hiện: StackGuard, Microsoft Visual Studio /GS
(2003)
Nguồn />
07/27/22


2. Một số lỗi phần mềm thường gặp

12


2.2. Lỗi không đầy đủ

len là một số âm, copy một đoạn lớn bộ nhớ => họat động
sai, hệ thống crash …
07/27/22

2. Một số lỗi phần mềm thường gặp

13


2.2. Lỗi không đầy đủ
 Lỗi không đầy đủ (Incomplete mediation)
 Về bản chất là khơng kiểm sốt được giá trị đầu vào,
người lập trình khơng kiểm tra (check) giá trị đầu vào
 Dễ khai thác tuy nhiên ít được sử dụng hơn lỗi tràn bộ
đệm do khó gây tác hại lớn hơn.
Link đặt hàng trên things.com
/>ship=boat&shipcost=5&total=205
 />&qy=20&price=1&ship=boat&shipcost=5&total=25
Nguồn />07/27/22

2. Một số lỗi phần mềm thường gặp

14



2.3. Lỗi đồng bộ
Trong Linux, đoạn code C dưới đây được sử dụng
trong chương trình setuid bị lỗi đồng bộ

Nguồn: Wikipedia
07/27/22

2. Một số lỗi phần mềm thường gặp

15


2.3. Lỗi đồng bộ
 Mặc dù việc thay đổi hệ thống phải thực hiện chính
xác trong khoảng thời gian nhỏ, nhưng kẻ tấn cơng vẫn
có khả năng thực hiện được
 Vấn đề ở đây là người lập trình viên khơng thể chắc
chắn được là hệ thống có thay đổi hay khơng giữa hai
câu lệnh access và open.
 Có thể gây ảnh hưởng với việc kiểm tra truy nhập. Kẻ
tấn công có thể lợi dụng để chiếm quyền điều khiển hoặc
thực hiện thao tác bất hợp pháp
07/27/22

2. Một số lỗi phần mềm thường gặp

16



2.4 Phịng chống lỗi đồng bộ
Chưa có giải pháp chung nhưng có một số chiến thuật
sau:
-Kiểm tra tĩnh cho mối nguy hiểm
-Hack chương trình setuid
-Phát hiện nguyên nhân và thiệt hại
-Sử dụng chế độ người dùng phát hiện động
-Thay đổi giao diện

07/27/22

2. Một số lỗi phần mềm thường gặp

17


Nội dung

07/27/22

1

Tổng quan về an toàn phần mềm

2

Một số lỗi phần mềm thường gặp

3


Các biện pháp an toàn

4

Tổng kết

An toàn phần mềm

18


3. Các biện pháp an tồn
Có nhiều biện pháp khác nhau để xác định, xây dựng
một phần mềm an toàn.
 Kiểm thử phần mềm (testing)
 Kiểm định hình thức (formal verification)
 Lập trình an tồn (secure coding)

07/27/22

3. Các biện pháp an toàn

19


3.1 Kiểm thử
Lập kết
hoạch kiểm
thử và thực

hiện

Phân tích
động

Kiểm thử đơn vị, Kiểm thử tích
hợp, Kiểm thử chức năng, Kiểm
thử hiệu năng, Kiểm thử chấp
nhận, Kiểm thử cài đặt…

Kiểm
Kiểmthử
thử
an
antồn
tồnphần
phần
mềm
mềm

Phân tích
tĩnh

Dùng tool: Kiểm tra khi đang
chạy chương trình
Dùng check list ( best practice)

Quét mã nguồn (Code
scanning), Phân tích tĩnh (static
analysis – code inspect)

Tổng hợp từ Security Testing Services

07/27/22

3. Các biện pháp an toàn

20


3.2. Kiểm định hình thức
Formal verification
Mục đích: Nhằm chứng minh hệ thống đáp ứng
được các yêu cầu an toàn.
 Việc chứng minh thường thơng qua:
 Mơ hình hóa hệ thống bằng mơ hình tốn học
 Chứng minh dựa trên mơ hình tốn học
Kiểm định mơ
hình (Model
checking)
07/27/22

Suy diễn logic
(Logical
inference)
3. Các biện pháp an toàn

21


3.2. Kiểm định hình thức

Kiểm định mơ hình
Đặc tả phần mềm bằng mộ hình là một tập các
trạng thái hữu hạn
 Giữa các trạng thái có các chuyển tiếp (transition)
 Kiểm định: Duyệt qua tất cả các trạng thái thông
qua tất cả các chuyển tiếp. Trong q trình đó xác định
u cầu có được thỏa mãn hay khơng

07/27/22

22


3.2. Kiểm định hình thức
Suy diễn logic
 Đặc tả phần mềm bằng một tập các biểu thức logic:
Đầu vào, đầu ra của phần mềm, chức năng bị ràng
buộc bằng một biểu thức logic
Phần mềm cũng bị ràng buộc bằng một biểu thức
logic
 Dựa trên suy diễn logic để xác định u cầu có thỏa
mãn hay khơng

07/27/22

3. Các biện pháp an toàn

23



3.2. Kiểm định hình thức
Suy diễn logic
Giả sử chương trình P là một bộ biến đổi tuần tự P để chuyển đầu
vào x thành đầu ra y; ở đây x và y hoàn toàn được xác định trước.
Như vậy, một chương trình P được gọi là đúng nếu nó thực hiện
chính xác những mục tiêu do người thiết kế đặt ra. Gọi:
+ Giả thiết {A} là mệnh đề được phát biểu để thể hiện tính chất của
đầu vào, gọi tắt là mệnh đề dữ liệu vào.
+ Kết luận {B} là mệnh đề được phát biểu để tính chất cần có của
dữ liệu ra, gọi tắt là mệnh đề dữ liệu ra.
Do P có tính tuần tự và hữu hạn nên có thể biểu diễn P là một dãy
liên tiếp các cấu trúc điều khiển P1, P2,....,Pn. Dẫn đến:

07/27/22

3. Các biện pháp an toàn

24


3.2. Kiểm định hình thức
Suy diễn logic
P1 biến đổi {A} thành {A1}
P2 biến đổi {A1} thành {A2}
....
Pn biến đổi {An-1} thành {An}
Và dựa vào quy tắc tốn học, {An} có thể suy ra {B} thì ta
có thể nói rằng P là đúng với cái vào {A} và cái ra {B}. Lúc
này ký hiệu {A}P{B}
Nói cách khác, để chứng minh P là đúng, ta chứng minh theo

sơ đồ sau:
{A} P1 {A1}
{A1} P2 {A2}
….
{An-1}Pn{An}
{An}=>{B}
07/27/22

An toàn phần mềm

25


×