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
08:00 | 25/01/2024
Tháng 12/2023, các nhà nghiên cứu của hãng bảo mật Fortinet xác định được ba gói độc hại mới trong kho lưu trữ nguồn mở Python Package Index (PyPI) có khả năng triển khai tệp thực thi CoinMiner để khai thác tiền điện tử trên các thiết bị Linux bị ảnh hưởng. Các nhà nghiên cứu cho rằng các chỉ số xâm phạm (IoC) của các gói này có điểm tương đồng với gói PyPI Culturestreak được phát hiện vào đầu tháng 9/2023. Bài viết này sẽ phân tích các giai đoạn tấn công của ba gói PyPI độc hại này, trong đó tập trung vào những điểm tương đồng và sự phát triển của chúng so với gói Culturestreak.
10:00 | 15/09/2023
Thư rác hay email spam là một vấn nạn lớn hiện nay, chúng đã xuất hiện từ rất lâu cùng với sự phát triển của Internet và không chỉ gây phiền nhiễu, tốn thời gian mà còn có thể chứa một số nội dung nguy hiểm. Ước tính có tới 94% phần mềm độc hại được phân phối dưới dạng email spam, một số nguy cơ tiềm ẩn khác bao gồm phần mềm gián điệp, lừa đảo và mã độc tống tiền. Trong bài viết này sẽ thông tin đến bạn đọc cách nhận biết thư rác và ngăn chặn thư rác không mong muốn.
14:00 | 14/08/2023
Xu hướng số hóa đã mang lại nhiều lợi ích cho ngành công nghiệp sản xuất, nhưng nó cũng bộc lộ những lỗ hổng trong hệ thống công nghệ vận hành (Operational Technology - OT) được sử dụng trong những môi trường này. Khi ngày càng có nhiều hệ thống điều khiển công nghiệp (Industrial Control System - ICS) được kết nối với Internet, nguy cơ tấn công mạng nhằm vào các hệ thống này sẽ càng tăng lên. Nếu các hệ thống này bị xâm phạm, nó có thể dẫn đến những hậu quả nghiêm trọng, chẳng hạn như ảnh hưởng sản xuất, bị mất cắp dữ liệu, hư hỏng vật chất đối với thiết bị, nguy hiểm cho môi trường làm việc và thậm chí gây hại đến tính mạng con người. Chính vì vậy, việc đưa ra các lưu ý giúp tăng cường bảo mật OT trong môi trường công nghiệp sản xuất trở nên vô cùng quan trọng.
09:00 | 04/05/2023
Những năm gần đây, các ứng dụng sử dụng hệ thống IoT đang ngày càng phát triển bởi khả năng mềm dẻo trong thiết kế phần cứng và thu thập dữ liệu. Đồng hành cùng với sự thay đổi của các công nghệ mạng truyền dẫn, tín hiệu, Wifi Mesh đang trở thành một lựa chọn thực tế và phù hợp đối với các hệ thống IoT công nghiệp, thương mại điện tử. Thông qua bài báo này, nhóm tác giả sẽ giới thiệu về nền tảng công nghệ mạng Wifi Mesh, từ đó làm cơ sở cho việc ứng dụng để thiết kế hệ thống giám sát đo độ nghiêng sẽ được trình bày trong kỳ tới.
Trong lĩnh vực chữ ký số, lược đồ ký số dựa trên đường cong Elliptic (ECDSA) được đánh giá là một trong những lược đồ chữ ký số có độ an toàn cao, dù ra đời sau nhưng ECDSA đang dần được thay thế cho lược đồ ký số RSA. Bài báo này tập trung giới thiệu lược đồ ECDSA, ứng dụng của ECDSA trong thực tế và các tham số an toàn được khuyến nghị dùng cho ECDSA.
11:00 | 13/05/2024
Cùng với sự phát triển của khoa học kỹ thuật có ngày càng nhiều những cuộc tấn công vào phần cứng và gây ra nhiều hậu quả nghiêm trọng. Nhiều giải pháp để bảo vệ phần cứng được đưa ra, trong đó, hàm không thể sao chép vật lý PUF (Physically Unclonable Functions) đang nổi lên như là một trong số những giải pháp bảo mật phần cứng rất triển vọng mạnh mẽ. RO-PUF (Ring Oscillator Physically Unclonable Function) là một kỹ thuật thiết kế PUF nội tại điển hình trong xác thực hay định danh chính xác thiết bị. Bài báo sẽ trình bày một mô hình ứng dụng RO-PUF và chứng minh tính năng xác thực của PUF trong bảo vệ phần cứng FPGA.
10:00 | 13/05/2024