Rate this post

Một lỗi ảnh hưởng đến iPhone, một lỗi khác ảnh hưởng đến Windows và lỗi thứ ba ảnh hưởng đến các máy chủ chạy Linux có thể bắt nguồn từ nguyên nhân một phần mềm đang khai thác được viết bằng ngôn ngữ lập trình mà có thể gây ra một loại lỗi gọi là “memory unsafety”. Do không thể ngăn chặn được các loại lỗi này, những ngôn ngữ lập trình như C và C++ đã vô tình tạo điều kiện cho một luồng lỗ hổng bảo mật máy tính nghiêm trọng lây lan và phát triển gần như không có hồi kết trong nhiều năm.

Trong một ngôn ngữ lập trình không an toàn cho bộ nhớ, nó sẽ xem xét bất cứ ngóc ngách nào trong bộ nhớ để tìm ra phần tử thứ 11 (nếu phần tử này có tồn tại) và cố gắng truy cập vào phần tử này. Đôi khi điều này sẽ dẫn đến sự cố, ngay cả khi phần bộ nhớ đó không liên quan gì đến danh sách của chúng ta. Loại lỗ hổng bảo mật này được gọi là lỗi tràn bộ đệm (buffer-overflow), và đây là một trong những loại lỗ hổng bảo mật liên quan đến bộ nhớ phổ biến nhất. HeartBleed cũng là một lỗ hổng buffer-overflow và đã tác động đến 17% các máy chủ web bảo mật trên internet. Cụ thể, HeartBleed cho phép đọc 60 kilobyte các danh sách, bao gồm cả mật khẩu và các dữ liệu khác của người dùng.

Những Ngôn ngữ lập trình dễ bị Hack nhất

Ngoài ra, cũng có các loại lỗ hổng bảo mật bộ nhớ khác liên quan đến C/C ++. Các ví dụ có thể kể đến là type confusion (trộn lẫn các loại giá trị tồn tại tại một vị trí trong bộ nhớ), use after free (sử dụng một phần bộ nhớ sau khi bạn đã hoàn tác các tác vụ cần thiết với hệ điều hành) và use of uninitialized memory (sử dụng một phần không gian bộ nhớ trước khi bạn lưu trữ bất cứ thứ gì trong đó). Cùng với nhau, chúng tạo thành một số lỗ hổng phổ biến nhất trên các phần mềm được sử dụng rộng rãi như Firefox, Chrome, Windows, Android và iOS. Các chuyên gia bảo mật đã theo dõi cũng như đưa ra những các tư vấn bảo mật cho các nền tảng này trong nhiều năm, và họ nhận thấy rằng trong hầu hết bản phát hành cho các nền tảng này, hơn một nửa các lỗ hổng là có liên quan đến mất an toàn bộ nhớ. Đáng lo ngại hơn, các lỗ hổng nghiêm trọng trong số đo (nói chung là các lỗ hổng có thể dẫn đến việc thực thi mã từ xa, cho phép kẻ tấn công có thể chạy bất kỳ mã nào chúng muốn trên máy tính của bạn, đây thường là loại lỗ hổng nghiêm trọng nhất) hầu như luôn đe dọa trực tiếp đến sự an toàn của bộ nhớ.

Nếu những lỗ hổng này trở nên phổ biến, chúng có thể gây ra nhiều thiệt hại trên diện rộng. Nhưng tại sao mặc dù chứa đứng những lỗ hổng nghiệm trong như vậy mà các ngôn ngữ lập trình này vẫn còn được sử dụng phổ biến? Nguyên nhân đầu tiên đó là tuy rằng hiện nay không thiếu các ngôn ngữ lập trình có thể ngăn ngừa các lỗ hổng gây mất an toàn cho bộ nhớ, nhưng C và C++ là những ngôn ngữ lập trình đã có tuổi đời lên đến hàng thập kỷ, được sử dụng rất phổ biến và gần như đã trở thành một “tôn giáo”, trong khi các ngôn ngữ có thể bảo đảm an toàn bộ nhớ có thể sử dụng cho lập trình cấp thấp như trình duyệt web và hệ điều hành, đơn cử như Rust và Swift… mới chỉ bắt đầu được biết đến nhiều hơn một chút.

Cuối cùng, vấn đề lớn nhất là nhiều nhà phát triển không tin rằng bảo mật trong ngôn ngữ lập trình là một vấn đề lớn. Nhiều kỹ sư phần mềm tin rằng vấn đề không phải là các ngôn ngữ như C/C++ tạo điều kiện thuận lợi cho các lỗ hổng này được khai thác, mà là do các nhà phát triển khác đã viết mã lỗi. Theo lý thuyết này, vấn đề không phải là việc cố gắng lấy mục thứ 11 trong danh sách 10 mục có thể dẫn đến lỗ hổng nghiêm trọng, mà là ở chỗ ai đó đã viết mã cố gắng lấy mục thứ 11 ở vị trí đầu tiên, và họ là một kỹ sư hoặc là không đủ trình độ hoặc là không đủ kỷ luật đạo đức nghề nghiệp. Nói cách khác, một số người nghĩ rằng vấn đề không nằm ở chính ngôn ngữ lập trình, mà là do một số người không biết sử dụng các ngôn ngữ lập trình sao cho tốt.

Phần mềm độc hại mới chỉ tấn công người giàu

Bình luận