1. Trang chủ
  2. » Giáo Dục - Đào Tạo

An toàn phần mềm Lỗi phần mềm

34 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 1,2 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Slide 1 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 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 Đồ á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, teac.

Trang 2

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

Trang 3

Nội dung

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

Một số lỗi phần mềm thường gặp Các biện pháp an toàn

2 3

4 Tổng kết

Trang 4

Toà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

Toà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

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

Trang 5

1 Tổng quan về an toàn 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 – Toàn vẹn – Sẵn dùng)

Lỗi phần mềm

Trang 6

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)

Trang 7

4 Tổng kết

Trang 8

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.

Trang 9

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: http://www.securityfocus.com/archive/1/496042

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

 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)

Trang 10

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

Lưu lại SP RET: Địa chỉ trả

về (IP) Buffer

IP

Trang 11

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

Stack frame của hàm gọi

Lưu lại SP RET: Địa chỉ trả

 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

Trang 12

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)

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)

Trang 13

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 …

Trang 14

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

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

 Về bản chất là không kiểm soá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

http://www.things.com/order/final&custID=101&part=555A&qy=20&price=10& ship=boat&shipcost=5&total=205

http://www.things.com/order/final&custID=101&part=555A

&qy=20&price=1&ship=boat&shipcost=5&total=25

Nguồn http://www.informit.com/

Trang 15

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

Trang 16

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

Trang 17

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

Trang 18

4 Tổng kết

Trang 19

3 Các biện pháp an toà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 toàn (secure coding)

Trang 20

Dùng tool: Kiểm tra khi đang

chạy chương trình

Dùng check list ( best practice)

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)

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

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 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…

Lập kết hoạch kiểm thử và thực hiện

Phân tích tĩnh

Phân tích tĩnh

Phân tích động

Tổng hợp từ Security Testing Services

Trang 21

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 toán học

 Chứng minh dựa trên mô hình toán học

Kiểm định mô hình (Model checking)

Kiểm định mô hình (Model checking)

Suy diễn logic (Logical inference)

Suy diễn logic (Logical inference)

Trang 22

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

Đặ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 quá trình đó xác định yêu cầu có được thỏa mãn hay không

Kiểm định mô hình

Trang 23

 Dựa trên suy diễn logic để xác định yêu cầu có thỏa mãn hay không

Suy diễn logic

Trang 24

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

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:

Suy diễn logic

Trang 25

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

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 toá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

Trang 26

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

Ví dụ 1: Cho mệnh đề dữ liệu vào {A: x,y R; 0<x<1}∈

Đoạn trình P =P1 P2 P3 P4 như sau∪ ∪ ∪ :

x:=1/x+1; (P1)

y:=y+1; (P2)

x:=x+2; (P3)

x:=x+y; (P4)

và mệnh đề dữ liệu ra {B: x,y R; x>y+3}∈

Lúc này ta có dãy biến đổi tính chất dữ liệu vào/ ra như sau:

{A} P1{A1: x,y R; x>2}∈

{A1}P2{A2: x,y R; x>2}∈

{A2}P3{A3: x,y R; x>4}∈

{A3}P4{A4: x,y R; x>y+4}∈

Vậy ta có kết luận {A}P{B} hay nói cách khác là P đúng với dữ liệu

Suy diễn logic

Trang 27

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

Hệ tiên đề Hoare:

Tiên đề 1: Tiên đề tuần tự

Nếu mệnh đề {A} sau khi chịu tác động của khối cấu trúc điều khiển P ta được {B} và mệnh đề {B} sau khi chịu tác động của cấu trúc điều khiển

Q ta được {C} thì {A} chịu tác động tuần tự P,Q sẽ thu được {C} Hay nói cách khác, đây chính là tiên đề về dãy thao tác: Nếu {A} P {B} và {B} Q {C} thì {A} P,Q {C}

Tiên đề 2: tính chất của phép gán

