Ngôn ngữ lập trình: Đã đến lúc ngừng sử dụng C và C++ cho các dự án mới.

10:00 | 15/12/2022 | GIẢI PHÁP KHÁC
Mark Russinovich, Giám đốc công nghệ của Microsoft Azure, cho biết rằng các nhà phát triển nên tránh sử dụng ngôn ngữ lập trình C hoặc C++ trong các dự án mới vì lo ngại về bảo mật và độ tin cậy và khuyến nghị nên sử dụng ngôn ngữ Rust.

Rust được bắt đầu từ dự án cá nhân của một nhân viên tại Mozilla có tên là Graydon Hoare vào năm 2006 và phiên bản phát hành 1.0 đầu tiên được ra mắt vào tháng 5/2015. Được thiết kế cho hiệu suất, tốc độ và an toàn trong những môi trường lớn, đặc biệt là vấn đề an toàn về bộ nhớ, Rust hiện đang được ứng dụng trong nhiều sản phẩm, dự án của nhiều công ty lớn như Meta, Amazon Web Services (AWS) hay Microsoft cho các chương trình của Windows, Azure,…

Lỗi an toàn bộ nhớ là bề mặt tấn công lớn hiện nay mà các tin tặc có thể tận dụng chúng để khai thác. Về vấn đề này, các chuyên gia bảo mật đánh giá cao "khả năng đảm bảo an toàn cho bộ nhớ" của Rust, giúp giảm nhu cầu quản lý thủ công bộ nhớ của chương trình và giảm nguy cơ lỗi bảo mật liên quan đến bộ nhớ thường xuất hiện trong các ngôn ngữ như C và C++, bao gồm Chrome, Android, nhân Linux và Windows.

Microsoft đã kết luận về điều này vào năm 2019 sau khi tiết lộ 70% bản vá của họ trong 12 năm trước đó là liên quan đến các lỗi an toàn bộ nhớ do phần lớn chương trình của Windows được viết bằng C và C++. Tương tự, Google Chrome cũng đã cân nhắc với những phát hiện của riêng mình vào năm 2020, đồng thời tiết lộ rằng 70% các lỗi bảo mật nghiêm trọng của Chrome được viết chủ yếu bằng ngôn ngữ C++ là lỗi quản lý bộ nhớ an toàn.

Trong Hội nghị thượng đỉnh mã nguồn mở Châu Âu, Linus Torvalds - người đặt nền tảng và phát triển Linux cho biết: “Trừ những vấn đề không lường trước được, Rust sẽ được chấp nhận trong  kernel Linux 6.1”. Điều này cho thấy Rust hiện đã sẵn sàng như một ngôn ngữ thực tế để triển khai các dự án trên Linux.

Một trong những lý do Rust được các lập trình viên ưa thích đó là ngôn ngữ này ưu tiên sự an toàn nhưng không có bộ sưu tập rác (Gabbage collector – GC), vốn dĩ được sử dụng để xử lý việc quản lý bộ nhớ. Go của Google là một ngôn ngữ GC, trong khi Rust thì không. Với hệ thống quyền sở hữu của Rust phân tích việc quản lý bộ nhớ của chương trình tại thời điểm biên dịnh, qua đó đảm bảo lỗi do quản lý bộ nhớ sẽ không xảy ra và việc thu thập rác là không cần thiết nữa.

Russinovich cho biết: "Nói về ngôn ngữ lập trình, đã đến lúc tạm dừng bắt đầu bất kỳ dự án mới nào với C và C++. Vì lợi ích bảo mật và độ tin cậy, các nhà phát triển nên sử dụng Rust cho những trường hợp yêu cầu ngôn ngữ không dùng GC".

Trong nỗ lực giảm thiểu các lỗi về an toàn bộ nhớ, Google đã công bố Rust được sử dụng trong Dự án mã nguồn mở của Android (AOSP) –  là một bản phân phối của Linux vào tháng 4/2021 trên cơ sở của mã C/C++. Cũng trong tháng này, AOSP cũng ủng hộ việc xem Rust như một tùy chọn cho mã mới trong nhân Linux.

Rust là một sự thay thế đầy hứa hẹn cho C và C++, đặc biệt cho lập trình viên hệ thống, các dự án cơ sở hạ tầng, phát triển phần mềm nhúng,… nhưng không phải ứng dụng được mọi nơi và không phải trong tất cả các dự án. Gần đây, Meta đã quảng bá Rust như một ngôn ngữ phía máy chủ được hỗ trợ chính cùng với C++, AWS đầu tư vào Rust cho phần mềm cơ sở hạ tầng của mình, trong khi đó các kỹ sư của Azure đã sử dụng nó để xây dựng các công cụ đám mây để kiểm tra các mô-đun WebAssembly trong Kubernetes. Tuy nhiên, mặc dù quan tâm đến Rust nhưng đại diện Chrome cho biết, chỉ riêng việc chuyển sang Rust sẽ không loại bỏ được một tỷ lệ đáng kể các lỗ hổng bảo mật trong nhiều năm. Thay vào đó, Chrome đang mang lại sự an toàn cho bộ nhớ với cơ sở mã C++ của nó.

Bob Rudis, một nhà nghiên cứu bảo mật của công ty an ninh mạng GreyNoise Intelligence, người trước đây từng làm việc với Rapid7, đã lưu ý rằng các nhà phát triển có thể mang những quan điểm, thói quen bảo mật không an toàn tương tự khi sử dụng Rust.

Steven J. Vaughan-Nichols, chuyên gia công nghệ của ZDNet, đồng ý với quan điểm Rudis: "Các lập trình viên có thể viết mã "an toàn" bằng C hoặc C++, nhưng nó sẽ khó khăn hơn nhiều, bất kể họ sử dụng ngôn ngữ nào, so với Rust. Nên nhớ, các lập trình viên vẫn có thể gây ra những mối đe dọa bảo mật trong Rust, nhưng nó có thể tránh được rất nhiều vấn đề cũ liên quan đến bộ nhớ".

Anh Tuấn

(theo ZDNet)

Tin cùng chuyên mục

Tin mới