Bài 1: Tổng quan


1. Tổng Quan Môn Học

Mã môn: NT521 Tên môn: Lập trình an toàn và khai thác lỗ hổng phần mềm (Secure Programming and Exploiting Vulnerabilities) Số tín chỉ: 4 tín chỉ Thời lượng: 15 buổi × 3 tiết/buổi


2. Tại Sao Học Môn Này?

Phần mềm ngày càng hiện diện ở khắp nơi — từ ứng dụng di động, hệ thống ngân hàng, cho đến hệ thống nhúng trong ô tô. Bất kỳ phần mềm nào cũng có thể chứa lỗ hổng bảo mật nếu không được thiết kế và lập trình cẩn thận.


3. Các Vị Trí Nghề Nghiệp Liên Quan

Kiến thức trong môn học này mở ra các hướng nghề nghiệp sau:

Vị tríMô tả
Software Security EngineerXây dựng phần mềm với cơ chế bảo mật tích hợp
Vulnerability AnalystPhân tích và đánh giá lỗ hổng bảo mật
Penetration TesterKiểm thử xâm nhập hệ thống
Malware AnalystPhân tích mã độc
Secure Software DeveloperPhát triển phần mềm theo tiêu chuẩn bảo mật
Security AuditorĐánh giá bảo mật tổng thể hệ thống
Security Tools DeveloperPhát triển công cụ bảo mật
Security ConsultantTư vấn bảo mật cho tổ chức
Academic ResearcherNghiên cứu học thuật về an toàn phần mềm

4. Kiến Thức Nền Tảng

4.1 CWE – Common Weakness Enumeration

Phân biệt CWE và CVE:

  • CWE → mô tả loại điểm yếu (ví dụ: CWE-79: Cross-site Scripting, CWE-89: SQL Injection)
  • CVE → mô tả một sự cố cụ thể trong một phần mềm cụ thể (ví dụ: CVE-2023-34362)

CWE Top 25 là danh sách 25 điểm yếu phần mềm nguy hiểm nhất, được cập nhật hàng năm bởi MITRE. Đây là những điểm yếu dễ bị tìm thấy, dễ khai thác và có thể dẫn đến kẻ tấn công kiểm soát hoàn toàn hệ thống, đánh cắp dữ liệu, hoặc làm gián đoạn dịch vụ.


4.2 Lỗ Hổng (Vulnerability) Là Gì?

Phân biệt các khái niệm:

Weakness (điểm yếu) → có thể dẫn đến → Vulnerability (lỗ hổng) → bị khai thác → Exploit (tấn công)
flowchart LR A[Weakness\nĐiểm yếu trong code] --> B[Vulnerability\nLỗ hổng có thể khai thác] B --> C[Exploit\nMã khai thác lỗ hổng] C --> D[Impact\nThiệt hại thực tế]

4.3 CVE – Common Vulnerabilities and Exposures

Cấu trúc CVE ID:

CVE - [NĂM] - [SỐ THỨ TỰ]
CVE - 2023  - 34362

Một số CVE nổi bật năm 2023:

CVE IDPhần mềmLoại tấn côngCVSS
CVE-2023-34362MOVEit TransferRCE – Khai thác bởi Cl0p ransomware9.8
CVE-2023-4966Citrix (Citrix Bleed)Information Disclosure9.4
CVE-2023-20198Cisco IOS XEPrivilege Escalation – 40,000 thiết bị bị xâm phạm10.0
CVE-2023-22518Atlassian ConfluencePrivilege Escalation – deploy Cerber ransomware9.8

4.4 Thống Kê CVE Theo Năm

Xu hướng tăng trưởng CVE:

2012:  5,297
2013:  5,191
2014:  7,939
2015:  6,504
2016:  6,454
2017: 14,714
2018: 16,557
2019: 17,344
2020: 18,325
2021: 20,171
2022: 25,226
2023: 29,065  ← Kỷ lục mới

4.5 An Toàn Phần Mềm Là Gì?

Ba trụ cột của an toàn phần mềm:

flowchart TD A[An toàn phần mềm] --> B[Thiết kế an toàn\nSecure Design] A --> C[Lập trình an toàn\nSecure Coding] A --> D[Kiểm thử an toàn\nSecurity Testing]

