Yếu tố an ninh trong vòng đời phát triển phần mềm

14:02 | 03/04/2007

Meng-Chow Kang là tư vấn trưởng về an ninh và bí mật cá nhân khu vực Châu Á Thái Bình Dương của Công ty Microsoft,Trưởng nhóm nghiên cứu về Kiểm soát an ninh và tiêu chuẩn hóa dịch vụ trong ISO/IEC JTC1 SC27, Trợ lý biên tập câu hỏi số 6 (An ninh mạng), nhóm nghiên cứu 17, ITU-T và là Chủ tịch Ủy ban kỹ thuật về tiêu chuẩn hóa an ninh IT và Bí mật cá nhân của ITSC, Singapore.

Giới thiệu
Khai thác lỗ hổng an ninh trong phần mềm là một trong những kỹ thuật tấn công mạng phổ biến nhất hiện nay. Một điều nguy hiểm là khoảng thời gian từ lúc phát hành một bản vá an ninh đến lúc hoàn thành một đoạn mã khai thác lỗ hổng đó đang bị rút ngắn lại một cách nhanh chóng. Như được trình bày trong dự án HoneyMonkey, việc khai thác lỗ hổng an ninh trước hoặc ngay khi chúng được công bố không chỉ đơn thuần là mối đe dọa trong môi trường đầy rủi ro chúng ta đang sống mà hiện nay đó đang là một thực tế. Việc phát triển các phần mềm an toàn cũng không còn là một lựa chọn cho các công ty phần mềm và lập trình viên mà là một điều bắt buộc. Các phần mềm phải vững vàng hơn trước những dạng tấn công ngày càng tinh vi, và phải đòi hỏi ít hơn các hoạt động cập nhật thông qua các bản vá, đồng thời tạo nên một hệ thống quản lý an ninh có hiệu suất và hiệu quả cao hơn.
Sáng kiến về điện toán tin cậy của Microsoft
Để đối phó với thực trạng trên, với tư cách là một bộ phận trong Sáng kiến về điện toán tin cậy của Microsoft được khởi xướng từ tháng Giêng năm 2002, một khuôn khổ tổng quát điều chỉnh yếu tố an ninh trong phát triển phần mềm đã được xây dựng. Khuôn khổ này bao gồm bốn nguyên tắc chính, được biết đến như là SD3+C - An toàn từ thiết kế, An toàn trong mặc định, An toàn trong triển khai và Văn hoá về an ninh mạng.
Nguyên tắc An toàn từ thiết kế hướng tới thay đổi cách thức kiến trúc, thiết kế và phát triển phần mềm, nhờ đó các phần mềm có thể bảo vệ chính mình và bảo vệ thông tin mà chúng đang xử lý cũng như chống lại các dạng tấn công. Khuôn khổ này quy định cách thức mô hình hóa nguy cơ an ninh để có được thông tin rõ ràng về những rủi ro đi kèm với mã nguồn của phần mềm, quy định việc học tập và thực hành các kỹ thuật viết mã phần mềm an toàn để giám sát và truy tìm các vấn đề về an ninh dễ dàng hơn ngay cả trước khi phần mềm thực sự được phát triển, đồng thời chúng cũng sẽ có độ vững vàng, ổn định cao hơn trước các dạng tấn công đã biết.
An toàn trong Mặc định là việc thay đổi cách thức theo đó trạng thái mặc định của một hệ thống hoặc một phần mềm được cài đặt với mục tiêu nâng cao mức độ an toàn và giảm tiết diện tiếp xúc với tấn công. Ví dụ: cần phải thiết kế ra các dịch vụ để chúng không nhất thiết phải yêu cầu có một cấp độ ưu tiên cao mới thi hành được hoặc phải vô hiệu hóa các dịch vụ khác không thường xuyên được sử dụng theo mặc định.
An toàn trong Triển khai bàn về cung cấp các công cụ và hướng dẫn cho các nhà quản trị mạng nhằm hỗ trợ việc triển khai và khai thác an toàn phần mềm trong môi trường thực tế. Đây là một tổ hợp của những hướng dẫn chi tiết dựa trên các quy tắc tối ưu thu thập được từ các doanh nghiệp và cơ quan Chính phủ, được đưa ra ứng dụng nhằm cung cấp mức độ hỗ trợ cần thiết.
Phát triển Văn hóa về An ninh gắn liền với việc truyền thông thường xuyên về an ninh là một nguyên tắc cơ bản khác xuất phát từ thực tế là không thể có được mức độ an toàn hoàn hảo trong thế giới thực. Văn hóa về An ninh sẽ truyền tải một số ý tưởng chủ đạo về an ninh trong cộng đồng các lập trình viên và chuyên viên về công nghệ thông tin để họ tư duy về nhu cầu an ninh cũng như đảm bảo rằng các nguy cơ an ninh tiềm ẩn được quản lý một cách thích hợp trong toàn bộ vòng đời của hệ thống. Khi một lỗ hổng an ninh được phát hiện, các lập trình viên phải có trách nhiệm thông báo với các nhà quản trị mạng hoặc người sử dụng để giúp đỡ họ khắc phục sự cố, hoặc triển khai các hoạt động đối phó cần thiết trước khi các bản vá an ninh được phát hành.
Vòng đời phát triển an ninh
Yêu cầu về an ninh từ chỗ chỉ là những nguyên tắc hiện nay đã được tích hợp vào trong quá trình phát triển phần mềm, và kết quả là một quy trình về Vòng đời Phát triển An ninh chính thống đã ra đời (Formal Security Development Lifecycle - SDL). SDL quy định về những yêu cầu cụ thể liên quan đến an ninh trong mỗi giai đoạn của quá trình phát triển phần mềm, bao gồm cả việc mô hình hóa nguy cơ an ninh, rà soát mức độ an ninh của mã nguồn, các phép kiểm tra an ninh trong nội bộ và từ bên ngoài, cùng với một quy trình phản ứng trước tấn công an ninh để có thể đối phó với những loại lỗ hổng an ninh mới xuất hiện (xem Hình 1).



