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

(TIỂU LUẬN) THỰC tập cơ sở CHUYÊN NGÀNH AN TOÀN PHẦN mềm (SOFTWARE SECURITY)

27 4 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

Tiêu đề Thực tập cơ sở chuyên ngành an toàn phần mềm
Tác giả Võ Minh Sang, Trần Quốc Hoàng, Phạm Nguyễn Tiến Anh, Huỳnh Hải Băng
Người hướng dẫn PGS.TS Lương Thế Dũng
Chuyên ngành An toàn phần mềm
Thể loại Thực tập cơ sở
Định dạng
Số trang 27
Dung lượng 1,79 MB

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

Nội dung

Có thể định nghĩa một cách dễ hiểu như sau: An toàn phần mềm bảo là một ý tưởng được thực hiện để bảo vệ phần mềm chống lại ѕố nhân.ự tồn tại ᴄủa một lỗ hổng trong phần mềm, khả năng mà

Trang 1

THỰC TẬP

CƠ SỞ CHUYÊN NGÀNH

AN TOÀN PHẦN MỀM (SOFTWARE SECURITY)

GVHD: PGS.TS Lương Thế Dũng

Trang 2

Sinh viên thực hiện: Võ Minh Sang

Trần Quốc Hoàng Phạm Nguyễn Tiến Anh

Huỳnh Hải Băng

Khóa: 15

Nhóm: 13

Trang 4

Chương I: Mở đầu

1.1 Lý do chọn đề tài

Ngày nay, với xu hướng chuyển đổi số mạnh mẽ của các doanh nghiệp, công ty, tổ chức dẫn đến việc tạo ra những phần mềm quản lý, điều hành và làm việc cũng hết sức thiết yếu Bên cạnh đó, ảnh hưởng của đại dịch COVID-19 cũng đã thúc đẩy nhanh việc chuyển đổi số Để đảm bảo an toàn cho phần mềm khi tạo ra và vận hành tránh bị kẻ xấu tấn công gây thiệt hại nghiêm trọng Đó cũng là lý do để chúng em chọn chuyên đề Software Security.

1.2 Mục đích chọn đề tài:

Tìm hiểu những kiến thức tổng quan về an toàn phần mềm, tìm hiểu về các cách tấn công, cũng như khám phá môi trường Unix giúp ích cho việc học hỏi, tiếp thu thêm nhiều bài học kinh nghiệm thực tế hơn Thực hiện các bài lab theo trang web

https://seedsecuritylabs.org/Labs_16.04/Software /

Trang 5

Chương II: Tổng quan về an toàn phần mềm

2.1 Khái niệm cơ bản

2.1.1 Lỗ hổng phần mềm là gì?

Lỗ hổng phần mềm ᴄó thể đượᴄ hiểu như là một trụᴄ trặᴄ hoặᴄ điểm tếu trong phần mềm, trong tất ᴄả ᴄáᴄ hệ thống đều ẩn ᴄhứa những lỗ hổng

hệ điều hành, mứᴄ độ nghiêm trọng ᴄủa lỗ hổng phần mềm đang tăng lên

theo ᴄấp ѕố nhân.ố nhân.

Trang 6

Chương II: Tổng quan về an toàn phần mềm

2.1 Khái niệm cơ bản

2.1.2 An toàn phần mềm là gì?

Có thể định nghĩa một cách dễ hiểu như sau: An toàn phần mềm bảo là một ý tưởng được thực hiện để bảo vệ phần mềm chống lại ѕố nhân.ự tồn tại ᴄủa

một lỗ hổng trong phần mềm, khả năng mà tin tặc trut ᴄập ᴠào một lỗ

hổng bảo mật và nguy cơ từ việc tin tặc tấn công lỗ hổng, để giúp phần

mềm có thể tiếp tục chức năng một cách chính xác dưới rủi ro tiềm tàng

như vậy An ninh là cần thiết để cung cấp tính toàn vẹn, xác thực và tính

sẵn sàng.

Trang 7

2.2 Các bài lab được đề cập đến trong quá trình nghiên cứu

1 Buffer-Overflow Vulnerability Lab

 Các bài lab này bao gồm một số lỗ hổng phổ biến nhất trong phần mềm nói chung, cho phép2 Return-to-libc Attack Lab

sinh viên thấy các cuộc tấn công hoạt động như thế nào trong việc khai thác các lỗ hổng này.

3 4 5 6 7

Enviroment Variable and Set-UID Lab Race Condition Vulnerability Lab Dirty Cow Attack Lab

Format String Vulnerability Lab Shellshock Attack Lab

Trang 8

2.3 Khái quát về các bài lab

2.3.1 Buffer-Overflow Vulnerability Lab

Trang 9

2.3.1 Buffer-Overflow

Vulnerability Lab Giới thiệu

• Tràn bộ đệm là một lỗi lập trình có thể gây ra một ngoại lệ