An toàn phần mềm là một phần của khả năng tin cậy (trustworthiness):

  • Một hệ thống trustworthy không chỉ hoạt động đúng trong điều kiện bình thường mà còn phải chống chịu được tấn côngduy trì chức năng trong điều kiện thù địch.

5. Vòng Đời Phát Triển Phần Mềm (SDLC)

flowchart LR A[1. Requirements\n& Analysis] --> B[2. Design] B --> C[3. Implementation\nCoding] C --> D[4. Testing] D --> E[5. Deployment] E --> F[6. Maintenance] F --> A

Ý nghĩa từng giai đoạn:

Giai đoạnHoạt động chính
Requirements & AnalysisThu thập yêu cầu, phân tích nghiệp vụ
DesignThiết kế kiến trúc, cơ sở dữ liệu, giao diện
ImplementationViết code theo thiết kế
TestingKiểm thử chức năng, hiệu năng, bảo mật
DeploymentTriển khai lên môi trường sản xuất
MaintenanceVá lỗi, cập nhật, mở rộng tính năng

6. Kiểm Thử Bảo Mật Phần Mềm

6.1 Các Nguyên Tắc Bảo Mật Cần Kiểm Thử

Một hệ thống bảo mật phải đảm bảo 6 nguyên tắc (CIA + AAA):

Nguyên tắcGiải thích
Confidentiality (Bảo mật)Chỉ người có quyền mới truy cập được thông tin
Integrity (Toàn vẹn)Dữ liệu không bị sửa đổi trái phép
Availability (Sẵn sàng)Hệ thống luôn hoạt động khi cần
Authentication (Xác thực)Xác minh danh tính người dùng
Authorization (Phân quyền)Kiểm soát quyền truy cập
Non-repudiation (Chống chối bỏ)Không thể phủ nhận hành động đã thực hiện

6.2 Các Dạng Kiểm Thử Bảo Mật

mindmap root((Security Testing)) Penetration Testing Vulnerability Scanning Security Auditing Risk Assessment Ethical Hacking Security Scanning Posture Assessment
Phương phápMô tả
Penetration TestingMô phỏng tấn công thực tế để tìm điểm yếu
Vulnerability ScanningDùng công cụ tự động quét lỗ hổng đã biết
Security AuditingĐánh giá hệ thống so với tiêu chuẩn/chính sách
Risk AssessmentĐánh giá và định lượng rủi ro bảo mật
Ethical HackingKiểm thử xâm nhập được ủy quyền hợp pháp
Security ScanningQuét tổng thể cả hạ tầng và ứng dụng
Posture AssessmentĐánh giá tổng thể tư thế bảo mật của tổ chức

7. SSDLC – Secure Software Development Life Cycle

7.1 Nguyên Tắc “Shift Left” (Dịch Trái)

Tại sao Shift Left quan trọng?

  • Chi phí sửa lỗi bảo mật tăng theo cấp số nhân theo thời gian phát hiện.
  • Lỗi tìm thấy ở giai đoạn Requirements có thể sửa trong vài giờ.
  • Lỗi tìm thấy ở giai đoạn Production có thể tốn hàng tuần và gây thiệt hại lớn.
Chi phí sửa lỗi theo giai đoạn (tương đối):

Requirements :  1x
Design        :  5x
Implementation: 10x
Testing       : 20x
Production    : 100x+

So sánh SDLC truyền thống vs SSDLC với Shift Left:

Giai đoạnSDLC truyền thốngSSDLC + Shift Left
RequirementsChỉ phân tích chức năng+ Phân tích yêu cầu bảo mật, Threat Modeling
DesignThiết kế kiến trúc+ Secure Design, Security Architecture Review
ImplementationViết code+ Secure Coding Guidelines, SAST
TestingKiểm thử chức năng+ DAST, Penetration Testing, Fuzzing
DeploymentTriển khai+ Security configuration review
MaintenanceVá lỗi thông thường+ Patch management, Vulnerability monitoring

7.2 Chu Kỳ SSDLC Lặp Đi Lặp Lại

flowchart LR A[Define Scope] --> B[Information Gathering] B --> C[Planning & Analysis] C --> D[Security Testing\n& Penetration Testing] D --> E[Vulnerability Detection] E --> F[Report & Analysis] F --> G[Remediation Testing] G --> A

8. Các Khái Niệm Quan Trọng Trong An Toàn Phần Mềm

