Bảo mật ứng dụng web: mở đầu

“This site is secure”

Hầu hết các ứng dụng thường thông báo rằng chúng rất an toàn vì nó có sử dụng công nghệ SSL. Chẳng hạn, bạn có thể nhìn thấy dòng tương tự như thế này:

This site is absolutely secure. It has been designed to use 128-bit Secure Socket Layer (SSL) technology to prevent unauthorized users from viewing any of your information. You may use this site with peace of mind that your data is safe with us.

Người dùng thường bị thúc giục chứng thực certificate của trang web, cảm thấy an tâm với giao thức mã hóa cao cấp đang sử dụng, và tin tưởng nó với những thông tin cá nhân của mình.

Ngày càng nhiều tổ chức dẫn chứng sự tuân thủ các tiêu chuẩn PCI của họ để trấn an người dung rằng họ đang được an toàn. Chẳng hạn:

We take security very seriously. Our web site is scanned daily to ensure that we remain PCI compliant and safe from hackers. You can see the date of the latest scan on the logo below, and you are guaranteed that our web site is safe to use.

Thực sự, đa số các ứng dụng web là không an toàn, mặc dù công nghệ SSL được sử dụng rộng rãi và quét PCI thường xuyên. Con số thống kê dưới đây từ kết quả kiểm tra các ứng dụng web trong suốt từ 2007 đến 2011 cho thấy phần trăm các ứng dụng được tìm thấy bị ảnh hưởng bởi những nhóm lỗ hỏng bảo thông dụng:

§ Broken authentication (62%): nhóm lỗ hỏng này gồm nhiều khuyết điểm khác nhay trong cơ chế đăng nhập của ứng dụng có thể cho phép “kẻ phá hoại” đoán biết những mật khẩu kém, thực hiện tấn công brute-force hoặc vượt qua phần đăng nhập.

§ Broken access control (71%): lỗ hỏng này liên quan đến những trường hợp nơi ứng dụng mắc lỗi bảo vệ quyền truy cập vào dữ liệu và tính năng của nó, nghiêm trọng hơn là cho phép “kẻ phá hoại” thấy dữ liệu nhạy cảm của người dung khác được lưu trữ trên server.

§ SQL injection (32%): lỗ hỏng này cho phép “kẻ phá hoại” gửi đầu vào “độc” để can thiệp vào phần tương tác của ứng dụng với các back-end database. “Kẻ phá hoại” có thể lấy dữ liệu tùy ý từ ứng dụng, can thiệp vào phần logic của nó, hoặc thực thi lệnh trên database server.

§ Cross-site-scripting (94%): lỗ hỏng này cho phép “kẻ phá hoại” nhắm vào những người dùng khác của ứng dụng, nghiêm trọng là có thể tăng quyền truy cập vào dữ liệu của họ, thực hiện các hành động không được chứng thực, hoặc thực hiện các tấn công khác với họ.

§ Information leakage (78%): lỗ hỏng này liên quan đến các trường hợp nơi ứng dụng làm lộ thông tin nhạy cảm giúp cho “kẻ phá hoại” có thể phát triển một đợt tấn công vào ứng dụng thông qua việc xử lý lỗi không triệt để hoặc các hành vi khác.

§ Cross-site request forgery (92%): lỗ hỏng này có ý rằng người dùng của ứng dụng có thể bị thực thi những hành động không được định hướng trên ứng dụng trong ngũ cảnh và mức độ quyền hạn của họ. Lỗ hỏng cho phép một trang web độc hại được ghé thăm bởi nạn nhân nhằm tương tác với ứng dụng để thực hiện những hành động mà người dùng không có định hướng.

clip_image001

SSL là một công nghệ tuyệt vời để bảo vệ sự toàn vẹn và bảo mật của dữ liệu trong quá trình truyền nhận giữa trình duyệt phía người dùng và web server. Nó giúp chống lại những “kẻ phá hoại”, có thể cung cấp sự đảm bảo với người dùng về tình trạng ổn định của trang web mà họ đang tương tác. Nhưng nó không làm ngừng các đợt tấn công hướng trực tiếp vào các thành phần server hoặc client của một ứng dụng như hầu hết các đợt tấn công thành công thực hiện. Đặc biệt, nó không ngăn chặn bất kì lỗ hỏng nào như đã liệt kê, do đó, cho dù các trang web có sử dụng SSL, chúng sẽ vẫn còn các lỗ hỏng bảo mật.

Vấn đề bảo mật chính: người dùng có thể gửi đầu vào tùy thích.

