Lỗ hổng bảo mật của các ứng dụng web
Các lỗ hổng bảo mật của các ứng dụng web:
Mặc dù có rất nhiều lỗ hổng bảo mật của các ứng dụng web, nhưng chi phí cho việc bảo mật thông tin không được đưa vào ngân sách hoặc thậm chí không được xem xét trong suốt quá trình phát triển dự án.
Có một bài báo rất lạ lùng viết về chủ đề này trên tạp chí BYTE của Aleksey Lukatsky, Giám đốc phát triển kinh doanh của công ty Cisco System:
“Tác giả đã xem xét một số lượng lớn các website của các công ty thiết kế web, bao gồm cả những công ty rất nổi tiếng, cung cấp dịch vụ thiết kế web rất đắt tiền. Nhưng thật đáng ngạc nhiên là không một ai trong số các công ty này đề cập đến khái niệm “website bảo mật” trong hồ sơ của họ.
Hơn nữa, trong các mẫu hợp đồng cũng không chứa những điều khoản về vấn đề bảo mật…
Có phải đây là sự kém cỏi của các công ty thiết kế hay là dụng ý không muốn động chạm vào một khoảng tối của lĩnh vực công nghệ thông tin, nơi mà có rất nhiều điều ngạc nhiên? Thật không may là chúng ta bắt buộc phải thừa nhận nó. Tôi sẽ cố gắng minh họa chủ đề này dựa trên những kinh nghiệm của tôi từ việc tham gia vào một số lượng lớn các dự án phát triển web…”
Toàn bộ bài báo bạn có thể tìm đọc ở chuyên mục Secured site
Sau đây là một vài lỗ hổng bảo mật thường gặp nhất:
- Cross Site Scripting
- SQL-injection
- PHP-injection
- HTTP Response Splitting
- HTML code injection
- File Inclusion
- Directory Traversal
- …
Các lỗ hổng bảo mật ở trên có thể xuất hiện trong tất cả các ứng dụng web bất kể nó được phát triển bởi các chuyên gia độc lập hay các công ty phần mềm nổi tiếng nhất. Mặc dù vậy, nhờ kiến trúc hệ thống, thông qua việc kiểm tra sản phẩm cuối cùng và tỉ mỉ các lỗ hổng bảo mật trong tất cả các bước phát triển phần mềm là nhân tố cho phép loại trừ được các lỗ hổng bảo mật này.
Cross Site Scripting (XSS):
Cross Site Scripting hay XSS là khả năng thêm một đoạn mã HTML bất kì vào trang có lỗi bảo mật. Đoạn mã code thêm vào sẽ tác động đến tất cả các phương thức nhập thông tin đầu vào. Một ứng dụng web bất kì sẽ hiển thị bất cứ thông tin nào nhận được từ người sử dụng sẽ có nguy cơ lớn bị tấn công. Những cuộc tấn công như vậy có thể thực hiện dựa vào các giá trị không được lọc của các biến nhận được từ người sử dụng, trong đó có thể chứa các đoạn mã scripts (javaScript, VBScript) hoặc các thẻ HTML nguy hiểm. Kiểu tấn công này có thể được sử dụng để chặn và bắt các giá trị của cookie của người sử dụng (bao gồm cả người quản trị hệ thống) và các phiên làm việc (session). Trong một vài trường hợp, nó cho phép đăng nhập vào hệ thống, hoặc nếu hỗ trợ SSI (Server Side Includes) thì còn có thể thực hiện một lệnh bất kì trên server.
Bạn có thể xem thêm thông tin về XSS:
http://www.cgisecurity.com/articles/xss-faq.shtml
http://www.cert.org/advisories/CA-2000-02.html
HTTP Response Splitting:
Lỗi HTTP Response Splitting được đăng kí đối với hầu hết các ứng dụng web và diễn ra khi nó không thể xử lý đúng các thông tin đầu vào người dùng nhập. Kể tấn công từ xa có thể gửi một yêu cầu HTTP đặc biệt làm cho máy chủ web định dạng yêu cầu nhầm tưởng rằng nó chứa 2 yêu cầu HTTP chứ không phải một. Trong trường hợp này chỉ yêu cầu thứ nhất được xử lý bởi người sử dụng. HTTP Response Splitting cho phép tiến hành một lượng lớn các cuộc tấn công kiểu như web cache poisioning, deface, “cross-user defacement”, chặn và ăn cắp thông tin người dùng và Cross site Scritpting.
Bạn có thể xem thêm thông tin tại:
http://www.packetstormsecurity.org/papers/general/whitepaper_httpresponse.pdf
SQL injection:
SQL injection là phương pháp tấn công cơ sở dữ liệu bằng cách vượt qua tường lửa. Ở phương pháp này các tham số truyền tới CSDL qua ứng dụng web sẽ được kiểm tra khiến cho câu lệnh truy vấn SQL bị sửa chữa. Ví dụ bằng cách thêm vào các kí tự đặc biệt vào tham số, một câu truy vấn bổ sung sẽ được thực hiện.
Việc tấn công nhằm vào các mục đích sau:
Chiếm được quyền truy cập vào CSDL hoặc lấy được cấu hình hệ thống của CSDL để nhằm mục đích tấn công tiếp sau này. Ví dụ một câu truy vấn bị sửa đổi có thể trả về danh sách người dùng và mật khẩu (bị mã hóa), mật khẩu này có thể được giải mã tiếp sau đó.
Chiếm được quyền truy cập vào máy trạm thông qua máy chủ CSDL. Điều này có thể thực hiện bằng các hàm, thủ tục của hệ quản trị CSDL và các phần mở rộng 3GL cho phép chạy các ứng dụng khác nhau.
Bạn có thể xem thêm tại:
http://www.securityfocus.com/infocus/1768
http://shiflett.org/php-security.pdf
Code injection:
Nếu một ứng dụng web xử lý động các file đính kèm (included file) hoặc đường dẫn đến file không đúng, thì việc thực thi một đoạn mã bất kì (PHP, ASP…) trên máy chủ, hoặc nhận được nội dung của các file là hoàn toàn có thể. Thực thi một cuộc tấn công thành công có thể giúp vượt qua được bước xác thực, và thực thi các lệnh tùy ý trên máy chủ, xem nội dung các file, ghi dữ liệu bất kì vào file…
Bạn có thể xem thêm thông tin tại:
http://zend.com/zend/art/art-oertli.php
http://shiflett.org/php-security.pdf