8.1 SAST và DAST

SASTDAST
Tên đầy đủStatic Application Security TestingDynamic Application Security Testing
Phương phápPhân tích source code mà không chạy chương trìnhKiểm thử ứng dụng trong khi đang chạy
Thời điểmGiai đoạn phát triển (Shift Left)Giai đoạn testing/staging
Ưu điểmPhát hiện sớm, cover toàn bộ codePhát hiện lỗi runtime, logic
Nhược điểmNhiều false positiveCần app chạy được, coverage thấp hơn
Ví dụ công cụSonarQube, Checkmarx, SemgrepOWASP ZAP, Burp Suite

8.2 Fuzzing

# Ví dụ khái niệm fuzzing đơn giản
import random
import string

def generate_fuzz_input(length=100):
    # Tạo chuỗi ngẫu nhiên
    return ''.join(random.choices(string.printable, k=length))

for i in range(1000):
    test_input = generate_fuzz_input()
    try:
        target_function(test_input)  # Nếu crash → tìm thấy bug!
    except Exception as e:
        print(f"Bug found with input: {test_input[:20]}...")

8.3 Symbolic Execution

8.4 Threat Modeling

Phương pháp phổ biến: STRIDE

Loại đe dọaÝ nghĩaVi phạm nguyên tắc
SpoofingGiả mạo danh tínhAuthentication
TamperingSửa đổi dữ liệuIntegrity
RepudiationChối bỏ hành độngNon-repudiation
Information DisclosureLộ thông tinConfidentiality
Denial of ServiceTừ chối dịch vụAvailability
Elevation of PrivilegeLeo thang đặc quyềnAuthorization

8.5 DevSecOps

flowchart LR A[Code] --> B[Build] B --> C[Test\nSAST/DAST] C --> D[Release] D --> E[Deploy] E --> F[Operate\nMonitor] F --> G[Security\nFeedback] G --> A

8.6 Zero-day và PoC

Khái niệmGiải thích
Zero-dayLỗ hổng chưa được nhà sản xuất biết đến hoặc chưa có bản vá, kẻ tấn công có lợi thế tuyệt đối
PoC (Proof of Concept)Mã/kỹ thuật chứng minh rằng một lỗ hổng có thể bị khai thác trong thực tế

9. Nội Dung Chương Trình Môn Học

Phần I – Thiết Kế và Phát Triển Phần Mềm An Toàn

BuổiNội dung
01Giới thiệu môn học
02SDLC – Tổng quan quy trình phát triển phần mềm
03SSDLC – Threat Model, Security Requirements, Secure Design, Common Flaws
04DevSecOps
05Program Analysis: Static Code Analysis, Coverage Testing
06Kỹ thuật Fuzzing trong kiểm thử phần mềm

Phần II – Khai Thác Lỗ Hổng Phần Mềm

BuổiNội dung
07Portable Execution, Compiler, Shellcode, Code Injection, Overflow, Format String
08Arc-injection Attack, Off-by-one
09ASLR, DEP, ROP Chaining Attack
10Heap Exploitation
11Future Direction of Secure Software & Automation Exploitation
12–14Báo cáo đồ án môn học
15Ôn tập

10. Đánh Giá Môn Học

Điểm Quá Trình (25%):
├── Bài tập thiết kế, phân tích + CTF: 40%
└── Đồ án môn học: 60%

Điểm Thực Hành (25%):
├── 06 bài Lab
└── Bài thực hành CTF

Điểm Cuối Kỳ (50%):
├── Câu hỏi về Đồ án: 30%
└── Thi lý thuyết (trắc nghiệm + tự luận): 70%


Câu Hỏi Trắc Nghiệm

Câu 1. CWE là viết tắt của?

  • A. Common Weakness Enumeration
  • B. Cyber Weakness Evaluation
  • C. Common Web Exploitation
  • D. Critical Weakness Enumeration

Câu 2. CVE là viết tắt của?

  • A. Common Vulnerability Exposure
  • B. Common Vulnerabilities and Exposures
  • C. Cyber Vulnerability Enumeration
  • D. Critical Vulnerability Exploitation

