Đề cương khóa học
Ngày 1
Bảo mật IT và lập trình an toàn
- Bản chất của bảo mật
- Các thuật ngữ liên quan đến bảo mật IT
- Định nghĩa về rủi ro
- Các khía cạnh khác nhau của bảo mật IT
- Yêu cầu của các lĩnh vực ứng dụng khác nhau
- Bảo mật IT so với lập trình an toàn
-
Từ lỗ hổng đến botnets và tội phạm mạng
- Bản chất của lỗi bảo mật
- Lý do khó khăn
- Từ máy tính bị lây nhiễm đến các cuộc tấn công có mục tiêu
-
Phân loại lỗi bảo mật
- Thuật ngữ Landwehr
- Bảy Vương quốc Hại Hoa
- OWASP Top Ten 2013
- So sánh OWASP Top Ten 2003 – 2013
Giới thiệu về chu trình phát triển phần mềm an toàn của Microsoft® (SDL)
- Chương trình
-
Các ứng dụng đang bị tấn công...
- Sự tiến hóa của tội phạm mạng
- Các cuộc tấn công tập trung vào các ứng dụng
- Hầu hết lỗ hổng nằm trong các ứng dụng nhỏ của ISV
-
Nguồn gốc của SDL của Microsoft...
- Lịch sử bảo mật tại Microsoft...
- Các ứng dụng nào cần tuân theo SDL?
-
Chu trình phát triển phần mềm an toàn của Microsoft (SDL)
- Chu trình phát triển phần mềm an toàn của Microsoft (SDL)
- Yêu cầu trước SDL: Đào tạo bảo mật
- Giai đoạn Một: Yêu cầu
- Giai đoạn Hai: Thiết kế
- Giai đoạn Ba: Thực hiện
- Giai đoạn Bốn: Xác minh
- Giai đoạn Năm: Phát hành – Kế hoạch phản ứng
- Giai đoạn Năm: Phát hành – Đánh giá an toàn cuối cùng
- Giai đoạn Năm: Phát hành – Lưu trữ
- Yêu cầu sau SDL: Phản ứng
- Hướng dẫn quy trình SDL cho các ứng dụng LOB
- Hướng dẫn SDL cho các phương pháp nhanh nhẹn
- Phát triển phần mềm an toàn đòi hỏi cải tiến quy trình
Nguyên tắc thiết kế an toàn
-
Diện tích tấn công
- Giảm diện tích tấn công
- Diện tích tấn công – một ví dụ
- Phân tích diện tích tấn công
- Giảm diện tích tấn công – các ví dụ
-
Bảo mật
- Bảo mật
- Hiểu hành vi và quan ngại của ứng dụng
-
Phòng thủ nhiều lớp
- Nguyên tắc cốt lõi của SDL: Phòng thủ nhiều lớp
- Phòng thủ nhiều lớp – một ví dụ
-
Nguyên tắc quyền tối thiểu
- Quyền tối thiểu – một ví dụ
-
Cài đặt an toàn
- Cài đặt an toàn – các ví dụ
Nguyên tắc thực hiện an toàn
- Chương trình
- Chu trình phát triển phần mềm an toàn của Microsoft (SDL)
-
Cơ bản về tràn bộ đệm
- Các thanh ghi chính của bộ xử lý Intel 80x86
- Bố cục địa chỉ bộ nhớ
- Cơ chế gọi hàm trong C/C++ trên x86
- Các biến số cục bộ và khung ngăn xếp
-
Tràn ngăn xếp
- Tràn bộ đệm trên ngăn xếp
- Bài tập – giới thiệu
- Bài tập BOFIntro
- Bài tập BOFIntro – xác định bố cục ngăn xếp
- Bài tập BOFIntro – một cuộc khai thác đơn giản
-
Xác thực đầu vào
- Các khái niệm xác thực đầu vào
-
Các vấn đề về số nguyên
- Biểu diễn các số nguyên âm
- Tràn số nguyên
- Tràn số học – đoán kết quả!
- Bài tập IntOverflow
- Giá trị của Math.Abs(int.MinValue) là gì?
-
Giải quyết các vấn đề về số nguyên
- Giải quyết các vấn đề về số nguyên
- Tránh tràn số học – phép cộng
- Tránh tràn số học – phép nhân
- Phát hiện tràn với từ khóa checked trong C#
- Bài tập – Sử dụng từ khóa checked trong C#
- Các ngoại lệ được kích hoạt bởi tràn trong C#
-
Trường hợp nghiên cứu – Tràn số nguyên trong .NET
- Một lỗ hổng tràn số nguyên thực tế
- Khai thác lỗ hổng tràn số nguyên
-
Lỗ hổng chuyển hướng đường dẫn
- Giải quyết lỗ hổng chuyển hướng đường dẫn
Ngày 2
Nguyên tắc thực hiện an toàn
-
Tiêm mã
- Các phương pháp tấn công tiêm SQL thông thường
- Tiêm SQL mù và dựa trên thời gian
- Phương pháp bảo vệ chống tiêm SQL
- Tiêm lệnh
-
Xác thực bị hỏng - quản lý mật khẩu
- Bài tập – Yếu điểm của mật khẩu đã được băm
- Quản lý và lưu trữ mật khẩu
- Các thuật toán băm chuyên dụng cho việc lưu trữ mật khẩu
-
Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- Tiêm CSS
- Khai thác: tiêm thông qua các thẻ HTML khác
- Phòng ngừa XSS
-
Thiếu kiểm soát truy cập chức năng
- Lọc tải lên tệp
-
Mật mã thực tế
- Cung cấp tính bảo mật với mật mã đối xứng
- Các thuật toán mã hóa đối xứng
- Mật mã khối – các chế độ hoạt động
- Băm hoặc tiêu đề tin nhắn
- Các thuật toán băm
- Mã xác thực thông điệp (MAC)
- Cung cấp tính toàn vẹn và xác thực với khóa đối xứng
- Cung cấp tính bảo mật với mã hóa công khai
- Quy tắc chung – sở hữu khóa riêng
- Các lỗi phổ biến trong quản lý mật khẩu
- Bài tập – Mật khẩu được mã hóa cứng
- Kết luận
Nguyên tắc xác minh an toàn
- Kiểm thử chức năng so với kiểm thử bảo mật
- Các lỗ hổng bảo mật
- Xếp hạng ưu tiên
- Kiểm thử bảo mật trong chu trình SDLC
- Các bước lập kế hoạch kiểm thử (phân tích rủi ro)
-
Xác định phạm vi và thu thập thông tin
- Chủ thể có liên quan
- Tài sản
- Diện tích tấn công
- Mục tiêu bảo mật cho kiểm thử
-
Xây dựng mô hình đe dọa
- Xây dựng mô hình đe dọa
- Hồ sơ của kẻ tấn công
- Xây dựng mô hình đe dọa dựa trên cây tấn công
- Xây dựng mô hình đe dọa dựa trên các trường hợp sử dụng sai/lạm dụng
- Trường hợp sử dụng sai/lạm dụng – ví dụ đơn giản về cửa hàng trực tuyến
- Tiếp cận mô hình đe dọa dựa trên STRIDE cho từng yếu tố – MS SDL
- Xác định mục tiêu bảo mật
- Vẽ sơ đồ – các ví dụ về các yếu tố DFD
- Sơ đồ dòng dữ liệu – ví dụ
- Liệt kê đe dọa – các yếu tố STRIDE và DFD của MS SDL
- Phân tích rủi ro – phân loại các đe dọa
- Mô hình xếp hạng đe dọa/rủi ro DREAD
-
Các kỹ thuật và công cụ kiểm thử bảo mật
- Các phương pháp kiểm thử tổng quát
- Kỹ thuật cho các bước khác nhau của chu trình SDLC
-
Đánh giá mã nguồn
- Đánh giá mã nguồn cho bảo mật phần mềm
- Phân tích nhiễm
- Các nguyên tắc
-
Phân tích mã nguồn tĩnh
- Phân tích mã nguồn tĩnh
- Bài tập – Sử dụng các công cụ phân tích mã nguồn tĩnh
-
Kiểm thử việc thực hiện
- Xác minh thời gian chạy thủ công
- Kiểm thử bảo mật thủ công so với tự động
- Kiểm thử thâm nhập
- Kiểm thử chịu tải
-
Mô phỏng
- Kiểm thử bảo mật tự động - mô phỏng
- Thách thức của mô phỏng
-
Công cụ quét lỗ hổng web
- Bài tập – Sử dụng công cụ quét lỗ hổng
-
Kiểm tra và củng cố môi trường
- Hệ thống đánh giá rủi ro chung – CVSS
- Công cụ quét lỗ hổng
- Cơ sở dữ liệu công cộng
-
Trường hợp nghiên cứu – Bỏ qua xác thực dạng
- Lỗ hổng kết thúc bằng byte NULL
- Lỗ hổng bỏ qua xác thực dạng trong mã
- Khai thác lỗ hổng bỏ qua xác thực dạng
Nguồn kiến thức
- Nguồn lập trình an toàn – bộ công cụ khởi đầu
- Cơ sở dữ liệu lỗ hổng
- Hướng dẫn lập trình an toàn .NET tại MSDN
- Bảng gian lận lập trình an toàn .NET
- Sách đề xuất – .NET và ASP.NET
Đánh giá (5)
Nhiều ví dụ cho mỗi mô-đun và kiến thức tuyệt vời của giảng viên.
Sebastian - BRD
Khóa học - Secure Developer Java (Inc OWASP)
Dịch thuật bằng máy
Module3 Các cuộc tấn công và khai thác ứng dụng, XSS, SQL injection Module4 Các cuộc tấn công và khai thác máy chủ, DOS, BOF
Tshifhiwa - Vodacom
Khóa học - How to Write Secure Code
Dịch thuật bằng máy
Thông tin chung về khóa học
Paulo Gouveia - EID
Khóa học - C/C++ Secure Coding
Dịch thuật bằng máy
Kiến thức của giảng viên về chủ đề rất tốt, và cách bố trí các buổi học để khán giả có thể theo dõi các ví dụ minh họa đã giúp củng cố kiến thức đó, so với việc chỉ ngồi và nghe.
Jack Allan - RSM UK Management Ltd.
Khóa học - Secure Developer .NET (Inc OWASP)
Dịch thuật bằng máy
Không có gì là hoàn hảo cả.
Zola Madolo - Vodacom
Khóa học - Android Security
Dịch thuật bằng máy