22
Bảo mật mã nguồn Nhóm 3

Bảo mật mã nguồn

  • Upload
    taya

  • View
    125

  • Download
    1

Embed Size (px)

DESCRIPTION

Bảo mật mã nguồn. Nhóm 3. Nội dung thuyết trình. 1. Bảo mật mã nguồn là gì?. Bảo mật mã nguồn là sự hạn chế khả năng lạm dụng mã nguồn. 2.Tại sao phải bảo mật mã nguồn?. Không muốn cho người khác truy cập trái phép Ý nghĩa sống còn trong kinh doanh - PowerPoint PPT Presentation

Citation preview

Page 1: Bảo mật mã nguồn

Bảo mật mã nguồn

Bảo mật mã nguồnNhóm 3Nhóm 3

Page 2: Bảo mật mã nguồn

Nội dung thuyết trình

Bảo mật mã nguồn là gì?

Tại sao phải bảo mật mã nguồn?

Làm sao để viết mã nguồn một cách bảo mật?

Những lỗi thông dụng thường gặp

Page 3: Bảo mật mã nguồn

1. Bảo mật mã nguồn là gì?

Bảo mật mã nguồn là sự hạn chế khả năng lạm dụng mã nguồn. 

Page 4: Bảo mật mã nguồn

2.Tại sao phải bảo mật mã nguồn?

• Không muốn cho người khác truy cập trái phép

• Ý nghĩa sống còn trong kinh doanh• Có ít đi những lổ hổng bảo mật

đồng nghĩa với việc chất lượng của phần mềm tốt hơn và giá thành giảm đi.

Page 5: Bảo mật mã nguồn

3. Làm sao để viết mã nguồn một cách bảo mật?

• Phụ thuộc vào developers để giảm thiểu lỗi(không sử dụng các phương thức như: strcpy,strcat,sprintf, vsprintf)

• Dựa vào mã an toàn được cài đặt sẵn trước khi ứng dụng được thực hiện

• Sử dụng các công cụ hỗ trợ của các tổ chức bảo mật(ví dụ như OWASP)

• …

Page 6: Bảo mật mã nguồn

4. Những lỗi thông dụng thường gặp

• SQL Injection

• Cross-Site Scripting (XSS)

• Buffer OverFlow

• Replay Attack

Page 7: Bảo mật mã nguồn

SQL Injection

Định nghĩa :Là 1 kĩ thuật cho phép lợi dụng:• Lỗ hổng trong kiểm tra dữ liệu nhập

trong các ứng dụng web• Các thông báo lỗi của hệ quản trị cơ sở

dữ liệu Mục đích: Đưa vào và thực thi các câu lệnh

SQL bất hợp pháp

Page 8: Bảo mật mã nguồn

SQL Injection

• Khai thác lỗi này như thế nào?

Page 9: Bảo mật mã nguồn

SQL Injection

string cmdStr = "INSERT INTO Customer(Name, Phone) VALUES('" + txtName.Text + "','" + txtPhone.Text + "')"; conn.Open();SqlCommand cmd = new SqlCommand(cmdStr, conn);cmd.ExecuteNonQuery();

Page 10: Bảo mật mã nguồn

SQL Injection

Page 11: Bảo mật mã nguồn

SQL Injection

string cmdStr = "INSERT INTO Customer(Name, Phone) VALUES('" + txtName.Text + "','" + txtPhone.Text + "')"; 

string cmdStr = "INSERT INTO Customer(Name, Phone) VALUES('','123');delete from order--')";

Page 12: Bảo mật mã nguồn

SQL Injection

Cách khắc phục :

• Kiểm tra dữ liệu đầu vào hợp lệ bằng các tiêu chuẩn phù hợp

• Sử dụng thủ tục store procedure• Dùng chuỗi SQL có tham số (dùng cmd.Parameters.Add)• …

Page 13: Bảo mật mã nguồn

Cross-Site Scripting (XSS)

Định nghĩa : XSS là một kĩ thuật tấn công bằng cách

chèn vào các website động những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng khác. Trong đó, những đoạn mã nguy hiểm đựơc chèn vào hầu hết được viết bằng các Client-Site Script như JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML

Page 14: Bảo mật mã nguồn

Cross-Site Scripting (XSS)

• Khai thác lỗi này như thế nào?

Page 15: Bảo mật mã nguồn

Cross-Site Scripting (XSS)

Cách khắc phục :• Lọc: Luôn luôn lọc các dữ liệu nhập từ

phía người dùng bằng cách lọc các kí tự meta (kí tự đặc biệt) được định nghĩa trong đặc tả của HTML để phát hiện các thẻ script.

• Mã hóa: Mã hóa phía máy chủ là một tiến trình mà tất cả nội dung phát sinh động sẽ đi qua một hàm mã hóa nơi mà các thẻ script sẽ được thay thể bởi mã của nó.

Page 16: Bảo mật mã nguồn

Buffer OverFlow

Định nghĩa :

Một khối lượng dữ liệu được gửi cho ứng dụng vượt quá lượng dữ liệu được cấp phát khiến cho ứng dụng không thực thi được câu lệnh dự định kế tiếp mà thay vào đó phải thực thi một đoạn mã bất kì do hacker đưa vào hệ thống.

Page 17: Bảo mật mã nguồn

Buffer OverFlow

• Khai thác lỗi này như thế nào?

greeting(char *temp1, char *temp2){

char name[400]; strcpy(name, temp2); printf("Hello %s %s\n", temp1, name);

} main(int argc, char *argv[]){

greeting(argv[1], argv[2]); printf("Bye %s %s\n", argv[1], argv[2]);

}

Page 18: Bảo mật mã nguồn

Buffer OverFlow

Shellcode :

Shellcode còn có thể làm được nhiều thứ, từ việc điều chỉnh giờ hệ thống hay download và thực thi một tập tin từ internet cho đến việc gửi 1 email ra ngoài

Mục đích : viết chương trình khai thác lỗi bằng shellcode và chèn vào chương trình bị lỗi

Page 19: Bảo mật mã nguồn

Buffer OverFlow

Cách khắc phục :

• Phụ thuộc vào developers để giảm thiểu lỗi(không sử dụng các phương thức như: strcpy,strcat,sprintf, vsprintf)

• Dựa vào mã an toàn được cài đặt sẵn trước khi ứng dụng được thực hiện

Page 20: Bảo mật mã nguồn

Replay Attack

Định nghĩa : Replay attack là một kiểu tấn công man-in-the-middle, kẻ tấn công sẽ tiến hành lắng nghe trên đường truyền của nạn nhân. Khi nạn nhân tiến hành trao đổi các thông tin quan trọng(ví dụ như passwork) thì kẻ tấn công sẽ chặn các gói tin đó lại. Các gói tin bị bắt không bị kẻ tấn công thay đổi nội dung mà giữ nguyên đợi đến 1 thời gian thích hợp nào đó sẽ gởi gói tin đó đi giả dạng như nó được gởi ra từ máy gốc.

Page 21: Bảo mật mã nguồn

Replay Attack

• Khai thác lỗi này như thế nào?

http://www.youtube.com/watch?v=RVn6vfYGi1E

http://www.security365.vn/

Page 22: Bảo mật mã nguồn

Replay Attack

Cách khắc phục :

• Thiết lập giao thức an toàn trước khi trao đổi các thông tin quan trọng

• Sử dụng khóa phiên trong các phiên làm việ

• Xác thực đối phương trước khi gửi thông tin hay cấp quyền cho một hành động nào đó