Câu 3. Sự khác biệt chính giữa CWE và CVE là gì?

  • A. CWE dành cho phần cứng, CVE dành cho phần mềm
  • B. CWE mô tả loại điểm yếu tổng quát, CVE mô tả lỗ hổng cụ thể trong một phần mềm cụ thể
  • C. CWE có điểm CVSS, CVE thì không
  • D. CWE do NIST quản lý, CVE do OWASP quản lý

Câu 4. Một “vulnerability” (lỗ hổng) được định nghĩa là?

  • A. Bất kỳ lỗi lập trình nào gây crash chương trình
  • B. Một khiếm khuyết hoặc điểm yếu có thể bị khai thác để vi phạm chính sách bảo mật
  • C. Mã độc được chèn vào hệ thống
  • D. Phần mềm không có tính năng mã hóa

Câu 5. SDLC viết tắt của?

  • A. Secure Development Life Cycle
  • B. Software Design and Launch Cycle
  • C. Software Development Life Cycle
  • D. System Development and Lifecycle Control

Câu 6. SSDLC khác SDLC truyền thống ở điểm nào?

  • A. SSDLC bỏ qua giai đoạn Testing
  • B. SSDLC tích hợp các hoạt động bảo mật vào từng giai đoạn của vòng đời phát triển
  • C. SSDLC chỉ áp dụng cho phần mềm nhúng
  • D. SSDLC không có giai đoạn Deployment

Câu 7. “Shift Left” trong bảo mật phần mềm có nghĩa là?

  • A. Chuyển đội bảo mật sang phòng ban khác
  • B. Đưa các hoạt động bảo mật và kiểm thử càng sớm càng tốt trong vòng đời phát triển
  • C. Ưu tiên bảo mật phần cứng hơn phần mềm
  • D. Sử dụng công cụ kiểm thử từ trái sang phải

Câu 8. Chi phí sửa lỗi bảo mật tăng như thế nào theo thời gian phát hiện?

  • A. Tuyến tính (linear)
  • B. Giảm dần
  • C. Theo cấp số nhân (exponential)
  • D. Không thay đổi

Câu 9. SAST là gì?

  • A. Security Assessment and Scanning Tool
  • B. Static Application Security Testing
  • C. Systematic Application Security Test
  • D. Software Analysis and Security Testing

Câu 10. DAST là gì?

  • A. Dynamic Application Security Testing
  • B. Data Analysis Security Tool
  • C. Database Application Security Testing
  • D. Distributed Application Security Testing

Câu 11. Điểm khác biệt chính giữa SAST và DAST là?

  • A. SAST dùng cho web app, DAST dùng cho mobile app
  • B. SAST phân tích code tĩnh (không chạy), DAST kiểm thử ứng dụng đang chạy
  • C. SAST nhanh hơn DAST về mọi mặt
  • D. DAST chỉ phát hiện được SQL Injection

Câu 12. Fuzzing là kỹ thuật kiểm thử bằng cách?

  • A. Phân tích source code thủ công
  • B. Cung cấp dữ liệu đầu vào ngẫu nhiên/không hợp lệ để tìm crash và lỗi bảo mật
  • C. Mô phỏng tấn công mạng
  • D. Kiểm tra chính sách bảo mật của tổ chức

Câu 13. DevSecOps là sự kết hợp của?

  • A. Development + Security + Operations
  • B. Design + Security + Operations
  • C. Development + Security + Optimization
  • D. Data + Security + Operations

Câu 14. Trong 6 nguyên tắc bảo mật (CIA + AAA), “Non-repudiation” có nghĩa là?

  • A. Mã hóa toàn bộ dữ liệu
  • B. Người dùng không thể phủ nhận hành động đã thực hiện
  • C. Hệ thống luôn sẵn sàng phục vụ
  • D. Chỉ người có quyền mới truy cập được

Câu 15. “Confidentiality” (Bảo mật) trong an toàn thông tin đề cập đến?

  • A. Đảm bảo hệ thống luôn hoạt động
  • B. Đảm bảo dữ liệu không bị sửa đổi
  • C. Đảm bảo chỉ người có thẩm quyền mới truy cập được thông tin
  • D. Xác minh danh tính người dùng

Câu 16. “Integrity” (Toàn vẹn) trong an toàn thông tin đề cập đến?

  • A. Đảm bảo hệ thống không bị tắt
  • B. Đảm bảo dữ liệu không bị sửa đổi hoặc phá hủy trái phép
  • C. Đảm bảo chỉ admin mới đăng nhập được
  • D. Mã hóa đường truyền

