Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 24

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
An toàn phần mềm 1
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
Lớp: AT15H
Khóa: 15
Nhóm: 13

An toàn phần mềm 2


Chương I • Mở đầu

Chương II • Tổng quan về an toàn thông tin

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

Chương IV • Tổng kết

An toàn phần mềm 3


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/

An toàn phần mềm 4


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
уế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.

An toàn phần mềm 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.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 ѕự tồn tại ᴄủa
một lỗ hổng trong phần mềm, khả năng mà tin tặc truу ᴄậ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.

An toàn phần mềm 6


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ép
2 tấn công hoạt
sinh viên thấy các cuộc Return-to-libc
động như thếAttack Lab việc khai thác các lỗ hổng này.
nào trong
3 Enviroment Variable and Set-UID Lab
4 Race Condition Vulnerability Lab
5 Dirty Cow Attack Lab

6 Format String Vulnerability Lab


7 Shellshock Attack Lab

An toàn phần mềm 7


2.3. Khái quát về các bài lab
2.3.1 Buffer-Overflow Vulnerability Lab

An toàn phần mềm 8


2.3.1 Buffer-Overflow Vulnerability Lab
Giới thiệu Mục tiê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 • Cung cấp một chương trình có lỗ hổng tràn bộ đệm; nhiệm vụ của
bộ nhớ máy tính và chương trình bị kết thúc. Tràn bộ đệm được định chúng ta là phát triển một kế hoạch để khai thác lỗ hổng và cuối
nghĩa là điều kiện trong đó chương trình cố gắng ghi dữ liệu vượt ra cùng là giành được đặc quyền root. Ngoài các cuộc tấn công, sinh
ngoài ranh giới của bộ đệm có độ dài cố định được cấp phát trước. viên sẽ được hướng dẫn thực hiện một số phương án bảo vệ đã được
• Lỗ hổng này lợi dụng để thay đổi kiểm soát luồng của chương trình, triển khai trong hệ điều hành để chống lại các cuộc tấn công tràn bộ
thậm chí thực thi các đoạn mã tùy ý. Lỗ hổng này phát sinh do sự đệm.
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ề .

9
An toàn phần mềm
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 10


2.3.2 Return-to-libc Attack Lab
Giới thiệu Mục tiêu

• Là một phương pháp khai thác lỗi có ngăn xếp không thực thi được, • Được trải nghiệm trực tiếp về một biến thể thú vị của tấn công tràn
nó rất giống với tràn bộ đệm tiêu chuẩn, trong đó địa chỉ trả về được bộ đệm; cuộc tấn công này có thể bỏ qua một sơ đồ bảo vệ hiện có
thay đổi để trỏ đến một vị trí mới mà chúng ta có thể kiểm soát. Tuy hiện được triển khai trong các hệ điều hành Linux chính. Một cách
nhiên, vì không có mã thực thi nào được phép trên ngăn xếp, ta phổ biến để khai thác lỗ hổng tràn bộ đệm là làm tràn bộ đệm bằng
không thể chỉ gắn thẻ trong shellcode. một mã shellcode độc hại, và sau đo khiến chương trình dễ bị tấn
• Vì vậy ta sử dụng thủ thuật return-to-libc và sử dụng một hàm được công nhảy đến shellcode được lưu trữ trong ngăn xếp.
cung cấp bởi thư viện. Ta vẫn ghi đè địa chỉ trả về bằng một trong • Để ngăn chặn các kiểu tấn công này, một số hệ điều hành cho phép
các hảm của libc, chuyển cho nó các đối số chính xác và thực thi nó quản trị viên hệ thống tạo các ngăn xếp không thể thực thi được; do
cho ta. Vì các hàm này không nằm trên ngăn xếp, ta có thể bỏ qua đo, việc nhảy đến shellcode sẽ khiến chương trình bị lỗi
ngăn xếp và thực thi code.

11
An toàn phần mềm
2.3. Khái quát về các bài lab
2.3.3 Enviroment Variable and Set-UID Lab

An toàn phần mềm 12


2.3.3 Enviroment Variable and Set-UID Lab
Giới thiệu Mục tiêu

• Biến môi trường (Enviroment Variable) là những giá trị được cung • Giúp tìm hiểu cách các biến môi trường ảnh hưởng đến chương trình
cấp và phụ thuộc vào Hệ điều hành, vậy nên sự thay đổi của các và hành vi của hệ thống. Mặc dù các biến môi trường ảnh hưởng đến
biến môi trường (khi thay đổi môi trường chạy) sẽ ảnh hưởng đến các hành vi của chương trình, nhưng cách chúng hoạt động thì
quá trình thực thi của một ứng dụng, nếu như ứng dụng sử dụng các không được nhiều lập trình viên hiểu rõ. Kết quả là, nếu một chương
biến môi trường đó. trình sử dụng các biến môi trường, các chương trình co thể có lỗ
• Set-UID (SET User ID upon execution), là một loại đặc quyền file hổng. Qua bài lab này, sẽ hiểu rõ cách vận hành của các biến môi
(file permission) đặc biệt, có thể cho phép user tạm có quyền thực trường, cách chúng được đề xuất từ quy trình mẹ sang quy trình con,
thi file bằng chính quyền của người sở hữu (owner) để thay đổi và cách chúng ảnh hưởng đến các chương trình/ hệ thống.
hành vi của file thực thi đó. • Đặ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ác chương trình đặc
quyền.

13
An toàn phần mềm
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 14


2.3.4 Race Condition Vulnerability Lab

Giới thiệu Mục tiêu

• 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ổng
cù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ác
biế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ộc
tá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ột
chươ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.

An toàn phần mềm 15


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 16


2.3.5 Dirty-Cow Attack Lab

Giới thiệu Mục tiêu

• 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-on
condition. 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ật
quyề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.

An toàn phần mềm 17


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 18


2.3.6 Format-String Attack Lab
Giới thiệu Mục tiêu

• 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ương
mộ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ấn
chẳ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ông
cung 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 ý.

An toàn phần mềm 19


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 20


2.3.7 Shellshock Attack Lab

Giới thiệu Mục tiêu

• 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ác
rộ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ường
mộ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ển
máy nạn nhân mà không cần phải qua bước xác thực.

An toàn phần mềm 21


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

An toàn phần mềm 22


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.
An toàn phần mềm 23
CẢM ƠN THẦY (CÔ) ĐÃ LẮNG
NGHE

An toàn phần mềm 24

You might also like