Liên hệ với chúng tôi

Đề 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 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ừ các lỗ hổng đến mạng botnet và tội phạm mạng
    • Bản chất của các lỗi bảo mật
    • Nguyên nhân gây khó khăn
    • Từ máy tính bị nhiễm đến các cuộc tấn công có mục tiêu
  • Phân loại các lỗi bảo mật
    • Hệ thống phân loại của Landwehr
    • Bảy Vương quốc Hủy hoại
    • OWASP Top Ten 2013
    • So sánh OWASP Top Ten 2003 – 2013

Giới thiệu về Chu kỳ Phát triển Bảo mật của Microsoft® (SDL)

  • Nội dung chương trình
  • Các ứng dụng dưới sự 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 ứng dụng
    • Hầu hết các lỗ hổng nằm trong các ứng dụng ISV nhỏ hơn
  • Nguồn gốc của SDL Microsoft...
    • Bảng thời gian bảo mật tại Microsoft...
    • Ứng dụng nào bắt buộc phải tuân theo SDL?
  • Chu kỳ Phát triển Bảo mật của Microsoft (SDL)
    • Chu kỳ Phát triển Bảo mật của Microsoft (SDL)
    • Yêu cầu tiền 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: Triển khai
    • 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á Bảo mật Cuối cùng
    • Giai đoạn năm: Phát hành – Lưu trữ
    • Yêu cầu hậu SDL: Phản ứng
    • Hướng dẫn Quy trình SDL cho ứng dụng LOB
    • Hướng dẫn SDL cho phương pháp Agile
    • 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

  • Bề mặt tấn công
    • Giảm thiểu bề mặt tấn công
    • Bề mặt tấn công – một ví dụ
    • Phân tích bề mặt tấn công
    • Giảm thiểu bề mặt tấn công – các ví dụ
  • Quyền riêng tư
    • Quyền riêng tư
    • Hiểu các hành vi và mối quan tâm 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 – ví dụ
  • Nguyên tắc đặc quyền tối thiểu
    • Đặc quyền tối thiểu – ví dụ
  • Cài đặt mặc định an toàn
    • Cài đặt mặc định an toàn – các ví dụ

Nguyên tắc triển khai an toàn

  • Nội dung chương trình
  • Chu kỳ Phát triển Bảo mật của Microsoft (SDL)
  • Cơ bản về tràn bộ đệm
    • Bộ xử lý Intel 80x86 – các thanh ghi chính
    • Bố cục địa chỉ bộ nhớ
    • Cơ chế gọi hàm trong C/C++ trên x86
    • Các biến 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 minh đầu vào
    • Các khái niệm về xác minh đầu vào
    • Các vấn đề về số nguyên
      • Biểu diễn 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ảm thiểu các vấn đề về số nguyên
      • Giảm thiểu 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 do tràn trong C#
    • Nghiên cứu tình huống – Tràn số nguyên trong .NET
      • Lỗ hổng tràn số nguyên trong thế giới thực
      • Khai thác lỗ hổng tràn số nguyên
    • Lỗ hổng vượt quyền đường dẫn (Path traversal)
      • Giảm thiểu lỗ hổng vượt quyền đường dẫn

Ngày 2