Câu 17. “Availability” (Sẵn sàng) trong an toàn thông tin đề cập đến?

  • A. Phân quyền người dùng hợp lý
  • B. Đảm bảo hệ thống và dữ liệu luôn sẵn sàng cho người dùng hợp lệ
  • C. Mã hóa dữ liệu nhạy cảm
  • D. Ghi lại nhật ký hành động người dùng

Câu 18. “Zero-day vulnerability” là?

  • A. Lỗ hổng được phát hiện vào ngày đầu tiên phần mềm ra mắt
  • B. Lỗ hổng chưa được nhà sản xuất biết đến hoặc chưa có bản vá
  • C. Lỗ hổng không thể khai thác
  • D. Lỗ hổng được vá trong 0 ngày

Câu 19. “PoC” trong bảo mật phần mềm là viết tắt của?

  • A. Point of Contact
  • B. Proof of Concept
  • C. Prevention of Compromise
  • D. Protocol of Cybersecurity

Câu 20. CVSS là gì và khoảng điểm nào được coi là Critical?

  • A. Common Vulnerability Scoring System; Critical từ 7.0 – 8.9
  • B. Common Vulnerability Scoring System; Critical từ 9.0 – 10.0
  • C. Cyber Vulnerability Security Score; Critical từ 8.0 – 10.0
  • D. Common Vulnerability Scoring System; Critical từ 6.0 – 10.0

Câu 21. Relay Attack trên hệ thống Keyless Entry của ô tô hoạt động như thế nào?

  • A. Kẻ tấn công crack mã PIN của chìa khóa
  • B. Kẻ tấn công chặn và phát lại tín hiệu vô tuyến giữa chìa khóa và xe
  • C. Kẻ tấn công cài phần mềm độc hại vào ECU
  • D. Kẻ tấn công sử dụng brute force trên mã hóa AES

Câu 22. Trong năm 2023, có bao nhiêu CVE được công bố?

  • A. Hơn 18,000
  • B. Hơn 25,000
  • C. Hơn 29,000
  • D. Hơn 35,000

Câu 23. Phương pháp Threat Modeling nào sử dụng mô hình STRIDE?

  • A. Phân tích rủi ro định lượng
  • B. Xác định, đánh giá và ưu tiên các mối đe dọa theo 6 loại: Spoofing, Tampering, Repudiation, Information Disclosure, DoS, Elevation of Privilege
  • C. Kiểm thử xâm nhập tự động
  • D. Phân tích luồng dữ liệu

Câu 24. “T” trong STRIDE đại diện cho mối đe dọa nào?

  • A. Tracking (Theo dõi)
  • B. Tampering (Giả mạo dữ liệu)
  • C. Theft (Trộm cắp)
  • D. Termination (Chấm dứt dịch vụ)

Câu 25. Penetration Testing khác Vulnerability Scanning như thế nào?

  • A. Pentest dùng công cụ tự động, Vuln Scanning là thủ công
  • B. Pentest mô phỏng tấn công thực tế và tìm cách khai thác, Vuln Scanning chỉ quét và liệt kê lỗ hổng đã biết
  • C. Pentest chỉ kiểm tra mạng, Vuln Scanning chỉ kiểm tra ứng dụng
  • D. Pentest không cần ủy quyền, Vuln Scanning cần ủy quyền

Câu 26. Symbolic Execution là kỹ thuật phân tích chương trình bằng cách?

  • A. Chạy chương trình với nhiều đầu vào ngẫu nhiên
  • B. Thực thi với giá trị ký hiệu để khám phá tất cả đường thực thi có thể
  • C. Dịch ngược binary về source code
  • D. Theo dõi memory allocation trong runtime

Câu 27. Môn NT521 được phân bổ điểm như thế nào cho phần thực hành?

  • A. 10% thực hành
  • B. 25% thực hành (06 bài Lab + CTF)
  • C. 30% thực hành
  • D. 50% thực hành

Câu 28. CTF trong môn học này là viết tắt của?

  • A. Capture The Flag — dạng thi đấu bảo mật
  • B. Code Testing Framework
  • C. Cyber Threat Framework
  • D. Critical Test Function

Câu 29. Trong SDLC, giai đoạn nào diễn ra sau Implementation?

  • A. Design
  • B. Requirements
  • C. Testing
  • D. Deployment