Như với những ứng dụng phân bổ, các ứng dụng web đối mặt với vấn đề cơ bản là chúng phải ánh xạ để được bảo đảm. Vì client nằm ngoài tầm kiểm soát của ứng dụng, người dung có thể gửi đầu vào (input) tùy ý đến ứng dụng phía server. Ứng dụng phải giả định rằng tất cả đầu vào đều độc hại. Hơn nữa, ứng dụng phải thực hiện các bước để bảo đảm rằng những “kẻ phá hoại” không thể sử dụng đầu vào để xâm nhập ứng dụng bằng cách can thiệp vào logic và behavior của nó, do đó làm tặng sự truy cập không được chứng thực đến dữ liệu và tính năng của ứng dụng.

Vấn đề cốt lõi này thể hiện trong nhiều cách khác nhau:

§ Người dùng có thể tương tác với bất kì phần dữ liệu được truyền qua lại giữa client và server, gồm các tham số của request, cookie và HTTP header. Bất kì security control nào thực thi ở phía client, chẳng hạn như kiểm tra tính hợp lệ của đầu vào, có thể dẽ dàng bị đánh lừa.

§ Người dùng có thể gửi requet theo bất kì trình tự nào và có thể gửi các tham số hơn những gì mà ứng dung mong muốn. Bất kì giả định nào mà lập trình viên thực hiện cách người dùng tương tác với ứng dụng có thể bị vi phạm.

§ Người dùng không bị hạn chế chỉ có thể sử dụng trình duyệt web để truy cập vào ứng dụng. Có rất nhiều công cụ hiện hành hoạt động cùng, hoặc độc lập với trình duyệt giúp tấn công các ứng dụng web. Những công cụ này có thể tạo các request mà thông thường không trình duyệt nào sẽ làm và có thể tạo ra lượng request rất lớn một cách nhanh chóng để tìm và khai thác các vấn đề.

Dưới đây là một số ví dụ minh họa:

§ Thay đổi giá của sản phẩm trong một trường HTML form để mua sản phẩm với giá rẻ hơn.

§ Thay đổi một session token trong HTML cookie để thực hiện hijack session của người dùng được chứng thực khác.

§ Gỡ bỏ các tham số hiện tại được gửi đi để khai thác lỗ hỏng logic trong quá trình thực thi của ứng dụng.

§ Thay thế một số đầu vào sẽ được thực hiện bởi một back-end databse để tiêm câu truy vấn độc hại và truy xuất thong tin nhạy cảm.

Không cần phải nói gì thêm, SSL không làm gì để ngăn một “kẻ phá hoại” gửi đầu vào đến server. Nếu ứng dụng này có sử dụng SSL, đơn giản rằng những người dùng khác trong mạng không thể thấy hoặc chỉnh sửa dữ liệu của “kẻ phá hoại” đang thực hiện.

Tương lai của bảo mật ứng dụng web

Sau hơn một thập kỉ phổ biến, các ứng dụng web trên Internet ngày nay vẫn đầy rẫy những lỗ hỏng. Việc hiểu các mối đe dọa bảo mật với các ứng dụng web, và những cách khắc phục hiệu quả vẫn còn đang được phát triển.

Việc bảo mật ứng dụng web không phải là cố định ở mức độ nào đó, thậm chí dù các lỗ hỏng cũ và được hiểu khá rõ như SQL injection vẫn xuất hiện, sự xuất hiện của chúng cũng dần dần giảm bớt. Hơn nữa, các đối tượng này ngày càng trở nên khó tìm thấy và khắc phục. Những xu hướng ứng dụng web phổ biến hiện hành:

§ Web 2.0: khái niệm này đưa ra cho việc sử dụng chức năng biến chuyển hơn, cho phép nội dung được tại ra và thông tin chi sẻ bởi người dùng, và thông qua những công nghệ khác hỗ trợ tính năng này rộng rãi, bao gồm các HTTP request bất đồng bộ và tích hợp cross-domain.

§ Cloud computing: khái niệm này đưa ra cho các nhà cung cấp dịch vụ bên ngoài cho các phần khác nhau của chồng công nghệ (technology stack), bao gồm phần mềm ứng dụng, các nền tảng ứng dụng, phần mềm web server, cơ sở dữ liệu, phần cứng. Nó cũng tăng cường việc sử dụng các công nghệ ảo hóa trong các môi trường lưu trữ.

Đi theo những thay đổi công nghệ, những xu hướng này mang đến những kiểu tấn công mới và các biến thể của các kiểu tấn công đang có.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s