Các nguyên nhân chính gây ra rủi ro bảo mật

(Nội dung chính tại mini workshop “Rủi ro bảo mật & An toàn thông tin” của VSEC)
Vào một ngày hè cuối tháng 4/2017, ông Trương Đức Lượng, Giám đốc Công ty VSEC, đã có một bài chia sẻ về đề tài rất nóng hiện nay là rủi ro bảo mật thông tin tại một cuộc hội thảo nhỏ do VSEC tổ chức tại Hà Nội, Việt Nam. Hội thảo đề cập khá nhiều phương diện mà rủi ro bao mật thông tin có thể được gây ra ở phía máy chủ cũng như máy trạm.

Rủi ro phía máy chủ

Các rủi ro bảo mật liên quan đến máy chủ có thể do nhiều nguyên nhân, chẳng hạn như cơ chế xác thực yếu, tham chiếu các đối tượng không an toàn, thiếu chức năng kiểm soát truy cập, và sử dụng các thành phần có lỗi bảo mật.

Cơ chế xác thực yếu (Poor Authorization and Authentication) xảy ra chủ yếu do thiếu hoặc không kiểm soát xác thực. Một số ứng dụng tại Việt Nam thường sử dụng các giá trị không đổi như IMEI, UUID làm phương thức xác thực duy nhất. Tại hội thảo, diễn giả đưa ra một số ví dụ về việc một ứng dụng sử dụng UUID để làm phương thức xác thực, và một vài ví dụ về việc ứng dụng phân các API ra thành các lớp theo mức độ bảo mật khác nhau (Low Security, Medium Security, High Security).

Tham chiếu các đối tượng không an toàn (Insecure Direct Object Reference) xảy ra khi lập trình viên để lộ tham chiếu tới các đối tượng trong hệ thống (file, thư mục, các khóa trong cơ sở dữ liệu) mà không kiểm soát sự truy cập. Kẻ tấn công có thể truy cập tới các dữ liệu trái phép. Đây là một trong những chủ đề nhiều khách mời chú ý đến nhất bởi mức độ nguy hiểm của nó. Diễn giả cung cấp hình ảnh một số app mobile banking của ngân hàng gặp phải lỗi này. Cách phòng chống được đưa ra là sử dụng Access Reference Map và Access Modal Diagram. Một khách mời chia sẻ đã từng sử dụng Access Reference Map nhưng lại làm rối các ID ở phía client, vì vậy không an toàn. Một khách mời khác chia sẻ không sử dụng Access Reference Map nhưng để trường ID rất phức tạp, kẻ tấn công khó có thể đoán ra được.
Thiếu chức năng kiểm soát truy cập (Missing Function Level Access Control) xảy ra khi server không kiểm soát user khi sử dụng hàm này có quyền thực thi hay không. Điều này dẫn đến kẻ tấn công có thể sử dụng các quyền không được phép. Diễn giả đưa ra một số hình ảnh về trường hợp bất kì người nào cũng có thể sử dụng hàm của người quản trị, lấy thông tin từ hệ thống Mail server.

Sử dụng các thành phần có lỗi bảo mật (Using Component with Known Vulnerabilities) xảy ra khi server sử dụng các thành phần (hệ điều hành, framework, thư viện, v.v…) đã có các lỗ hổng được công bố. Một số lỗi đã được tìm ra và khai thác tự động bởi các vài công cụ, tuy nhiên chính điều này làm tăng nguy cơ hệ thống bị tấn công. Biện pháp tốt nhất để phòng chống rủi ro này là thường xuyên cập nhật hệ thống lên các phiên bản mới nhất, cắt giảm các chức năng không cần thiết. VSEC cũng chia sẻ với mọi người một tình huống khi triển khai dịch vụ cho đối tác, bên đối tác biết rằng framework đó cũ, có nhiều lỗ hổng nhưng không thể cập nhật lên phiên bản mới được vì điều này làm ảnh hưởng đến toàn bộ hệ thống bên họ.

20191225151551017.png

