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 | 17/04/2024
Mới đây, Cơ quan An ninh mạng và Cơ sở hạ tầng Hoa Kỳ (CISA) đã phát hành phiên bản mới của hệ thống Malware Next-Gen có khả năng tự động phân tích các tệp độc hại tiềm ẩn, địa chỉ URL đáng ngờ và truy tìm mối đe dọa an ninh mạng. Phiên bản mới này cho phép người dùng gửi các mẫu phần mềm độc hại để CISA phân tích.
10:00 | 22/03/2024
Với sự tương tác kinh tế, xã hội và văn hóa ngày càng diễn ra phổ biến trên Internet, nhu cầu ngày càng tăng trong vài thập kỷ qua nhằm bắt chước sự ngẫu nhiên của thế giới tự nhiên và tạo ra các hệ thống kỹ thuật số để tạo ra các kết quả không thể đoán trước. Các trường hợp sử dụng cho tính không thể đoán trước này bao gồm đưa vào sự khan hiếm nhân tạo, xây dựng các cơ chế bảo mật mạnh mẽ hơn và tạo điều kiện cho các quy trình ra quyết định trung lập đáng tin cậy. Trong bài viết này, tác giả sẽ phân tích tính ngẫu nhiên, tìm hiểu về các loại ngẫu nhiên và vai trò quan trọng của sự ngẫu nhiên đối với Blockchain và hệ sinh thái Web3.
14:00 | 01/03/2024
Giấu tin (steganography) là một kỹ thuật nhúng thông tin vào một nguồn đa phương tiện nào đó, ví dụ như tệp âm thanh, tệp hình ảnh,... Việc này giúp thông tin được giấu trở nên khó phát hiện và gây ra nhiều thách thức trong lĩnh vực bảo mật và an toàn thông tin, đặc biệt là quá trình điều tra số. Thời gian gần đây, số lượng các cuộc tấn công mạng có sử dụng kỹ thuật giấu tin đang tăng lên, tin tặc lợi dụng việc giấu các câu lệnh vào trong bức ảnh và khi xâm nhập được vào máy tính nạn nhân, các câu lệnh chứa mã độc sẽ được trích xuất từ ảnh và thực thi. Nhằm mục đích cung cấp cái nhìn tổng quan về phương thức ẩn giấu mã độc nguy hiểm, bài báo sẽ giới thiệu về kỹ thuật giấu tin trong ảnh và phân tích một cuộc tấn công cụ thể để làm rõ về kỹ thuật này.
13:00 | 26/02/2024
Operation Triangulation là một chiến dịch phức tạp nhắm vào thiết bị iOS trong các cuộc tấn công zero-click. Tạp chí An toàn thông tin đã từng cung cấp một số bài viết liên quan đến chiến dịch này, như giải mã tính năng che giấu của phần mềm độc hại TriangleDB, những cuộc tấn công zero-day trên thiết bị iOS hay giới thiệu cách sử dụng công cụ bảo mật phát hiện tấn công zero-click. Tiếp nối chuỗi bài viết về chiến dịch Operation Triangulation, bài viết sẽ phân tích các phương thức khai thác, tấn công chính của tin tặc trong chuỗi tấn công này, dựa trên báo cáo của hãng bảo mật Kaspersky.
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
Theo báo cáo năm 2022 về những mối đe doạ mạng của SonicWall, trong năm 2021, thế giới có tổng cộng 623,3 triệu cuộc tấn công ransomware, tương đương với trung bình có 19 cuộc tấn công mỗi giây. Điều này cho thấy một nhu cầu cấp thiết là các tổ chức cần tăng cường khả năng an ninh mạng của mình. Như việc gần đây, các cuộc tấn công mã độc tống tiền (ransomware) liên tục xảy ra. Do đó, các tổ chức, doanh nghiệp cần quan tâm hơn đến phương án khôi phục sau khi bị tấn công.
19:00 | 30/04/2024