Ngăn chặn lỗ hổng bảo mật từ các cấu phần nguồn mở

08:53 | 09/05/2017

Theo một nghiên cứu của Veracode – doanh nghiệp chuyên về bảo mật ứng dụng, gần như tất cả (97%) các ứng dụng Java chứa ít nhất một cấu phần có lỗ hổng bảo mật đã biết.



Những cải thiện theo từng năm trong mã ứng dụng mà các tổ chức viết có thể bị xoá bỏ do ảnh hưởng của các cấu phần nguồn mở hay do bên thứ ba cung cấp. Một cấu phần có lỗ hổng bảo mật nghiêm trọng có thể đã ảnh hưởng tới hơn 80 ngàn cấu phần phần mềm khác và chúng lại được dùng để phát triển hàng triệu phần mềm. 

Brian Fitzgerald, Giám đốc Marketing (CMO) của Veracode, nói rằng “Việc sử dụng rộng rãi các cấu phần nguồn mở trong phát triển phần mềm đang tạo ra rủi ro hệ thống không thể quản lý trong các công ty và các ngành công nghiệp”. 90% các ứng dụng chứa các cấu phần của bên thứ ba, thường là cấu phần nguồn mở. Hơn 50% các công ty trong danh sách Global 500 dùng các cấu phần nguồn mở có lỗ hổng bảo mật.

Ngoài những lỗ hổng như Heartbleed, ShellShock được cả thế giới biết tới nên không thể bỏ qua, phần lớn các lỗ hổng trong các cấu phần nguồn mở rất ít được chú ý. Những cơ sở dữ liệu về lỗ hổng bảo mật lớn như CVE và NIST Vulnerability Database cung cấp rất ít thông tin về lỗ hổng bảo mật của phần mềm nguồn mở. Các nguồn thông tin chuyên về lỗ hổng bảo mật của phần mềm nguồn mở thì lại phân tán rải rác nên rất khó theo dõi. 

Tình hình còn xấu hơn khi OSVDB - một trong những cơ sở dữ liệu về lỗ hổng bảo mật tập trung vào mảng phần mềm nguồn mở lớn nhất - đóng cửa vào tháng 4/2016. Tuy điều đó dẫn đến sự nổi lên của các kho dữ liệu khác như Node Security Project và RubySec những vẫn còn rất nhiều hệ thống khác chưa được xét tới.

Sự phụ thuộc lẫn nhau khiến hệ thống phần mềm nguồn mở khá mong manh. Sự cố khiến cả cộng đồng NodeJS lo ngại khi chỉ với 11 dòng lệnh bị xoá cũng đã khiến Internet chao đảo là một minh chứng. OWASP đã nhận ra điều đó và bổ sung vấn đề dùng cấu phần có lỗ hổng bảo mật đã biết ("Using Components with Known Vulnerabilities") vào OWASP Top 10 năm 2013. Các lựa chọn để xử lý vấn đề này bao gồm:

- Thuê các tổ chức chuyên đánh giá mã nguồn như Veracode kiểm tra độ an toàn của ứng dụng nguồn mở.

- Tham khảo kết quả đánh giá độc lập của các tổ chức uy tín, so sánh các dự án nguồn mở dựa trên điểm đánh giá rủi ro bằng công cụ SecurifyGraphs. 

- Tìm kiếm thông tin về lỗ hổng bảo mật của các cấu phần nguồn mở từ các dự án nguồn mở / thương mại (xem danh sách phía dưới)

- Sử dụng BlackDuck Software Sonatype's Nexus, và Protecode – những công cụ ở mức doanh nghiệp, cho phép quản lý toàn bộ các vấn đề bản quyền, bảo mật, áp đặt chính sách cho quá trình sử dụng cả cấu phần nguồn mở lẫn các cấu phần thương mại từ bên thứ ba.

Các dự án tổng hợp/tìm kiếm thông tin về lỗ hổng bảo mật của phần mềm nguồn mở

- Node Security Project nổi tiếng về những công việc liên quan đến các môđun Node.js và NPM nhưng dự án này còn cung cấp các công cụ quét các gói phần mềm để tìm ra những lỗ hổng bảo mật đã được biết, dựa vào các cơ sở dữ liệu công cộng như NIST National Vulnerability Database và cơ sở dữ liệu riêng của dự án.

