Giới thiệu chung
Hiện nay, phương pháp phổ biến để xác định các lỗ hổng bảo mật cho ứng dụng web là thực hiện kiểm thử xâm nhập. Tuy nhiên, người kiểm thử xâm nhập chỉ có thông tin về đường dẫn truy cập đến website và một số thông tin sơ bộ về chức năng. Điều này khiến người thực hiện kiểm thử không có cái nhìn chi tiết về ứng dụng, dẫn đến kết quả kiểm thử có thể không được đầy đủ.
Trong khi đó, các tính năng của phần mềm ngày càng phức tạp, kiểm thử xâm nhập với hạn chế về phương tiện và công nghệ sẽ không thể đáp ứng được yêu cầu đảm bảo về mặt an toàn thông tin. Trong trường hợp này có thể sử dụng một phương pháp khác hiệu quả hơn, đó là rà soát an toàn mã nguồn (secure code review).
Rà soát an toàn mã nguồn là một quá trình để tìm ra các đoạn mã không an toàn nếu chúng tồn tại trong phần mềm thì có thể gây ra một lỗ hổng tiềm ẩn trong quá trình phát triển phần mềm.
Rà soát an toàn mã nguồn tập trung vào việc tìm kiếm các lỗ hổng về: xác thực (Authentication), Phân quyền (Authrization), cấu hình (Configuration), Quản lý phiên (Session Management), ghi nhật ký (Logging), Kiểm tra dữ liệu (Data validation), Xử lý lỗi và ngoài lệ (Error/Excaption handling), Mã hóa (Encryption), Business logic.
Người thực hiện rà soát an toàn mã nguồn phải là người có trình độ chuyên môn cao, có nhiều kinh nghiệm trong việc lập trình an toàn như: am hiểu nhiều ngôn ngữ lập trình, các nền tảng lập trình, am hiểu về các tiêu chuẩn và phương pháp lập trình an toàn.
Ngoài mã nguồn của ứng dụng, người thực hiện rà soát cũng cần có thêm các tài liệu liên quan đến thiết kế phần mềm, tài liệu về đặc tả chức năng. Các tài liệu này cho phép người thực hiện rà soát có cái nhìn toàn cảnh về ứng dụng.
Hiểu biết sâu sắc về ứng dụng giúp cho thực hiện rà soát sâu vào từng chức năng, từng luồng xử lý dữ liệu để xác định các lỗ hổng tiềm ẩn.
Rà soát an toàn mã nguồn và lợi ích
Khi nào nên rà soát an toàn mã nguồn
Vòng đời phát triển phần mềm (Software Development Life Cycle - SDLC) bao gồm 5 giai đoạn cơ bản: Phân tích yêu cầu (Requirement), Thiết kế (Design), Phát triển (Development), Thử nghiệm (Testing), Phát hành (Release).
Đa số các lỗ hổng có thể được phát hiện trong giai đoạn phát triển của SDLC. Ở giai đoạn này, các hàm, biến, lớp đang được hình thành. Sự liên kết và kế thừa giữa các đối tượng chưa phức tạp dẫn đến việc xử lý lỗi diễn ra nhanh chóng.
Việc thực hiện rà soát an toàn mã nguồn song song cùng với việc phát triển ứng dụng sẽ làm kéo dài giai đoạn phát triển. Tuy nhiên, điều này cũng mang lại nhiều lợi ích như các lập trình viên sẽ tuân thủ các tiêu chuẩn lập trình an toàn, mã nguồn đầu ra được đảm bảo về mặt chất lượng.
Các lỗ hổng được phát hiện ở giai đoạn cuối của SDLC thường mất nhiều thời gian để sửa lỗi. Ở giai đoạn này, các hàm, các lớp, các biến được kế thừa, sử dụng ở khắp nơi bên trong ứng dụng. Việc thay đổi có thể gây đổ vỡ cho một tính năng hoặc thậm chí cho cả ứng dụng đó. Lập trình viên cần thời gian để xử lý lỗi và xử lý các ảnh hưởng khác đi kèm. Tuy nhiên, một số những lỗ hổng đặc biệt như các lỗ hổng về logic xử lý chỉ có thể được phát hiện khi giai đoạn phát triển hoàn thành.
Vì vậy, rà soát an toàn mã nguồn nên được thực hiện bắt đầu từ giai đoạn phát triển và kết thúc sau khi giai đoạn phát triển kết thúc.
Lợi ích của rà soát an toàn mã nguồn
Chi phí: Chi phí cho việc khắc phục một lỗ hổng được phát hiện sau khi ứng dụng đã được phát hành là rất lớn. Nó bao gồm chi phí cho việc lập trình viên sửa lỗi, xử lý các ảnh hưởng của sự thay đổi, chi phí cho việc dừng dịch vụ để cập nhật, chi phí cho việc khắc phục các thiệt hại nếu lỗ hổng đã bị khai thác. Thậm chí, trong quá trình sửa lỗi, các lỗ hổng mới có thể được hình thành. Rõ ràng, khi các lỗ hổng được phát hiện sớm thì sẽ tiết kiệm được rất nhiều chi phí.
Sự tuân thủ: Một số các ứng dụng đặc biệt cần phải tuân thủ các tiêu chuẩn trước khi phát hành, ví dụ như các ứng dụng liên quan đến tài chính, ngân hàng thì cần phải tuân thủ tiêu chuẩn PCI (Payment Card Industry). Trong tiêu chuẩn có yêu cầu về mã nguồn, các ứng dụng cần phải được rà soát an toàn mã nguồn trước khi được phát hành. Việc thực hiện rà soát an toàn mã nguồn có thể giúp cho tổ chức có cơ hội tốt hơn để có được chứng nhận.
Việc thực hiện rà soát an toàn mã nguồn cũng làm cho các lập trình viên sẽ chú ý hơn đến các lỗi cơ bản trong khi lập trình. Việc này sẽ hình thành các thói quen lập trình và dần dần sẽ nâng cao được chất lượng đầu ra của các đoạn mã nguồn.
Uy tín: Rà soát an toàn mã nguồn sẽ loại bỏ được hầu hết các lỗ hổng bảo mật trước khi ứng dụng được phát hành. Điều này làm cho ứng dụng an toàn hơn khi thực hiện kiểm thử xâm nhập (Penetration Testing). Vì vậy, sẽ giảm khả năng ứng dụng bị tấn công và thỏa hiệp, ít có cơ hội gây thiệt hại về danh tiếng cho tổ chức.
Các phương pháp thực hiện rà soát an toàn mã nguồn
Về cơ bản, có hai phương pháp rà soát an toàn mã nguồn là sử dụng các công cụ rà soát an toàn mã nguồn tự động (Automation tools) hoặc là thực hiện công việc thủ công (Manual).
Thực hiện rà soát an toàn mã nguồn sử dụng các công cụ tự động
Đối với các lập trình viên
Đa số các lập trình viên thường chỉ quan tâm đến việc làm thế nào để ứng dụng có thể hoạt động và thực hiện đúng yêu cầu về mặt chức năng. Vấn đề an toàn thường được xem xét sau khi ứng dụng đã cơ bản hoạt động.
Lợi ích của việc phát hiện sớm các lỗ hổng là rất rõ ràng. Tuy nhiên, người thực hiện rà soát an toàn mã nguồn không thể liên tục làm việc với lập trình viên để chỉ ra các lỗi sai trong từng dòng mã. Việc rà soát an toàn mã nguồn được thực hiện song song với việc phát triển phần mềm khi có sự hỗ trợ của các công cụ tự động.
Các công cụ rà soát an toàn mã nguồn tự động có các thành phần cho phép tích hợp lên công cụ phát triển phần mềm của các lập trình viên. Nó cho phép nhắc nhở lập trình viên các về các lỗ hổng bảo mật ngay trong giai đoạn đang lập trình. Các công cụ này có thể gợi ý cách sửa lỗi một cách chi tiết đến từng dòng mã lệnh.
Đối với người thực hiện rà soát
Khi ứng dụng đã được lập trình xong chuyển sang bước thử nghiệm (Testing). Các công cụ tự động có thể hỗ trợ cho người thực hiện rà soát dò quét các lỗ hổng trong ứng dụng theo một bộ mẫu nhận dạng (signature).
Sử dụng các công cụ tự động mang lại những lợi ích sau:
Một số công cụ trả phí \ như:
Một số công cụ miễn phí như:
Thực hiện rà soát an toàn mã nguồn thủ công
Với phương pháp này, người thực hiện rà soát sẽ xem xét toàn bộ mã nguồn của ứng dụng. Ngoài ra, cũng cần phải được nắm rõ các thông tin về thiết kế phần mềm, đặc tả chức năng, hướng xử lý.
Để thực hiện rà soát an toàn mã nguồn thủ công, người thực hiện cần phải trải qua các bước sau:
Việc đầu tiên, người thực hiện rà soát phải xác định được phạm vi công việc của mình. Bằng cách tiếp cận với mã nguồn, các tài liệu thiết kế và đặc tả chức năng, người thực hiện rà soát phải trả lời được các câu hỏi:
Ngoài đọc các tài liệu, người thực hiện nên trao đổi thông tin với các nhà phát triển. Qua đó sẽ giúp người thực hiện rà soát hiểu rõ cách tiếp cận của các nhà phát triển với một số vấn đề như xác thực, kiểm tra dữ liểu, luồng xử lý… Từ đó xác định được các điểm quan trọng trong vấn đề an toàn của ứng dụng.
Thực hiện rà soát an toàn mã nguồn
Trước tiên, người thực hiện cần xác định được mức độ ưu tiên của từng loại lỗ hổng. Tùy thuộc vào chức năng đặc thù của từng ứng dụng mà mức độ ưu tiên của từng loại lỗ hổng là khác nhau. Ví dụ, đối với các ứng dụng doanh nghiệp, quy trình và phân quyền là rất quan trọng. Người thực hiện rà soát an toàn mã nguồn cần ưu tiên tìm các lỗi liên quan đến Business logic và phân quyền.
Quá trình thực hiện nên có nhiều người tham gia và thực hiện một cách độc lập. Cách tiếp cận của mỗi người là rất quan trọng. Mỗi người có một cách tiếp cận riêng đối với ứng dụng, điều này dẫn đến những kết quả khác nhau nhưng thường liên quan đến nhau và khi nhiều người cùng thực hiện thì sẽ nâng cao chất lượng của công việc
Báo cáo
Sau khi các thành viên thực hiện xong việc rà soát, nhóm thực hiện cần phải chia sẻ về kết quả mà mình phát hiện được. Mỗi người thực hiện có cơ hội để được xem lại những phát hiện của người khác và trao đổi với mọi người về các phát hiện của mình và các hướng xử lý. Giai đoạn này cũng đảm bảo rằng tất cả các phát hiện đều được báo cáo.
Danh sách kết quả cuối cùng cần có đủ các thông tin mô tả chi tiết về lỗ hổng và phương pháp xử lý.
Các lợi ích mà phương pháp này mang lại:
Tuy nhiên, phương pháp này tồn tại một số nhược điểm như sau:
Kết luận
Các ứng dụng có hàng nghìn đến hàng trăm nghìn dòng mã và chu kỳ phát triển ngày càng được rút ngắn. Tuy nhiên, thời gian để thực hiện rà soát an toàn mã nguồn thì vẫn không thay đổi, thậm chí có thể tăng lên do sự phức tạp của tính năng, nhiều luồng xử lý dữ liệu, nhiều lỗ hổng mới được phát hiện.
Hai phương pháp sử dụng các công cụ tự động và thực hiện thủ công có thể bổ trợ cho nhau.
Các công cụ tự động có thể giúp con người rút gọn thời gian để phát hiện các lỗ hổng phổ biến. Con người có thể kiểm chứng lại kết quả đầu ra của các công cụ tự động và phát hiện các lỗ hổng phức tạp mà các công cụ tự động không thể thực hiện được.
Lê Thanh Trung, chuyên viên VIB
08:00 | 22/02/2021
13:00 | 29/12/2023
Hiện nay, số lượng các vụ tấn công mạng trên ứng dụng web đang có xu hướng ngày càng gia tăng cả về quy mô lẫn mức độ tinh vi, với mục tiêu nhắm vào các dịch vụ cơ sở trọng yếu, khối tài chính, ngân hàng và các tổ chức/doanh nghiệp (TC/DN) lớn. Hậu quả của các cuộc tấn công này có thể là giả mạo giao dịch, gián đoạn hoạt động kinh doanh hay vi phạm dữ liệu, dẫn đến nguy cơ rò rỉ thông tin và mất mát dữ liệu quan trọng. Điều này gây ra nhiều thiệt hại đáng kể về tài chính cũng như uy tín của các TC/ DN. Bài báo sẽ trình bày thực trạng về bảo mật ứng dụng web năm 2023 dựa trên báo cáo của công ty an ninh mạng OPSWAT, cùng các giải pháp phòng tránh mối đe dọa tấn công mạng này.
10:00 | 22/09/2023
Internet robot hay bot là các ứng dụng phần mềm thực hiện các tác vụ lặp đi lặp lại một cách tự động qua mạng. Chúng có thể hữu ích để cung cấp các dịch vụ như công cụ tìm kiếm, trợ lý kỹ thuật số và chatbot. Tuy nhiên, không phải tất cả các bot đều hữu ích. Một số bot độc hại và có thể gây ra rủi ro về bảo mật và quyền riêng tư bằng cách tấn công các trang web, ứng dụng dành cho thiết bị di động và API. Bài báo này sẽ đưa ra một số thống kê đáng báo động về sự gia tăng của bot độc hại trên môi trường Internet, từ đó đưa ra một số kỹ thuật ngăn chặn mà các tổ chức/doanh nghiệp (TC/DN) có thể tham khảo để đối phó với lưu lượng bot độc hại.
09:00 | 05/06/2023
Tấn công tiêm lỗi (Fault Injection Attack - FIA) là loại tấn công chủ động, giúp tin tặc xâm nhập vào các thiết bị điện tử, mạch tích hợp cũng như các thiết bị mật mã nhằm thu được khóa bí mật và đánh cắp thông tin. Tiêm lỗi có thể được thực hiện trong cả phần cứng và phần mềm. Bài báo này nhóm tác giả sẽ trình bày về các kỹ thuật, công cụ được thực hiện trong FIA.
09:00 | 09/03/2023
D2D (Device-to-Device) là phương tiện liên lạc trực tiếp giữa các thiết bị mà không qua nút trung gian, nó giúp mở rộng phạm vi phủ sóng di động và tăng cường tái sử dụng tần số vô tuyến trong mạng 5G [1]. Đồng thời, D2D còn là công nghệ lõi của liên lạc giữa thiết bị với vạn vật IoT. Tuy nhiên, truyền thông D2D trong mạng 5G là kiểu mạng thông tin di động có nhiều thách thức bao gồm ẩn danh, nghe lén, đánh cắp quyền riêng tư, tấn công tự do… Những thách thức này sẽ khó giảm thiểu hơn do tính chất hạn chế tài nguyên của các thiết bị IoT. Do đó, việc sử dụng mật mã hạng nhẹ vào bảo mật hệ thống D2D nhằm đáp ứng yêu cầu về năng lượng tiêu thụ, tài nguyên bộ nhớ, tốc độ thực thi bảo mật xác thực trong 5G IoT là đặc biệt quan trọng. Bài báo đi phân tích các bước trong mô hình bảo mật D2D cho mạng 5G IoT. Từ đó, đề xuất thuật toán có thể sử dụng để bảo mật liên lạc D2D cho các thiết bị 5G IoT.
Lược đồ chữ ký số dựa trên hàm băm là một trong những lược đồ chữ ký số kháng lượng tử đã được Viện Tiêu chuẩn và Công nghệ Quốc gia Mỹ (NIST) chuẩn hóa trong tiêu chuẩn đề cử FIPS 205 (Stateless Hash Based Digital Signature Standard) vào tháng 8/2023. Bài báo này sẽ trình bày tổng quan về sự phát triển của của lược đồ chữ ký số dựa trên hàm băm thông qua việc phân tích đặc trưng của các phiên bản điển hình của dòng lược đồ chữ ký số này.
09:00 | 01/04/2024
Những ngày gần đây, liên tục các kênh YouTube với lượng người theo dõi lớn như Mixigaming với 7,32 triệu người theo dõi của streamer nổi tiếng Phùng Thanh Độ (Độ Mixi) hay Quang Linh Vlogs - Cuộc sống ở Châu Phi với 3,83 triệu người theo dõi của YouTuber Quang Linh đã bị tin tặc tấn công và chiếm quyền kiểm soát.
10:00 | 22/04/2024