truy nhập bộ nhớ máy tính và chương trình bị kết thúc Tràn bộ

đệm được định nghĩa là điều kiện trong đó chương trình cố

gắng ghi dữ liệu vượt ra ngoài ranh giới của bộ đệm có độ dài

cố định được cấp phát trước

• Lỗ hổng này lợi dụng để thay đổi kiểm soát luồng của

chương trình, thậm chí thực thi các đoạn mã tùy ý Lỗ hổng

này phát sinh do sự trộn lẫn giữa bộ lưu trữ cho dữ liệu (ví dụ

bộ đệm) và bộ lưu trữ cho các điều khiển (ví dụ: địa chỉ trả về):

phần dữ liệu bị tràn có thể ảnh hưởng đến luồng điều khiển của

chương trình, vì tràn có thể thay đổi địa chỉ trả về

Mục tiêu

• Cung cấp một chương trình có lỗ hổng tràn bộ đệm; nhiệm

vụ của chúng ta là phát triển một kế hoạch để khai thác lỗhổng và cuối cùng là giành được đặc quyền root Ngoài cáccuộc tấn công, sinh viên sẽ được hướng dẫn thực hiện một sốphương án bảo vệ đã được triển khai trong hệ điều hành đểchống lại các cuộc tấn công tràn bộ đệm

Trang 10

An toàn phần mềm

Trang 11

2.3 Khái quát về các bài lab

2.3.2 Return-to-libc Attack Lab

An toàn phần mềm

Trang 12

2.3.2 Return-to-libc

Attack Lab Giới thiệu

• Là một phương pháp khai thác lỗi có ngăn xếp không thực

thi được, nó rất giống với tràn bộ đệm tiêu chuẩn, trong đó địa

chỉ trả về được thay đổi để trỏ đến một vị trí mới mà chúng ta

có thể kiểm soát Tuy nhiên, vì không có mã thực thi nào được

phép trên ngăn xếp, ta không thể chỉ gắn thẻ trong shellcode

• Vì vậy ta sử dụng thủ thuật return-to-libc và sử dụng một

hàm được cung cấp bởi thư viện Ta vẫn ghi đè địa chỉ trả về

bằng một trong các hảm của libc, chuyển cho nó các đối số

• Để ngăn chặn các kiểu tấn công này, một số hệ điều hànhcho phép quản trị viên hệ thống tạo các ngăn xếp không thểthực thi được; do đo, việc nhảy đến shellcode sẽ khiếnchương trình bị lỗi

Trang 13

An toàn phần mềm 11

Trang 14

2.3 Khái quát về các bài lab

2.3.3 Enviroment Variable and Set-UID Lab

Trang 15

2.3.3 Enviroment Variable and

Set-UID Lab Giới thiệu

Biến môi trường (Enviroment Variable) là những giá trị

được cung • cấp và phụ thuộc vào Hệ điều hành, vậy nên sự

thay đổi của các biến môi trường (khi thay đổi môi trường

chạy) sẽ ảnh hưởng đến quá trình thực thi của một ứng dụng,

nếu như ứng dụng sử dụng các biến môi trường đó

• Set-UID (SET User ID upon execution), là một loại đặc quyền

file (file permission) đặc biệt, có thể cho phép user tạm có quyền

thực thi file bằng chính quyền của người sở hữu (owner) để thay

Đặc biệt quan tâm đến cách các biến môi trường ảnh hưởngđến hoạt động của các chương trình Set-UID, thường là cácchương trình đặc quyền

Trang 16

An toàn phần mềm

Trang 17

2.3 Khái quát về các bài lab

2.3.4 Race Condition Vulnerability Lab

An toàn phần mềm

Trang 18

2.3.4 Race Condition Vulnerability Lab

• Race-Condition là một tình huống xảy ra khi nhiều threads • Trong lab này, chúng ta được cấp một chương trình có lỗ hổngcùng truy cập và cùng lúc muốn thay đổi dữ liệu (có thể là một race-condition, sinh viên triển khai một kế hoạch để khai thácbiến, một row trong database, một vùng shared data, memory , lỗ hổng khai thác lỗ hổng để có được đặc quyền root

etc ) • Ngoài ra, chúng ta sẽ được hướng dẫn thực hiện một số

• Một race-condition xảy ra khi nhiều quy trình truy cập và thao phương án bảo vệ có thể được sử dụng để chống lại các cuộctác đồng thời cùng một dữ liệu và kết quả của việc thực thi phụ tấn công theo Race-Condition

thuộc vào thứ tự cụ thể mà việc truy cập diễn ra Nếu mộtchương trình đặc quyền có lỗ hổng race-condition, những kẻ

tấn công có thể chạy một quy trình song song để "chạy đua"

với chương trình đặc quyền, với ý định thay đổi các hành vi

của chương trình

Trang 19

2.3 Khái quát về các bài lab

2.3.5 Dirty-Cow Attack Lab

