Thực tế thì CISA, Cục an ninh mạng và an ninh cơ sở hạ tầng thuộc chính phủ Mỹ, cùng Cục điều tra liên bang Mỹ FBI đã khuyến cáo mọi nhà phát triển ứng dụng và các lập trình viên từ bỏ những ngôn ngữ lập trình “không an toàn đối với bộ nhớ hệ thống điện toán” như C hay C++ từ lâu rồi.
Gần đây nhất, cả CISA lẫn FBI đều khuyến cáo các nhà phát triển phần mềm dừng việc “phát triển những sản phẩm mới để ứng dụng trong những cơ sở hạ tầng quan trọng hoặc những ngành nghề quan trọng đối với an ninh quốc gia, sử dụng những ngôn ngữ lập trình có lỗ hổng bộ nhớ như C hay C++, khi đã có những lựa chọn ngôn ngữ lập trình khác với khả năng truy xuất bộ nhớ an toàn hơn.” Theo hai cơ quan thuộc chính phủ Mỹ này, hiện giờ vẫn còn phát triển phần mềm bằng C và C++ sẽ làm tăng nguy cơ ảnh hưởng tới an ninh quốc gia, an ninh kinh tế và an toàn của người dân.
Hồi đầu năm nay, CISA cùng vài đối tác thuộc chính phủ các quốc gia đồng minh của Mỹ, bao gồm FBI, Trung tâm an ninh mạng thuộc chính phủ Úc, và trung tâm an ninh mạng thuộc chính phủ Canada đã công bố một bản báo cáo nghiên cứu có tên “Nghiên cứu an toàn bộ nhớ trong những dự án mã nguồn mở quan trọng.” Nghiên cứu này xem xét 172 dự án phần mềm mã nguồn mở đang được ứng dụng trong những ngành và cơ sở hạ tầng quan trọng của các quốc gia.
Kết quả nghiên cứu kể trên cho thấy, hơn một nửa số dự án phần mềm kể trên được viết bằng những ngôn ngữ lập trình có lỗ hổng trong việc truy xuất và ứng dụng bộ nhớ hệ thống. Trong tổng số những dòng code của 172 dự án ấy, 55% trong đó chứa lỗ hổng bảo mật.
Nói một cách cụ thể hơn thì, với những ngôn ngữ lập trình có lỗ hổng bộ nhớ, “chúng sẽ yêu cầu các lập trình viên phải quản lý bộ nhớ và vận hành chúng một cách hợp lý. Những vấn đề và lỗi chắc chắn sẽ xảy ra, tạo ra những lỗ hổng bảo mật bộ nhớ hệ thống, ví dụ như làm quá tải bộ nhớ đệm chẳng hạn. Lợi dụng thành công những lỗ hổng bảo mật như thế này có thể cho phép đối phương kiểm soát phần mềm, hệ thống và cả dữ liệu.”
Gần đây nhất, cả CISA lẫn FBI đều khuyến cáo các nhà phát triển phần mềm dừng việc “phát triển những sản phẩm mới để ứng dụng trong những cơ sở hạ tầng quan trọng hoặc những ngành nghề quan trọng đối với an ninh quốc gia, sử dụng những ngôn ngữ lập trình có lỗ hổng bộ nhớ như C hay C++, khi đã có những lựa chọn ngôn ngữ lập trình khác với khả năng truy xuất bộ nhớ an toàn hơn.” Theo hai cơ quan thuộc chính phủ Mỹ này, hiện giờ vẫn còn phát triển phần mềm bằng C và C++ sẽ làm tăng nguy cơ ảnh hưởng tới an ninh quốc gia, an ninh kinh tế và an toàn của người dân.
Hồi đầu năm nay, CISA cùng vài đối tác thuộc chính phủ các quốc gia đồng minh của Mỹ, bao gồm FBI, Trung tâm an ninh mạng thuộc chính phủ Úc, và trung tâm an ninh mạng thuộc chính phủ Canada đã công bố một bản báo cáo nghiên cứu có tên “Nghiên cứu an toàn bộ nhớ trong những dự án mã nguồn mở quan trọng.” Nghiên cứu này xem xét 172 dự án phần mềm mã nguồn mở đang được ứng dụng trong những ngành và cơ sở hạ tầng quan trọng của các quốc gia.
Kết quả nghiên cứu kể trên cho thấy, hơn một nửa số dự án phần mềm kể trên được viết bằng những ngôn ngữ lập trình có lỗ hổng trong việc truy xuất và ứng dụng bộ nhớ hệ thống. Trong tổng số những dòng code của 172 dự án ấy, 55% trong đó chứa lỗ hổng bảo mật.
Nói một cách cụ thể hơn thì, với những ngôn ngữ lập trình có lỗ hổng bộ nhớ, “chúng sẽ yêu cầu các lập trình viên phải quản lý bộ nhớ và vận hành chúng một cách hợp lý. Những vấn đề và lỗi chắc chắn sẽ xảy ra, tạo ra những lỗ hổng bảo mật bộ nhớ hệ thống, ví dụ như làm quá tải bộ nhớ đệm chẳng hạn. Lợi dụng thành công những lỗ hổng bảo mật như thế này có thể cho phép đối phương kiểm soát phần mềm, hệ thống và cả dữ liệu.”
CISA ước tính, trong số những lỗ hổng bảo mật hệ thống máy tính hay máy chủ, 70% trong số đó là những lỗ hổng bảo mật liên quan tới bộ nhớ hệ thống. Để giải quyết tình trạng này, cục an ninh mạng thuộc chính phủ Mỹ khuyến cáo các lập trình viên chuyển sang sử dụng những ngôn ngữ an toàn hơn với bộ nhớ như Rust, Java, C#, Go, Python và Swift. Những ngôn ngữ lập trình này đều tích hợp những công cụ bảo vệ chống lại những lỗi liên quan bộ nhớ phổ biến.
Vấn đề lại nằm ở chỗ, những phần mềm viết bằng C hay C++ không phải muốn là có thể búng tay biến chúng thành code Rust hay C# được. Lấy ví dụ Rust trên nền Linux. Ngay cả khi được Linus Torvalds hỗ trợ, tốc độ chuyển giao code lập trình trên nền Linux từ C++ sang Rust cũng đang vô cùng chậm chạp.
Nguyên nhân của tình trạng này đã được chính cha đẻ kernel HĐH Linux chia sẻ tại hội thảo Open Source Summit Europe 2024. Những lập trình viên còn ở lại với C và C++ có những quan điểm bảo vệ lựa chọn của họ cực đoan tới mức khiến chính những người muốn cải thiện độ phủ của code viết bằng Rust cũng phải từ bỏ những nỗ lực của họ.
Đồng ý một chuyện, vẫn có thể viết code C bảo mật bộ nhớ tốt. Nhưng không phải ai cũng có kinh nghiệm để làm việc đó. Và vấn đề thứ hai là chuyển đổi code từ C sang Rust hoàn toàn không phải chuyện nhỏ, kể cả về thời gian, tài nguyên và kinh phí. Những ngôn ngữ lập trình lâu đời, bị coi là khó sử dụng vẫn cứ được tin tưởng vì nhờ chúng, các lập trình viên có thể viết ra được những ứng dụng và phần mềm tối ưu tốt cho phần cứng hệ thống máy tính.
Và nếu phải lựa chọn giữa bảo mật và hiệu năng, hầu hết thời gian, các doanh nghiệp và lập trình viên sẽ chọn hiệu năng của phần mềm. Bên cạnh chi phí chuyển đổi ngôn ngữ lập trình, các đơn vị phát triển ứng dụng và phần mềm cũng phải đối mặt với những chi phí khác như thay đổi công cụ phát triển, công cụ sửa lỗi, và framework chạy thử phần mềm để hỗ trợ những ngôn ngữ lập trình mới. Rồi lại đến công đoạn ghép những ứng dụng được viết bằng ngôn ngữ lập trình mới với code và thư viện cũ.
Tuy nhiên, CISA vẫn mong muốn điều đó diễn ra, và cơ quan chính phủ Mỹ này đã đặt ra mục tiêu trước ngày 1/1/2026, tất cả các doanh nghiệp phần mềm đang làm việc để phục vụ các hệ thống quan trọng đối với an ninh hay cơ sở hạ tầng quan trọng của Mỹ phải có kế hoạch chuyển đổi ngôn ngữ lập trình phần mềm của họ. Theo CISA, lợi ích về lâu dài của quá trình chuyển đổi là đủ lớn để khỏa lấp những vấn đề liên quan tới chi phí và công sức.
Theo The Register