Nguyên tắc triển khai an toàn

  • Lỗi tiêm (Injection)
    • Các phương pháp tấn công tiêm SQL điển hình
    • Tiêm SQL mù và dựa trên thời gian
    • Các phương pháp bảo vệ chống tiêm SQL
    • Lỗi tiêm lệnh (Command injection)
  • Xác thực bị hỏng - Quản lý mật khẩu
    • Bài tập – Điểm yếu của mật khẩu băm (hashed passwords)
    • Quản lý và lưu trữ mật khẩu
    • Các thuật toán băm chuyên dụng cho lưu trữ mật khẩu
  • Lỗi script xuyên trang (Cross-Site Scripting - XSS)
    • Lỗi script xuyên trang (XSS)
    • Lỗi tiêm CSS
    • Khai thác: tiêm thông qua các thẻ HTML khác
    • Phòng chống XSS
  • Thiếu kiểm soát truy cập ở cấp hàm
    • Lọc các tệp được tải lên
  • Mật mã học thực tiễn
    • Cung cấp tính bí mật bằng mật mã đối xứng
    • Các thuật toán mã hóa đối xứng
    • Mã khối – các chế độ hoạt động
    • Băm thông điệp (Hash or message digest)
    • 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à tính xác thực bằng khóa đối xứng
    • Cung cấp tính bí mật bằng mã hóa khóa công khai
    • Quy tắc kinh nghiệm – sở hữu khóa bí mật
    • Những sai lầm điển hình trong quản lý mật khẩu
    • Bài tập – Mật khẩu cứng (Hard coded passwords)
    • 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
  • Ưu tiên hóa
  • Kiểm thử bảo mật trong SDLC
  • Các bước lập kế hoạch kiểm thử (phân tích rủi ro)
  • Phạm vi và thu thập thông tin
    • Các bên liên quan
    • Tài sản
    • Bề mặt tấn công
    • Mục tiêu bảo mật cho kiểm thử
  • Mô hình hóa mối đe dọa
    • Mô hình hóa mối đe dọa
    • Hồ sơ kẻ tấn công
    • Mô hình hóa mối đe dọa dựa trên cây tấn công
    • Mô hình hóa mối đe dọa dựa trên các trường hợp sử dụng/sai dụng
    • Các trường hợp sử dụng/sai dụng – ví dụ cửa hàng Web đơn giản
    • Phương pháp tiếp cận STRIDE theo phần tử cho mô hình hóa mối đe dọa – MS SDL
    • Xác định các mục tiêu bảo mật
    • Sơ đồ hóa – các ví dụ về yếu tố DFD
    • Sơ đồ luồng dữ liệu – ví dụ
    • Liệt kê mối đe dọa – STRIDE và các yếu tố DFD của MS SDL
    • Phân tích rủi ro – phân loại các mối đe dọa
    • Mô hình xếp hạng mối đe dọa/rủi ro DREAD
  • Kỹ thuật và công cụ kiểm thử bảo mật
    • Các phương pháp tiếp cận kiểm thử chung
    • Kỹ thuật cho các bước khác nhau của SDLC
  • Xem xét mã nguồn (Code review)
    • Xem xét mã nguồn cho bảo mật phần mềm
    • Phân tích nhiễm (Taint analysis)
    • Heuristics
  • Phân tích mã tĩnh
    • Phân tích mã tĩnh
    • Bài tập – Sử dụng công cụ phân tích mã tĩnh
  • Kiểm thử triển khai
    • 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ử xâm nhập (Penetration testing)
    • Kiểm thử tải (Stress tests)
  • Fuzzing
    • Kiểm thử bảo mật tự động - fuzzing
    • Các thách thức của fuzzing
  • Trình quét lỗ hổng Web
    • Bài tập – Sử dụng trình quét lỗ hổng
  • Kiểm tra và gia cố môi trường
    • Hệ thống chấm điểm lỗ hổng phổ biến – CVSS
    • Trình quét lỗ hổng
    • Cơ sở dữ liệu công cộng
  • Nghiên cứu tình huống – Vượt qua Xác thực Biểu mẫu (Forms Authentication Bypass)
    • Lỗ hổng kết thúc bằng byte NULL
    • Lỗ hổng Vượt qua Xác thực Biểu mẫu trong mã nguồn
    • Khai thác lỗ hổng Vượt qua Xác thực Biểu mẫu

Nguồn kiến thức

  • Các nguồn về 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 trên MSDN
  • Các bảng tra nhanh lập trình an toàn .NET
  • Sách được đề xuất – .NET và ASP.NET
 14 Giờ

Số người tham gia


Giá cho mỗi học viên

Đánh giá (3)

Các khóa học sắp tới

Các danh mục liên quan