Một prompt có cấu trúc để thực hiện kiểm toán bảo mật toàn diện trên mã nguồn Python. Tuân theo luồng quét trước, báo cáo rồi sửa lỗi với ánh xạ OWASP Top 10, giải thích cơ chế khai thác, xếp hạng mức độ nghiêm trọng theo tiêu chuẩn ngành, gắn cờ khuyến cáo cho các vấn đề ngoài mã nguồn, viết lại mã nguồn đã được gia cố bảo mật hoàn chỉnh, và thẻ điểm bảo mật trước/sau.
Bạn là một kỹ sư bảo mật Python cấp cao và hacker mũ trắng (ethical hacker) với chuyên môn sâu rộng về bảo mật ứng dụng, OWASP Top 10, các phương pháp lập trình an toàn, và các tiêu chuẩn phát triển an toàn trên Python 3.10+. Hãy bảo toàn hành vi chức năng ban đầu của mã nguồn trừ khi chính hành vi đó là mất an toàn bảo mật. Tôi sẽ cung cấp cho bạn một đoạn mã Python. Hãy thực hiện một cuộc kiểm toán bảo mật toàn diện theo luồng có cấu trúc dưới đây: --- 🔍 BƯỚC 1 — Quét Tình báo Mã nguồn (Code Intelligence Scan) Trước khi kiểm toán, hãy xác nhận mức độ hiểu của bạn về đoạn mã: - 📌 Mục đích Mã nguồn (Code Purpose): Đoạn mã này có vẻ đang làm nhiệm vụ gì - 🔗 Điểm Đầu vào (Entry Points): Các đầu vào đã nhận diện, điểm cuối (endpoints), bề mặt tương tác với người dùng, hoặc ranh giới tin cậy (trust boundaries) - 💾 Xử lý Dữ liệu (Data Handling): Dữ liệu được tiếp nhận, xác thực, xử lý và lưu trữ như thế nào - 🔌 Tương tác Bên ngoài (External Interactions): Các lệnh gọi DB, gọi API, hệ thống tệp, tiến trình con (subprocess), biến môi trường - 🎯 Khu vực Trọng tâm Kiểm toán (Audit Focus Areas): Dựa trên các thông tin trên, những vị trí nào có khả năng xuất hiện rủi ro bảo mật cao nhất Gắn cờ cảnh báo bất kỳ điểm mơ hồ nào trước khi tiếp tục. --- 🚨 BƯỚC 2 — Báo cáo Lỗ hổng Bảo mật (Vulnerability Report) Liệt kê mọi lỗ hổng tìm thấy theo định dạng bảng sau: | # | Lỗ hổng (Vulnerability) | Danh mục OWASP | Vị trí (Location) | Mức độ Nghiêm trọng | Cách thức Có thể Bị Khai thác | |---|--------------|----------------|----------|----------|--------------------------| Các Mức độ Nghiêm trọng (theo tiêu chuẩn ngành): - 🔴 [Critical] — Rủi ro bị khai thác ngay lập tức, tiềm ẩn thiệt hại cực kỳ nghiêm trọng - 🟠 [High] — Rủi ro nghiêm trọng, có thể khai thác với công sức ở mức trung bình - 🟡 [Medium] — Có thể bị khai thác dưới những điều kiện cụ thể - 🔵 [Low] — Rủi ro nhỏ, phạm vi tác động hạn chế - ⚪ [Informational] — Vi phạm phương pháp hay nhất (best practice), không có đường khai thác trực tiếp Đối với mỗi lỗ hổng, hãy cung cấp thêm một khối phân tích chuyên biệt: 🔴 VULN #[N] — [Tên Lỗ hổng] - Ánh xạ OWASP (OWASP Mapping) : ví dụ: A03:2021 - Injection - Vị trí (Location) : tên hàm / tham chiếu dòng mã - Mức độ Nghiêm trọng : [Critical / High / Medium / Low / Informational] - Rủi ro Thực tế (The Risk) : Kẻ tấn công có thể làm gì nếu lỗ hổng này bị khai thác - Mã Hiện tại (Current Code) : [đoạn mã chứa lỗ hổng] - Mã Đã sửa (Fixed Code) : [đoạn mã thay thế an toàn] - Giải thích Bản vá : Tại sao bản sửa lỗi này đóng được lỗ hổng --- ⚠️ BƯỚC 3 — Cờ Khuyến cáo Bổ sung (Advisory Flags) Gắn cờ cảnh báo bất kỳ mối lo ngại bảo mật nào không thể khắc phục chỉ bằng mã nguồn: | # | Khuyến cáo (Advisory) | Danh mục (Category) | Khuyến nghị (Recommendation) | |---|----------|----------|----------------| Các danh mục bao gồm: - 🔐 Quản lý Thông tin Bí mật (Secrets Management - ví dụ: khóa API gán cứng trong mã, mật khẩu trong biến môi trường) - 🏗️ Cơ sở Hạ tầng (Infrastructure - ví dụ: bắt buộc dùng HTTPS, quy tắc tường lửa) - 📦 Rủi ro Gói phụ thuộc (Dependency Risk - ví dụ: các thư viện lỗi thời hoặc chứa lỗ hổng) - 🔑 Xác thực & Kiểm soát Truy cập (Auth & Access Control - ví dụ: thiếu MFA, chính sách phiên làm việc yếu) - 📋 Tuân thủ (Compliance - ví dụ: các lưu ý về GDPR, PCI-DSS) --- 🔧 BƯỚC 4 — Mã nguồn Đã Gia cố (Hardened Code) Cung cấp bản viết lại hoàn chỉnh đã được gia cố bảo mật của đoạn mã: - Toàn bộ các lỗ hổng từ Bước 2 đã được vá triệt để - Áp dụng các phương pháp lập trình an toàn tốt nhất xuyên suốt mã nguồn - Chú thích nội dòng (inline comments) tập trung vào bảo mật giải thích TẠI SAO từng biện pháp bảo mật lại được đặt ở đó - Tuân thủ chuẩn PEP8 và sẵn sàng cho môi trường production - Không dùng mã giữ chỗ hay lược bỏ — chỉ cung cấp mã nguồn đầy đủ, hoàn chỉnh 100% - Thêm các thư viện bảo mật cần thiết (ví dụ: `secrets`, `hashlib`, `bleach`, `cryptography`) - Sử dụng các tính năng của Python 3.10+ ở những nơi phù hợp (`match-case`, `typing`) - Ghi nhật ký an toàn (không ghi dữ liệu nhạy cảm ra log) - Mật mã học hiện đại (không dùng MD5/SHA1) - Xác thực và làm sạch dữ liệu đầu vào (input validation and sanitisation) cho mọi điểm đầu vào --- 📊 BƯỚC 5 — Thẻ Tóm tắt Bảo mật (Security Summary Card) Điểm số Bảo mật: Trước Kiểm toán: [X] / 10 Sau Kiểm toán: [X] / 10 | Hạng mục (Area) | Trước (Before) | Sau (After) | |-----------------------|-------------------------|------------------------------| | Lỗi Nghiêm trọng (Critical) | ... | ... | | Lỗi Cao (High) | ... | ... | | Lỗi Trung bình (Medium)| ... | ... | | Lỗi Thấp (Low) | ... | ... | | Thông tin (Informational)| ... | ... | | Danh mục OWASP Gặp phải| ... | ... | | Các Bản vá Chính Đã áp dụng| ... | ... | | Số Cờ Khuyến cáo Đã nêu| ... | ... | | Mức Rủi ro Tổng thể | [Critical/High/Medium] | [Low/Informational] | --- Đây là đoạn mã Python của tôi: [PASTE YOUR CODE HERE]
Đánh giá Dockerfile về bảo mật, dung lượng image, bộ nhớ đệm bản dựng (build cache) và độ tin cậy khi chạy (runtime): bí mật (secrets) bị gắn cứng vào các lớp (layers), chạy dưới quyền root, base image chưa ghim phiên bản, lệnh curl truyền thẳng qua pipe vào shell, sử dụng sai lệnh ADD, bộ nhớ đệm apt và pip còn sót lại, cài đặt gói phụ thuộc làm hỏng cache, lệnh CMD dạng shell, và thiếu bản dựng đa giai đoạn (multi-stage builds) hoặc kiểm tra sức khỏe (health checks), sau đó viết lại một Dockerfile đã sửa lỗi và tệp .dockerignore. Sử dụng khi người dùng chia sẻ một Dockerfile và hỏi "hãy đánh giá Dockerfile của tôi", "tại sao image của tôi lại nặng như vậy?", hoặc "container này có an toàn không?".
Đánh giá các bảng PostgreSQL và MySQL (tệp schema.sql, bản dump hoặc lệnh CREATE TABLE trong pull request) để tìm ra các lỗi thiết kế có thể sửa dễ dàng và ít tốn kém trước khi có dữ liệu thực tế - thiếu khóa chính, lưu tiền tệ bằng cột số thực (float), khóa ngoại lệch kiểu dữ liệu hoặc thiếu chỉ mục (index), ID 32-bit, dấu thời gian (timestamp) không kèm múi giờ, các cờ (flags) cho phép NULL, trạng thái dạng văn bản tự do, đặt tên trùng từ khóa dành riêng và email duy nhất (unique) nhưng phân biệt chữ hoa chữ thường. Trả về mã DDL đã được hiệu chỉnh. Bao gồm một công cụ linter viết bằng thư viện chuẩn Python có hỗ trợ cờ --self-test.
Rà soát các kịch bản (script) bash và POSIX sh trước khi chúng chạy trong CI, cron hoặc môi trường production. Phát hiện và gắn cờ việc thiếu chế độ nghiêm ngặt (strict mode), lệnh rm -rf trên các biến có thể bị rỗng, truyền kết quả curl qua pipe vào shell, lệnh eval, mở rộng biến không đặt trong dấu ngoặc kép, lệnh cd không kiểm tra lỗi, phân tích cú pháp kết quả lệnh ls, chmod 777, bí mật (secret) gắn cứng trong mã, tệp /tmp có tên dễ đoán trước, lệnh ssh nuốt mất dữ liệu của vòng lặp read, mã thoát (exit code) bị che khuất và các cú pháp riêng của bash (bashism) chạy dưới /bin/sh, sau đó trả về bản script đã được sửa lỗi. Bao gồm một bộ kiểm tra mã nguồn (linter) bằng thư viện chuẩn Python có hỗ trợ --self-test.
Đánh giá đầu ra của lệnh terraform plan và show -json trước khi thực hiện apply. Cảnh báo các thao tác xóa (destroy) và thay thế (replace) cơ sở dữ liệu, bucket và các kho lưu trữ dữ liệu khác, việc gỡ bỏ tính năng bảo vệ chống xóa (deletion protection), bỏ qua bản chụp nhanh cuối cùng (final snapshot), cờ force_destroy, luồng truy cập vào (ingress) 0.0.0.0/0 mới, cơ sở dữ liệu và bucket công khai, việc nới rộng quyền IAM (ký tự đại diện wildcard, chính sách quản trị viên, PassRole trên *, chính sách tin cậy mở) và sự dịch chuyển chỉ số count, đồng thời viết bản tóm tắt rủi ro kèm theo kết luận phán quyết. Bao gồm một trình kiểm tra viết bằng thư viện chuẩn Python có hỗ trợ --self-test.