Câu 30. Khái niệm “Ethical Hacking” có nghĩa là?

  • A. Hack vì mục đích tài chính
  • B. Kiểm thử xâm nhập được ủy quyền hợp pháp bởi chủ sở hữu hệ thống
  • C. Phát triển phần mềm theo tiêu chuẩn đạo đức
  • D. Chỉ hack hệ thống của chính mình

Câu 31. “Buffer Overflow” thuộc loại lỗ hổng nào trong CWE?

  • A. Lỗi xác thực đầu vào
  • B. Lỗi tràn bộ đệm — ghi dữ liệu vượt quá giới hạn của buffer được cấp phát
  • C. Lỗi SQL Injection
  • D. Lỗi cấu hình sai

Câu 32. Buổi học nào trong NT521 sẽ đề cập đến kỹ thuật ROP Chaining?

  • A. Buổi 07
  • B. Buổi 08
  • C. Buổi 09
  • D. Buổi 10

Câu 33. ASLR là gì?

  • A. Advanced Secure Logging Requirement
  • B. Address Space Layout Randomization — cơ chế ngẫu nhiên hóa địa chỉ vùng nhớ
  • C. Application Security Layer Review
  • D. Automated Security Level Rating

Câu 34. DEP trong bảo mật phần mềm là viết tắt của?

  • A. Data Encryption Protocol
  • B. Data Execution Prevention
  • C. Dynamic Exploit Prevention
  • D. Default Execution Policy

Câu 35. ROP trong “ROP Chaining Attack” là viết tắt của?

  • A. Remote Operation Protocol
  • B. Return Oriented Programming
  • C. Runtime Object Poisoning
  • D. Register Override Procedure

Câu 36. Format String vulnerability xảy ra khi nào?

  • A. Khi chương trình sử dụng định dạng file sai
  • B. Khi đầu vào người dùng được truyền trực tiếp làm format string trong hàm như printf() mà không có kiểm soát
  • C. Khi chuỗi quá dài vượt quá giới hạn buffer
  • D. Khi file cấu hình có định dạng sai

Câu 37. “Shellcode” trong khai thác lỗ hổng là?

  • A. Script shell của hệ điều hành
  • B. Đoạn mã máy nhỏ được inject vào bộ nhớ để thực thi sau khi khai thác thành công
  • C. Mã nguồn của chương trình bị tấn công
  • D. Script cấu hình firewall

Câu 38. Heap Exploitation khác với Stack-based Buffer Overflow như thế nào?

  • A. Heap overflow không nguy hiểm bằng stack overflow
  • B. Heap exploitation tấn công vùng nhớ heap (cấp phát động) thay vì stack (biến cục bộ, return address)
  • C. Heap exploitation chỉ xảy ra trên Linux
  • D. Heap exploitation không thể kiểm soát luồng thực thi

Câu 39. “Off-by-one” là dạng lỗi gì?

  • A. Lỗi tính sai giờ múi giờ
  • B. Lỗi vòng lặp viết nhiều hơn (hoặc ít hơn) một byte/phần tử so với giới hạn, có thể gây tràn bộ đệm nhỏ
  • C. Lỗi sai một bit trong mã hóa
  • D. Lỗi phiên bản không tương thích

Câu 40. Trong cấu trúc đánh giá môn NT521, điểm cuối kỳ chiếm bao nhiêu phần trăm?

  • A. 25%
  • B. 40%
  • C. 50%
  • D. 60%

Câu 41. Infotainment system của ô tô có thể bị kẻ tấn công khai thác để làm gì ngoài việc kiểm soát chính hệ thống giải trí?

  • A. Chỉ đánh cắp dữ liệu âm nhạc
  • B. Pivot sang các hệ thống quan trọng như phanh hoặc lái do thiếu phân đoạn mạng
  • C. Tăng tốc độ phát WiFi
  • D. Thay đổi cài đặt điều hòa không khí

Câu 42. “Code Injection” là dạng tấn công gì?

  • A. Kẻ tấn công inject phần cứng độc hại vào bo mạch
  • B. Kẻ tấn công chèn và thực thi mã độc hại trong ngữ cảnh của ứng dụng mục tiêu
  • C. Kẻ tấn công sửa đổi file cấu hình
  • D. Kẻ tấn công chặn kết nối mạng

