Quét lỗ hổng bảo mật cho ứng dụng
Tóm tắtMở Bảo mật và nhấp vào Chạy quét bảo mật. Trong một hoặc hai phút, MonstarX kiểm tra mã của bạn theo 33 quy tắc, thăm dò ứng dụng đang chạy dưới góc nhìn người lạ và cho AI đọc toàn bộ ứng dụng. Bạn nhận được điểm xếp hạng từ A đến F và danh sách vấn đề phát hiện, nghiêm trọng nhất trước, mỗi vấn đề ghi rõ vị trí, vì sao quan trọng và cần thay đổi gì. Chọn những vấn đề cần sửa, MonstarX sẽ sửa qua một lần xây dựng bình thường rồi quét lại. Bạn có thể tải kết quả xuống dưới dạng báo cáo.
Ứng dụng viết nhanh thường quá tin tưởng trình duyệt: một hàm ai cũng gọi được, một lượt đặt lịch được tra theo số mà không kiểm tra là của ai, một mức giá lấy thẳng từ trang. Kẻ tấn công tìm đúng những kẽ hở như vậy.
Tab Bảo mật đọc ứng dụng của bạn theo cách kẻ tấn công sẽ đọc, liệt kê những gì tìm thấy theo thứ tự nghiêm trọng nhất trước và giúp bạn sửa. Hãy coi đây là một bài kiểm thử xâm nhập (penetration test — kiểm tra bảo mật bằng cách cố ý tìm cách đột nhập) thu nhỏ, có sẵn trong MonstarX.
Làm sao để chạy quét bảo mật?
Phần tiêu đề “Làm sao để chạy quét bảo mật?”-
Mở dự án và nhấp vào Bảo mật trên thanh trên cùng.
-
Nhấp vào Chạy quét bảo mật. Quá trình này mất một hoặc hai phút.
-
Theo dõi ba phần lần lượt hoàn tất. Bạn có thể rời tab: quá trình quét chạy trên máy chủ của MonstarX và vẫn tiếp tục. Hủy dừng quá trình quét và giữ lại những gì đã tìm thấy.
Huy hiệu của tab Bảo mật trên thanh trên cùng hiện biểu tượng xoay khi đang quét, sau đó là số vấn đề chưa xử lý (tô màu theo vấn đề nghiêm trọng nhất) hoặc một chấm xanh lá khi không còn gì cần xử lý. Để quét lại sau này, nhấp vào Quét lại ở đầu tab.
Quá trình quét kiểm tra những gì?
Phần tiêu đề “Quá trình quét kiểm tra những gì?”Một lần quét gồm ba phần:
| Phần | Công việc | Chi phí |
|---|---|---|
| Kiểm tra mã nguồn | 33 quy tắc chạy trên mọi tệp của ứng dụng: thiếu kiểm tra đăng nhập, bản ghi bị sửa mà không kiểm tra ai sở hữu, giá trị bí mật viết thẳng vào mã, truy vấn cơ sở dữ liệu ghép từ văn bản, HTML không an toàn, tệp tải lên không được kiểm tra, webhook chưa xác minh và nhiều vấn đề khác. | Miễn phí |
| Thăm dò ứng dụng đang chạy | Gửi các yêu cầu chỉ đọc đến ứng dụng đang chạy, dưới vai một người lạ không có tài khoản: trang dành cho người đã đăng nhập, tuyến trả lời bất kỳ ai, truy cập khác nguồn, và với ứng dụng đã xuất bản, cả header bảo mật lẫn những tệp không bao giờ nên được cung cấp. | Miễn phí |
| Rà soát bằng AI | Một mô hình AI đọc toàn bộ ứng dụng cùng các vấn đề đã phát hiện, xác nhận hoặc bác bỏ từng vấn đề, rồi tìm những gì chỉ đọc mã mới thấy, như mức giá tin theo trang gửi lên hay dữ liệu trang gửi đi mà không hiển thị. | Tốn điểm sử dụng, như một yêu cầu Trò chuyện |
Phần thăm dò dùng ứng dụng đã xuất bản khi ứng dụng đang hoạt động, nếu không thì dùng bản xem trước. Kết quả cho biết đã thăm dò bản nào.
OWASP Top 10 và CWE là gì?
Phần tiêu đề “OWASP Top 10 và CWE là gì?”OWASP là một tổ chức phi lợi nhuận công bố Top 10, danh sách nổi tiếng nhất về những loại rủi ro bảo mật nghiêm trọng nhất của ứng dụng web. Mỗi vấn đề phát hiện được xếp vào một mục trong đó, để bạn (hoặc một chuyên gia bảo mật) biết đó là loại vấn đề gì:
| Nói đơn giản | |
|---|---|
| A01 Lỗi kiểm soát truy cập (Broken access control) | Ai đó xem hoặc sửa được thứ không thuộc về họ. |
| A02 Lỗi mật mã (Cryptographic failures) | Giá trị bí mật hoặc mã được lưu hay tạo ra theo cách yếu. |
| A03 Chèn mã (Injection) | Văn bản người dùng nhập vào bị chạy như lệnh hoặc mã. |
| A04 Thiết kế không an toàn (Insecure design) | Logic của ứng dụng có thể bị lạm dụng, như gửi email hay đặt lịch miễn phí không giới hạn. |
| A05 Cấu hình bảo mật sai (Security misconfiguration) | Cài đặt quá thoáng, như thiếu header bảo mật. |
| A06 Thành phần có lỗ hổng và lỗi thời (Vulnerable and outdated components) | Phần mềm cũ có lỗ hổng đã được biết đến. |
| A07 Lỗi định danh và xác thực (Identification and authentication failures) | Cách xử lý đăng nhập hoặc phiên đăng nhập còn yếu. |
| A08 Lỗi toàn vẹn dữ liệu và phần mềm (Software and data integrity failures) | Mã hoặc dữ liệu từ bên ngoài được tin dùng mà không kiểm tra. |
| A09 Lỗi ghi nhật ký và giám sát bảo mật (Security logging and monitoring failures) | Giá trị bí mật lọt vào nhật ký, hoặc các cuộc tấn công không ai hay biết. |
| A10 Giả mạo yêu cầu phía máy chủ (Server-side request forgery) | Ứng dụng có thể bị lợi dụng để tải những địa chỉ do kẻ tấn công chọn. |
CWE (Common Weakness Enumeration) là danh mục đánh số các điểm yếu cụ thể, chẳng hạn CWE-639: một bản ghi được tra theo ID do người dùng kiểm soát. Mỗi vấn đề phát hiện đều có liên kết đến mục OWASP tương ứng và, nếu có, trang CWE của vấn đề đó, để bạn đọc thêm.
Đọc kết quả như thế nào?
Phần tiêu đề “Đọc kết quả như thế nào?”Ở đầu trang, bạn thấy điểm trên thang 100 với xếp hạng từ A đến F, số vấn đề chưa xử lý theo mức độ nghiêm trọng, những gì đã được quét và thăm dò, chi phí của phần rà soát bằng AI, và vài câu tóm tắt của phần rà soát.
Điểm bắt đầu từ 100 và bị trừ 40 cho mỗi vấn đề Nghiêm trọng, 15 cho mỗi vấn đề Cao, 5 cho mỗi vấn đề Trung bình và 1 cho mỗi vấn đề Thấp. Xếp hạng cho biết bạn nên làm gì tiếp theo:
| Xếp hạng | Điểm | Ý nghĩa |
|---|---|---|
| A | 90–100 | Không tìm thấy gì nghiêm trọng. |
| B | 75–89 | Có vài chỗ cần chỉnh lại. |
| C | 55–74 | Sửa các vấn đề mức cao trước khi có thêm người dùng ứng dụng. |
| D | 35–54 | Có lỗ hổng nghiêm trọng: hãy sửa trước khi xuất bản. |
| F | 0–34 | Ở trạng thái hiện tại, ứng dụng dễ bị tấn công. |
Mỗi vấn đề phát hiện hiện mức độ nghiêm trọng, tiêu đề, mục OWASP, CWE, nguồn phát hiện (Kiểm tra mã nguồn, Thăm dò ứng dụng đang chạy hoặc Rà soát bằng AI), mức độ chắc chắn của quá trình quét (Đã xác nhận, Có khả năng hoặc Cần xem xét), cùng tệp và dòng. Nhấp vào một vấn đề để mở:
- Đoạn mã quanh dòng đó, với dòng được đánh dấu.
- Vấn đề là gì, Vì sao điều này quan trọng và Cần thay đổi gì, bằng lời dễ hiểu.
- Ghi chú của Rà soát bằng AI: AI có xác nhận vấn đề không và xác nhận bằng cách nào.
- Mở trong Mã nguồn đưa bạn đến tệp đó trong tab Mã nguồn.
Khi phần rà soát bằng AI cho rằng một vấn đề là báo động nhầm, vấn đề đó ghi Rà soát bằng AI: có lẽ không phải vấn đề thật. Vấn đề vẫn nằm trong danh sách, xếp cuối cùng, nhưng không bị tính vào điểm.
Bên dưới danh sách, Những gì đã được kiểm tra mở ra mọi mục kiểm tra đã chạy, nhóm theo mục OWASP, kèm dấu tích, số vấn đề phát hiện hoặc lý do bị bỏ qua.
Làm sao để sửa những gì đã tìm thấy?
Phần tiêu đề “Làm sao để sửa những gì đã tìm thấy?”-
Đánh dấu những vấn đề bạn muốn sửa, hoặc nhấp vào Chọn tất cả. Nút Sửa 2 vấn đề phát hiện sẽ xuất hiện. Nút bị làm mờ khi đang có một lần xây dựng chạy.
-
Nhấp vào nút đó. MonstarX cho bạn biết điều gì sẽ xảy ra, rồi bạn nhấp lại vào Sửa 2 vấn đề phát hiện.
-
Mỗi vấn đề trở thành một nhiệm vụ trong kế hoạch tính năng (Bảo mật: …; khi kế hoạch gần đầy, các vấn đề dùng chung một nhiệm vụ) và một yêu cầu xây dựng được gửi vào cuộc trò chuyện, gắn huy hiệu Bảo mật. Yêu cầu chạy như mọi yêu cầu khác, lưu một phiên bản, và QA có thể kiểm thử ứng dụng sau đó.
-
Khi xây dựng xong, quá trình quét tự chạy lại. Những vấn đề đã hết được ghi là đã giải quyết (Tác nhân MonstarX đã sửa 2 vấn đề). Vấn đề nào vẫn còn sẽ quay lại với nhãn Vấn đề vẫn còn sau khi sửa.
Nếu một vấn đề không phải vấn đề thật thì sao?
Phần tiêu đề “Nếu một vấn đề không phải vấn đề thật thì sao?”Mở vấn đề đó, nhấp vào Tạm bỏ qua, rồi chọn lý do:
- Không phải vấn đề thật
- Rủi ro được chấp nhận: bạn biết vấn đề này và chấp nhận rủi ro.
- Đã xử lý theo cách khác
Vấn đề bạn tạm bỏ qua chuyển sang danh sách Tạm bỏ qua và nằm yên ở đó trong mọi lần quét sau, kể cả khi phần mã khác thay đổi. Nhấp vào Đưa trở lại danh sách để vấn đề quay lại danh sách chính.
Làm sao để tải báo cáo bảo mật?
Phần tiêu đề “Làm sao để tải báo cáo bảo mật?”Nhấp vào Tải xuống báo cáo ở cuối phần kết quả. Bạn nhận được một tệp Markdown (tài liệu văn bản thuần, mở được bằng mọi trình soạn thảo), đặt tên theo dự án, ví dụ dat-lich-dat-cho-security-report.md. Báo cáo có bố cục như một báo cáo kiểm thử xâm nhập:
- Phạm vi và phương pháp: bao nhiêu quy tắc chạy trên bao nhiêu tệp, những gì đã được thăm dò, và phần rà soát bằng AI đã làm gì.
- Bản tóm tắt: điểm, số vấn đề chưa xử lý theo mức độ nghiêm trọng và phần tóm tắt của rà soát.
- Vấn đề phát hiện: mỗi vấn đề kèm liên kết OWASP và CWE, vị trí, đoạn mã, vấn đề là gì, vì sao quan trọng và cần thay đổi gì.
- Đã giải quyết kể từ lần quét trước, và Chủ sở hữu đã tạm bỏ qua, kèm lý do của bạn.
- Mục kiểm tra: mọi mục kiểm tra kèm kết quả.
Báo cáo rất tiện để gửi cho lập trình viên, khách hàng hoặc kiểm toán viên. Bạn tải được báo cáo khi quá trình quét đã dừng.
Câu hỏi thường gặp
Phần tiêu đề “Câu hỏi thường gặp”Quét có miễn phí không?
Phần kiểm tra mã nguồn và thăm dò ứng dụng đang chạy miễn phí. Phần rà soát bằng AI tốn điểm sử dụng, như một yêu cầu Trò chuyện, và kết quả cho biết chi phí. Sửa các vấn đề tốn điểm sử dụng như mọi lần xây dựng.
Xếp hạng tốt có nghĩa là ứng dụng của tôi an toàn không?
Không lần quét nào cam kết được điều đó. Quá trình quét tìm những gì quy tắc, thăm dò và phần rà soát nhìn thấy. Hãy sửa các vấn đề nghiêm trọng và mức cao trước, quét lại, và nhờ một người xem xét mọi phần xử lý tiền hoặc dữ liệu cá nhân trước khi nhiều người dùng ứng dụng.
Tôi nên quét trước hay sau khi xuất bản?
Cả hai. Quét trước khi xuất bản để bắt những lỗ hổng lớn. Quét lại khi ứng dụng đã hoạt động: một số mục kiểm tra, như header bảo mật và những tệp không bao giờ nên được cung cấp, chỉ chạy trên ứng dụng đã xuất bản.
Người tôi chia sẻ dự án có xem được kết quả quét không?
Không. Kết quả quét chỉ ra mọi điểm yếu, nên chỉ chủ sở hữu mới thấy tab Bảo mật.
Quá trình quét có kiểm tra mã đăng nhập và cơ sở dữ liệu của chính MonstarX không?
Không. Những phần đó giống nhau ở mọi ứng dụng và do MonstarX bảo trì. Quá trình quét kiểm tra mã được viết cho ứng dụng của bạn, và ứng dụng đang chạy của bạn.
Điều gì xảy ra nếu đang có một lần xây dựng chạy khi tôi bắt đầu quét?
Quá trình quét chờ lần xây dựng kết thúc (tối đa 10 phút), để kiểm tra mã đã hoàn tất.