Điều kiện để có mệnh đề {B} sau khi thực hiện lệnh gán x: = E (với E là một biểu thức) từ mệnh đề {A} thì trước đó ta phải có {A} suy dẫn được ra {B[x|E]}.

Mệnh đề {B[x|E]} là mệnh đề thu được từ {B} bằng phép thay thế mọi

xuất hiện của x trong {B} bởi E Tức là: {A} x: = E {B} thì {A}=>{B[x| E]}

Suy diễn logic

Trang 28

2 Với mệnh đề dữ liệu vào {A}, mệnh đề dữ liệu ra {B}, biểu thức logic E, và các đoạn trình P, Q Nếu ta có {A, E}P{B} và {A,!

E}Q{B} thì ta nói rằng mệnh đề {A} và {B} tuân theo cấu trúc rẽ nhánh dạng đủ với cấu trúc P, Q và điều kiện lựa chọn E; tức là: {A}

if E then P else Q; {B}

Suy diễn logic

Trang 29

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

Hệ tiên đề Hoare:

Tiên đề 4: Tính bất biến của chương trình

Cho mệnh đề dữ liệu vào {A} và đoạn trình P Nếu ta có {A}P{A} thì ta nói rằng tính chất dữ liệu của mệnh đề {A} không thay đổi khi chịu sự tác động của đoạn trình P và lúc này người ta nói rằng mệnh

đề {A} là bất biến đối với P, tức ta có: {A}P{A}

Tiên đề 5: Tiên đề lặp

Cho mệnh đề dữ liệu vào {A}, biểu thức logic E và đoạn trình P

Nếu mệnh đề {A} tuân theo cấu trúc lặp P với điều kiện lặp E thì mệnh đề {A} sẽ bất biến đối với P trong điều kiện E, tức là

{A,E}P{A}, kết thúc vòng lặp ta có mệnh đề {A,!E} Lúc này ta

viết: {A} while E do P; {A,!E}

Suy diễn logic

Trang 30

 Tính đóng gói trong OOP:

 Nhằm che dấu thông tin về cách cài đặt

 Tương tác thông qua interface

Áp dụng các nguyên tắc lập trình:

 Module hóa:

Chia thành các thành phần nhỏ, đơn giản

Mỗi thành phần chỉ làm một nhiệm vụ

 Tính đóng gói trong OOP:

 Nhằm che dấu thông tin về cách cài đặt

 Tương tác thông qua interface

Trang 31

3.3 Lập trình an toàn

Áp dụng một số quy tắc lập trình an toàn như:

 Lập trình theo chuẩn (từ chuẩn đặt tên đến chuẩn phân bố

code)

 Luôn kiểm tra các giá trị đầu vào / đầu ra

 Sử dụng quyền thấp nhất, vừa đủ để thực hiện các thao tác

 Có chiến lược kiểm tra an toàn phần mềm:

 Xây dựng kế hoạch từ khởi đầu dự án phần mềm

 Kiểm thử an toàn

Áp dụng một số quy tắc lập trình an toàn như:

 Lập trình theo chuẩn (từ chuẩn đặt tên đến chuẩn phân bố

code)

 Luôn kiểm tra các giá trị đầu vào / đầu ra

 Sử dụng quyền thấp nhất, vừa đủ để thực hiện các thao tác

 Có chiến lược kiểm tra an toàn phần mềm:

 Xây dựng kế hoạch từ khởi đầu dự án phần mềm

 Kiểm thử an toàn

Trang 32

Nội dung

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

Một số lỗi phần mềm thường gặp Các biện pháp an toàn

2 3

Trang 33

4 Tổng kết

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

 Không đầy đủ (Incomplete mediation)

 Lỗi đồng bộ (Synchronization)

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

 Không đầy đủ (Incomplete mediation)

Trang 34

Cảm ơn đã lắng nghe

Ngày đăng: 22/07/2022, 10:09

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w