Hình 1: Các quy trình trong vòng đời phát triển an ninh


Tính đến nay, các kết quả do SDC3+C và SDL mang lại đều rất tích cực trên mọi sản phẩm được phát triển theo quy trình mới. Ví dụ như, hệ điều hành Windows 2000 Server là một phần mềm được phát hành trước khi thực hiện khuôn khổ an ninh nói trên nên đã có tới 64 bản tin an ninh ở các cấp độ cực kỳ nghiêm trọng và nghiêm trọng chỉ sau 628 ngày kể từ khi phần mềm được phát hành. Với hệ điều hành Windows 2003 Server – một phần mềm được phát triển theo quy trình mới, số bản tin an ninh này giảm xuống chỉ còn 27 trong cùng một khoảng thời gian kể từ sau khi được phát hành. Cùng một mức độ cải thiện cũng đã được ghi nhận ở các phần mềm SQL Server 2000 SP3 và Exchange 2000 Server SP3, trong đó số bản tin an ninh đã tương ứng giảm từ 16 xuống còn 3, từ 8 xuống còn 2, trong khoảng thời gian tương ứng là 24 và 18 tháng kể từ khi hai phần mềm này được phát hành.
Những kết quả tích cực do các quy trình của SD3+C và SDL mang lại đã chứng minh tầm quan trọng của việc áp dụng các quy trình an ninh chuẩn trong cộng đồng lập trình viên cũng như trong toàn ngành công nghiệp phần mềm. Nhiều bài viết về phát triển mã nguồn an toàn, mô hình hóa nguy cơ an ninh và về SDL đã được ấn hành hoặc lưu hành trực tuyến (tham khảo theo các đường dẫn dưới đây). Việc phân tích tính năng an ninh của mã nguồn cùng với các công cụ kiểm tra như là FXCop, và PREfast đã trở thành một bộ phận không thể tách rời của bộ công cụ phát triển mới Visual Studio 2005. 
Kết luận

Là một bộ phận của Sáng kiến về Điện toán tin cậy của Microsoft, SDL đã đạt được những kết quả rất đáng ghi nhận. Nó cung cấp một phương thức để đạt đến điện toán an toàn trong đó sự cải thiện thường xuyên chính là nhân tố then chốt đảm bảo tính hiệu quả trong giải quyết những vấn đề về an ninh mạng mà chúng ta đang phải đối mặt hiện nay. Đối với các cơ quan Chính phủ và các doanh nghiệp, việc thực hiện SDL là một bước đi hết sức quan trọng trong quản lý rủi ro về an ninh thông tin trong phát triển và sử dụng các hệ thống thông tin