WannaCry, virut ransomware đang làm mưa làm gió tại 150 nước hiện nay

(Nguồn: theverge.com)

Rủi ro phía máy trạm

Một số nguyên nhân gây ra rủi ro bảo mật thông tin từ phía máy trạm bao gồm: Lưu trữ các thông tin không an toàn, Lỗi rò rỉ dữ liệu không mong muốn, Sử dụng đường truyền không an toàn, Sử dụng thuật toán mã hóa yếu, và Thiếu các phương thức bảo vệ tệp tin thực thi.

Lưu trữ các thông tin không an toàn (Insecure Data Storage): Xảy ra khi người lập trình lưu các thông tin quan trọng vào trong thiết bị nhưng không mã hóa hay có biện pháp bảo vệ. Khi diễn ra đưa ra một số trường hợp lưu Token trong máy dưới dạng cleartext, các khách mời cũng chia sẻ về một số phương án, cách phòng chống khi gặp những trường hợp như vậy.

Lỗi rò rỉ dữ liệu không mong muốn (Unintended Data Leakage): Lỗi này thuộc về hệ điều hành và framework, lỗi này nằm ngoài mong muốn của lập trình viên. Một số điểm dễ bị lộ thông tin như bộ đệm copy/paste, log hệ thống, các dữ liệu phân tích gửi cho bên thứ ba. Các khách mời cũng chia sẻ về cách cài ứng dụng nào để phòng chống việc bị hiện ảnh chụp màn hình trên Recent App, chống copy những gì, v.v…

Sử dụng đường truyền không an toàn (Insufficient Transport Layer Protection): Lỗi này xảy ra khi các ứng dụng không sử dụng các giao thức mã hóa, hoặc có sử dụng thì sử dụng các phiên bản cũ, hoặc chỉ mã hóa một phần của đường truyền. Diễn giả có đưa ra một số thông số thống kê về số lượng app không kiểm tra certificate của server, bỏ qua các lỗi về certificate. Diễn giả có đưa thêm cách phòng chống mà một số ứng dụng của Việt Nam thường dùng như mã hóa gói tin gửi lên, tạo signature cho gói tin. Nhưng diễn giả cũng gợi ý thêm rằng nên mã hóa cả gói tin nhận về, và đưa ra một ví dụ về việc khai thác bằng cách thay đổi các thông tin trả về từ phía server.

Sử dụng thuật toán mã hóa yếu (Broken Cryptography): Lỗi này ảnh hưởng đến tính bí mật của dữ liệu cần mã hóa. Diễn giả đưa ra hình ảnh một số ứng dụng hardcode mật khẩu mã hóa trong tệp tin, sử dụng mã hóa base64 không an toàn, v.v…

Thiếu các phương thức bảo vệ tệp tin thực thi (Lack of Binary Protections): Diễn giả trình bày về quá trình biên dịch từ mã java sang tệp tin apk, và giải thích tại sao tệp tin apk lại dễ dàng bị dịch ngược. Khi bị dịch ngược, các thông tin nhạy cảm bị lộ như: API, các phương thức mã hóa, giải mã, cấu trúc hoạt động của chương trình. Diễn giả cũng đưa ra một số công cụ làm rối như DexGuard, ProGuard cho Android và một số kĩ thuật làm rối.

Kết luận

Đề cập trong cuộc hội thảo của ông Lượng, Giám đốc Công ty VSEC, chỉ là các nguyên nhân chủ yếu của rủi ro bảo mật thông tin. Ngoài ra còn nhiều rủi ro khác nữa. Tuy nhiên, nếu khắc phục tốt các rủi ro này thì hệ thống CNTT của doanh nghiệp đã tránh được 91% nguy cơ. Ngày nay, thế giới càng ngày càng kết nối, tại điều kiện thuận lợi cho công việc của chúng ta nhưng cũng hỗ trợ bọn tin tặc tốt hơn. Đã đến lúc thực sự nghiêm túc nhìn nhận vấn đề bảo mật thông tin!