Câu 43. “Arc-injection Attack” (còn gọi là Return-to-libc) hoạt động bằng cách nào?

  • A. Inject shellcode vào stack rồi thực thi
  • B. Ghi đè return address để nhảy đến hàm hệ thống có sẵn (như system()) thay vì code của kẻ tấn công
  • C. Tấn công vào heap metadata
  • D. Exploit race condition trong kernel

Câu 44. Trong SSDLC, “Threat Model” được thực hiện ở giai đoạn nào?

  • A. Sau khi viết code xong
  • B. Trong giai đoạn Testing
  • C. Ngay từ giai đoạn Thiết kế (Design) / Phân tích yêu cầu (Requirements)
  • D. Trong giai đoạn Deployment

Câu 45. Trong bảo mật phần mềm, “Secure Design” bao gồm nguyên tắc nào sau đây?

  • A. Viết code nhanh nhất có thể
  • B. Principle of Least Privilege — cấp quyền tối thiểu cần thiết
  • C. Không cần kiểm tra đầu vào nếu đã có firewall
  • D. Tắt tất cả logging để tăng hiệu năng

Câu 46. “Security Posture Assessment” khác với Penetration Testing ở chỗ?

  • A. Không có sự khác biệt
  • B. Posture Assessment đánh giá tổng thể tư thế bảo mật của cả tổ chức (con người, quy trình, công nghệ), không chỉ khai thác kỹ thuật
  • C. Posture Assessment chỉ kiểm tra phần cứng
  • D. Pentest toàn diện hơn Posture Assessment

Câu 47. Trong thống kê CVE 10 năm, năm nào có số lượng CVE tăng đột biến đầu tiên vượt 14,000?

  • A. 2015
  • B. 2016
  • C. 2017
  • D. 2018

Câu 48. Môn NT521 yêu cầu nhóm có bao nhiêu thành viên?

  • A. 2 thành viên
  • B. 3 thành viên
  • C. 4 thành viên
  • D. Tùy chọn, 2–5 thành viên

Câu 49. Hậu quả nếu nhóm sao chép bài của nhóm khác trong NT521 là gì?

  • A. Trừ 50% điểm
  • B. Cảnh cáo lần đầu
  • C. 0 điểm cho bài đó
  • D. Đình chỉ thi

Câu 50. Số buổi vắng tối đa được phép trong môn NT521 là bao nhiêu?

  • A. 2 buổi
  • B. 3 buổi
  • C. 4 buổi
  • D. 5 buổi

Câu 51. Theo CVE-2023-20198, thiết bị nào bị ảnh hưởng và có bao nhiêu thiết bị bị xâm phạm?

  • A. Citrix — 10,000 thiết bị
  • B. Cisco IOS XE — hơn 40,000 thiết bị
  • C. Atlassian Confluence — 5,000 server
  • D. PaperCut — 20,000 máy in

Câu 52. Phần mềm điều khiển động cơ ô tô (Engine Control Software) dễ bị tấn công khi thiếu điều gì?

  • A. Giao diện người dùng đẹp
  • B. Kiểm tra tính toàn vẹn và xác thực mã nguồn
  • C. Kết nối Bluetooth
  • D. Camera hành trình

Câu 53. “Security Auditing” trong kiểm thử bảo mật là?

  • A. Kiểm tra ngẫu nhiên không có chuẩn
  • B. Đánh giá hệ thống một cách có hệ thống so với tiêu chuẩn bảo mật hoặc chính sách đã định
  • C. Tấn công thực tế vào hệ thống
  • D. Quét tự động bằng phần mềm

Câu 54. “Portable Execution” (PE) trong buổi 07 liên quan đến?

  • A. Phần mềm chạy được trên USB
  • B. Định dạng file thực thi trên Windows (.exe, .dll) — cần hiểu để phân tích và khai thác nhị phân
  • C. Mã hóa di động
  • D. Ứng dụng đa nền tảng

Câu 55. Trong DevSecOps, “Security as Code” có nghĩa là?

  • A. Viết lại toàn bộ phần mềm bằng ngôn ngữ an toàn
  • B. Tự động hóa các kiểm tra bảo mật và tích hợp chúng vào pipeline CI/CD như một phần của code
  • C. Mã hóa toàn bộ source code
  • D. Thuê chuyên gia bảo mật để review code