- RetireJS là công cụ kiểm tra các phần mềm nguồn mở viết bằng JavaScript. Để giúp người dùng dễ sử dụng, dự án cung cấp nhiều cấu phần khác nhau, từ công cụ chạy bằng dòng lệnh cho tới các plugin cho Grunt, Gulp, Chrome, Firefox, ZAP, and Burp. RetireJS cũng cung cấp dịch vụ kiểm tra qua web. RetireJS lấy thông tin về lỗ hổng từ NIST NVD và nhiều nguồn khác, bao gồm các mailing list, các hệ thống theo dõi lỗi và blogs của các dự án JavaScript nổi tiếng.

- OSSIndex hỗ trợ nhiều công nghệ khác nhau, trích xuất dữ liệu từ NPM, Nuget, Maven Central Repository, Bower, Chocolatey và MSI (có nghĩa là hệ thống này hỗ trợ cả JavaScript, .NET/C# và Java). OSSIndex cũng cung cấp API tìm kiếm lỗ hổng miễn phí.

- Dependency-check là một công cụ nguồn mở chạy từ dòng lệnh của OWASP giúp xác định các cấu phần cần cho dự án và kiểm tra xem có các lỗ hổng bảo mật đã biết trong đó hay không dựa vào cơ sở dữ liệu của NIST NVD, có thể chạy độc lập hoặc kết hợp với các công cụ build phần mềm.

- Bundler-audit cũng là một công cụ kiểm tra mã nguồn mở nhưng chỉ tập trung vào Ruby Bundler. Dự án này lấy thông tin về các lỗ hổng bảo mật từ NIST NVD và RubySec. 

- Hakiri là công cụ thương mại giúp phân tích, tìm kiếm lỗ hổng bảo mật của các dự án Ruby và Rails trên GitHub. Dự án này cung cấp dịch vụ miễn phí cho các dự án nguồn mở nhưng thu tiền của các dự án khác. Hakiri dùng cơ sở dữ liệu của NVD và Ruby Advisory Database. Dự án này dự kiến sẽ hỗ trợ các nền tảng khác như Node.js và PHP, đồng thời thêm tính năng tích hợp với Slack, JIRA và Pivotal Tracker.

- Snyk là dịch vụ thương mại tập trung vào các gói JavaScript npm. Không chỉ cung cấp công cụ phát hiện lỗ hổng bảo mật trong các dự án JavaScript, Snyk còn giúp người dùng xử lý vấn đề bằng các hướng dẫn nâng cấp và các bản vá do họ tạo ra. Snyk có cơ sở dữ liệu về các lỗ hổng bảo mật riêng, tạo nên từ dữ liệu của NIST NVD và NSP. Snyk tập trung vào việc xử lý các lỗ hổng ở quy mô doanh nghiệp, với các công cụ cộng tác và tích hợp chặt chẽ với GitHub. Tổng giám đốc của Snyk cho biết họ sẽ xây dựng các công cụ cho phép lập trình viên xem xét và kiểm soát tốt hơn với những gói phần mềm nguồn mở chạy trên môi trường production.

- Gemnasium là công cụ thương mại với các gói dùng thử miễn phí, hỗ trợ Ruby, NPM (JavaScript), PHP, Python và Bower (JavaScript). Gemnasium có cơ sở dữ liệu riêng, lấy thông tin từ nhiều nguồn khác nhau. Tuy được rà soát thủ công hàng ngày nhưng những thông tin cập nhật không công bố tự động. Gemnasium cung cấp tính năng tự động cập nhật với thuật toán đặc biệt để kiểm thử một số tập thông minh chứ không kiểm tra tất cả các khả năng và do đó tiết kiệm khá nhiều thời gian. Một tính năng mới khác của Gemnasium là tích hợp với Slack: người dùng được thông báo qua Slack ngay khi có lỗ hổng bảo mật mới. Gemnasium có kế hoạch cung cấp phiên bản dành cho doanh nghiệp, cài đặt tại trung tâm dữ liệu của khách hàng, hỗ trợ nhiều ngôn ngữ hơn.

- SRC: CLR là một công cụ thương mại với các đặc tính thú vị. Cơ sở dữ liệu của nó lấy thông tin từ NIST NVD và nhiều nguồn khác. Ngoài công cụ chạy từ dòng lệnh, nó còn cung cấp nhiều loại plugin cho các môi trường phát triển tích hợp, các hệ thống deployment và các hệ thống quản lý mã nguồn. Điểm đặc biệt là Source Clear dùng phương pháp xác định lỗ hổng bảo mật cho người dùng biết lỗ hổng bảo mật của một môđun có thực sự được dùng đến trong ứng dụng hay không. Điều đó giúp giảm đáng kể những cảnh báo giả và tập trung vào những lỗ hổng thực sự. Source Clear đã có kế hoạch cung cấp phiên bản miễn phí.