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 Engineer | Xây dựng phần mềm với cơ chế bảo mật tích hợp |
| Vulnerability Analyst | Phân tích và đánh giá lỗ hổng bảo mật |
| Penetration Tester | Kiểm thử xâm nhập hệ thống |
| Malware Analyst | Phân tích mã độc |
| Secure Software Developer | Phá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 Developer | Phát triển công cụ bảo mật |
| Security Consultant | Tư vấn bảo mật cho tổ chức |
| Academic Researcher | Nghiê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)4.3 CVE – Common Vulnerabilities and Exposures
Cấu trúc CVE ID:
CVE - [NĂM] - [SỐ THỨ TỰ]
CVE - 2023 - 34362Một số CVE nổi bật năm 2023:
| CVE ID | Phần mềm | Loại tấn công | CVSS |
|---|---|---|---|
| CVE-2023-34362 | MOVEit Transfer | RCE – Khai thác bởi Cl0p ransomware | 9.8 |
| CVE-2023-4966 | Citrix (Citrix Bleed) | Information Disclosure | 9.4 |
| CVE-2023-20198 | Cisco IOS XE | Privilege Escalation – 40,000 thiết bị bị xâm phạm | 10.0 |
| CVE-2023-22518 | Atlassian Confluence | Privilege Escalation – deploy Cerber ransomware | 9.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ới4.5 An Toàn Phần Mềm Là Gì?
Ba trụ cột của an toàn phần mềm:
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ông và duy 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)
Ý nghĩa từng giai đoạn:
| Giai đoạn | Hoạt động chính |
|---|---|
| Requirements & Analysis | Thu thập yêu cầu, phân tích nghiệp vụ |
| Design | Thiết kế kiến trúc, cơ sở dữ liệu, giao diện |
| Implementation | Viết code theo thiết kế |
| Testing | Kiểm thử chức năng, hiệu năng, bảo mật |
| Deployment | Triển khai lên môi trường sản xuất |
| Maintenance | Vá 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ắc | Giả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
| Phương pháp | Mô tả |
|---|---|
| Penetration Testing | Mô phỏng tấn công thực tế để tìm điểm yếu |
| Vulnerability Scanning | Dù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 Hacking | Kiểm thử xâm nhập được ủy quyền hợp pháp |
| Security Scanning | Qué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ạn | SDLC truyền thống | SSDLC + Shift Left |
|---|---|---|
| Requirements | Chỉ phân tích chức năng | + Phân tích yêu cầu bảo mật, Threat Modeling |
| Design | Thiết kế kiến trúc | + Secure Design, Security Architecture Review |
| Implementation | Viết code | + Secure Coding Guidelines, SAST |
| Testing | Kiểm thử chức năng | + DAST, Penetration Testing, Fuzzing |
| Deployment | Triển khai | + Security configuration review |
| Maintenance | Vá lỗi thông thường | + Patch management, Vulnerability monitoring |
7.2 Chu Kỳ SSDLC Lặp Đi Lặp Lại
8. Các Khái Niệm Quan Trọng Trong An Toàn Phần Mềm
8.1 SAST và DAST
| SAST | DAST | |
|---|---|---|
| Tên đầy đủ | Static Application Security Testing | Dynamic Application Security Testing |
| Phương pháp | Phân tích source code mà không chạy chương trình | Kiểm thử ứng dụng trong khi đang chạy |
| Thời điểm | Giai đoạn phát triển (Shift Left) | Giai đoạn testing/staging |
| Ưu điểm | Phát hiện sớm, cover toàn bộ code | Phát hiện lỗi runtime, logic |
| Nhược điểm | Nhiều false positive | Cần app chạy được, coverage thấp hơn |
| Ví dụ công cụ | SonarQube, Checkmarx, Semgrep | OWASP 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ĩa | Vi phạm nguyên tắc |
|---|---|---|
| Spoofing | Giả mạo danh tính | Authentication |
| Tampering | Sửa đổi dữ liệu | Integrity |
| Repudiation | Chối bỏ hành động | Non-repudiation |
| Information Disclosure | Lộ thông tin | Confidentiality |
| Denial of Service | Từ chối dịch vụ | Availability |
| Elevation of Privilege | Leo thang đặc quyền | Authorization |
8.5 DevSecOps
8.6 Zero-day và PoC
| Khái niệm | Giải thích |
|---|---|
| Zero-day | Lỗ 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ổi | Nội dung |
|---|---|
| 01 | Giới thiệu môn học |
| 02 | SDLC – Tổng quan quy trình phát triển phần mềm |
| 03 | SSDLC – Threat Model, Security Requirements, Secure Design, Common Flaws |
| 04 | DevSecOps |
| 05 | Program Analysis: Static Code Analysis, Coverage Testing |
| 06 | Kỹ 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ổi | Nội dung |
|---|---|
| 07 | Portable Execution, Compiler, Shellcode, Code Injection, Overflow, Format String |
| 08 | Arc-injection Attack, Off-by-one |
| 09 | ASLR, DEP, ROP Chaining Attack |
| 10 | Heap Exploitation |
| 11 | Future Direction of Secure Software & Automation Exploitation |
| 12–14 | Bá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