An toàn phần mềm

Trang 20

2.3.5 Dirty-Cow Attack Lab

• Dirty-COW là một trường hợp đặc biệt của lỗ hổng race • Bằng cách khai thác lỗ hổng bảo mật nằm trong mã copy-oncondition Nó tồn tại trong nhân Linux từ tháng 9 năm 2007, ghi bên trong nhân Linux để có thể sửa đổi bất kỳ tệp đượcđược phát hiện và khai thác vào tháng 10 năm 2016 Lỗ hổng bảo vệ nào, dù là những tệp này chỉ được đọc

ảnh hưởng đến tất cả các hệ điều hành dựa trên Linux, bao gồm • Hiểu hơn về dạng lỗ hổng Race-Condition bị khai thác bởi

cả Android, và hậu quả là kẻ tấn công có thể giành được đặc cuộc tấn công này và hiểu sâu hơn về các vấn đề bảo mậtquyền root Race-Condition nói chung Trong lab này, sinh viên khai thác

lỗ hổng Dirty-COW để có được đặc quyền root

Trang 21

2.3 Khái quát về các bài lab

2.3.6 Format-String Attack Lab

An toàn phần mềm

Trang 22

2.3.6 Format-String Attack Lab

• Hàm printf () trong C được sử dụng để in ra một chuỗi theo • Khai thác lỗ hổng bằng các bước sau: (1) làm hỏng chươngmột định dạng Đối số đầu tiên của nó được gọi là chuỗi định trình, (2) đọc bộ nhớ trong của chương trình, (3) sửa đổi bộdạng, xác định cách định dạng chuỗi Định dạng chuỗi sử dụng nhớ trong của chương trình và nghiêm trọng nhất là (4) đưa vàtrình giữ chỗ được đánh dấu bởi ký tự % cho hàm printf () để thực thi mã độc hại bằng cách sử dụng đặc quyền truy cập

điền dữ liệu trong quá trình in Việc sử dụng các chuỗi định chương trình của nạn nhân

dạng không chỉ giới hạn trong hàm printf (); nhiều hàm khác, • Hậu quả cuối cùng là rất nguy hiểm nếu chương trình dễ bị tấnchẳng hạn như sprintf (), fprintf (), và scanf (), cũng sử dụng công là chương trình đặc quyền, chẳng hạn như một root

chuỗi định dạng Một số chương trình cho phép người dùng deamon, vì điều đó có thể cung cấp cho những kẻ tấn côngcung cấp toàn bộ hoặc một phần nội dung trong một chuỗi định quyền truy cập root của hệ thống

dạng Nếu những nội dung đó không được làm sạch, người

dùng độc hại có thể sử dụng cơ hội này để lấy chương trình để

chạy mã tùy ý

Trang 23

2.3 Khái quát về các bài lab

2.3.7 Shellshock Attack Lab

An toàn phần mềm

Trang 24

2.3.7 Shellshock Attack Lab

• Shellshock là một lỗ hổng bảo mật trong Bash, được công bố • Lỗ hổng shellhock trong bash liên quan đến các hàm shell - cácrộng rãi vào ngày 25 tháng 9 năm 2014 Lỗ hổng này có thể hàm được xác định bên trong shell Bằng cách khai thác sai

khai thác nhiều hệ thống và được khởi chạy từ xa hoặc từ

lầm do bash mắc phải khi chuyển đổi các biến môi trườngmột máy cục bộ và giúp kẻ tấn công chiếm quyền điểu khiển

thành các định nghĩa hàm

máy nạn nhân mà không cần phải qua bước xác thực

• Lỗ hổng bảo mật này giúp kẻ tấn công chiếm quyền điểu khiểnmáy nạn nhân mà không cần phải qua bước xác thực

Trang 25

Chương III : Thực nghiệm

Demo

Trang 26

Chương IV : TỔNG KẾT

4.1 Hạn chế:

Trong suốt thời gian nghiên cứu đề tài, chúng em đã cố gắng hết sức để tìm hiểu và thực hiện đề tài Tuy nhiên với kiến thức, kinh nghiệm và thời gian hạn chế nên không thể không tránh khỏi những thiếu sót Cụ thể:

- Chưa thực hiện được một số task nâng cao.

- Chưa nghiên cứu sâu được

4.2 Kết luận và hướng phát triển:

- Có kiến thức tổng quan về một số khái niệm , định nghĩa thuộc về an toàn phần mềm thông qua việc nghiên cứu.

- Tìm hiểu chi tiết về cách cài đặt môi trường ảo thực hiện lab (VMware, Virtual Box).

- Thực hiện thành công nhiều task của từng bài lab.

 Tiếp tục tìm hiểu nâng cao, nghiên cứu sâu và áp dụng vào thực tiễn.

Trang 27

CẢM ƠN THẦY (CÔ) ĐÃ

LẮNG NGHE

Ngày đăng: 14/12/2022, 10:23

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w