CHƯƠNG 1 GIỚI THIỆU 1.1 Bảo mật ứng dụng web Ngày nay, ứng dụng web được triển khai rộng rãi trong nhiều lĩnh vực đời sống khác nhau do sự thuận tiện mà chúng mang lại. Hầu như bất kỳ tiện ích nào mà Internet mang lại đều có thể được truy xuất dưới dạng ứng dụng web. Không chỉ dừng lại ở những dịch vụ truyền thống như cung cấp thông tin, tra cứu văn bản, v.v… ứng dụng web ngày nay còn bao gồm cả những dịch vụ mà trước kia chỉ có thể cung cấp bởi các ứng dụng chạy trực tiếp (Native Application) như thiết kế đồ họa hay trò chơi đồ họa không gian ba chiều. Điểm khác biệt, và cũng là điểm nổi bật, của ứng dụng web so với những ứng dụng chạy trực tiếp trên hệ điều hành là ứng dụng web không yêu cầu người dùng phải cài đặt trước khi sử dụng.
Người dùng chỉ cần phần mềm trình duyệt web (Web Browser) là đã có thể truy xuất bất kỳ ứng dụng web nào. Hơn nữa, khi ứng dụng web được nâng cấp để có thêm tính năng mới, người dùng cũng không cần phải làm thêm gì để sử dụng những tính năng mới này. Ngoài những tiện lợi mang đến cho người dùng kể trên, ứng dụng web cũng góp phần giải quyết đáng kể bài toán phân phối và bảo trì phần mềm mà những nhà phát triển (Developer) gặp phải. Khi dịch vụ, phần mềm được triển khai dưới dạng ứng dụng web, nhà phát triển không cần phải cài đặt, bảo trì, hay nâng cấp hệ thống của mình cho riêng từng cá nhân.
Thay vào đó, họ chỉ cần thực hiện những công việc trên cho một hoặc vài máy chủ trung tâm. Với những ưu điểm mà ứng dụng web mang lại, nhiều tổ chức, công ty lớn và nhỏ đã sử dụng ứng dụng web để làm kênh giao tiếp quan trọng với khách hàng của mình. Thông qua web, các tổ chức và công ty có một phương tiện cần thiết để giới thiệu bản thân hoặc sản phẩm, dịch vụ của mình ra đông đảo người dùng trên toàn thế giới. Theo thống kê của công ty Netcraft, vào tháng 2/2018 có trên 1,8 tỷ website trên toàn thế giới, trong đó, Microsoft, Apache, nginx và Google là những nhà cung cấp phần mềm máy chủ web được dùng nhiều nhất [1].
Với số lượng website lớn như vậy, có thể thấy ảnh hưởng của ứng dụng web đến đời sống xã hội là khá đáng kể. Sự ảnh hưởng này vừa tác động đến người dùng, vừa tác động đến các tổ chức sở hữu ứng dụng web. 1 Do ảnh hưởng quan trọng kể trên, bảo mật ứng dụng web là một nhu cầu cần thiết và cấp bách. Việc đảm bảo hoạt động an toàn, đúng đắn của ứng dụng web không chỉ tạo nên hình ảnh, danh hiệu, độ tin cậy của công ty sở hữu ứng dụng web, mà còn giúp hệ thống của họ vận hành trơn tru, tạo ra lợi thế cạnh tranh.
Tuy nhiên, so với các ứng dụng chạy trực tiếp, việc bảo mật ứng dụng web có những khó khăn đặc thù sau: • Trước hết, ứng dụng web được truy xuất khá rộng rãi. Khác với các ứng dụng chạy trực tiếp, hầu hết được dùng trong nội bộ tổ chức, ứng dụng web thông thường được triển khai để có thể truy xuất từ bên ngoài. Do đó, khả năng ứng dụng web bị truy xuất từ những hacker bên ngoài là cao hơn so với ứng dụng chạy trực tiếp. • Điểm thứ nhì, đó là sự đa dạng về mặt trình độ, kỹ năng, tài nguyên sẵn có, v.v… của những nhà phát triển ứng dụng web.
Trong kiến trúc của hệ thống web, ứng dụng web là một thành phần hoạt động chung với phần mềm máy chủ web, hệ quản trị cơ sở dữ liệu, v.v… để cung cấp chức năng cho người dùng. Tuy nhiên, khác với những thành phần như phần mềm máy chủ web hay hệ quản trị cơ sở dữ liệu được phát triển bởi các công ty hoặc tổ chức lớn, thì ứng dụng web có thể được phát triển bởi những tổ chức nhỏ hoặc cả những cá nhân độc lập. Điều này dẫn đến chất lượng ứng dụng web, bao gồm cả chất lượng về mặt bảo mật, có một sự dàn trải khá rộng. Để dễ hình dung về tình hình bảo mật của ứng dụng web trên toàn thế giới, có thể xem qua số liệu thống kê của công ty nghiên cứu và phát triển giải pháp bảo mật web Acunetix [2].
Trong thống kê này, có những điểm đáng lưu ý sau: • Trong số những ứng dụng web mà công ty này kiểm tra, có đến 55% chứa lỗi bảo mật phổ biến như Cross-Site Scripting và SQL injection. • 84% trong số đó chứa ít nhất một lỗi bảo mật có mức độ nghiêm trọng từ trung bình trở lên, ví dụ như lỗi Cross-Site Request Forgery (CSRF). • Gần 8% hệ thống được kiểm tra có chứa ít nhất một lỗi bảo mật ở mức nghiêm trọng cao. 2 Những số liệu trên cho thấy còn khá nhiều ứng dụng web có chứa các vấn đề về bảo mật cần giải quyết.
Nhìn chung, các giải pháp về bảo mật cho ứng dụng web nói riêng, cho các hệ thống thông tin nói chung, có thể được phân vào hai hướng tiếp cận sau: • Tự động hóa bảo mật: trong hướng tiếp cận này, các quyết định về bảo mật, chẳng hạn như việc kết luận xem có tấn công vào ứng dụng web hay không, hoặc có lỗ hổng bảo mật nào trong ứng dụng hay không, chủ yếu được quyết định một cách tự động, không có hoặc có ít sự tác động của nhà quản trị. Theo quan điểm của luận án, những tình huống mà cách tiếp cận này tỏ ra phù hợp là khi bài toán bảo mật đã rõ ràng, cụ thể. Chẳng hạn như khi dấu hiệu (Signature) của một loại tấn công cụ thể đã được xác định, thì việc đưa dấu hiệu này vào một hệ thống tường lửa (Firewall) để tự động ngăn chặn các tấn công tương tự sau đó có thể được hiện thực hiệu quả theo cách tiếp cận này. • Bảo mật dựa trên con người: trong hướng tiếp cận này, các quyết định về bảo mật liên quan đến ứng dụng web chủ yếu được đưa ra bởi nhà quản trị, thông thường bằng cách theo dõi và phân tích hoạt động của ứng dụng trong một khoảng thời gian.
Trong hướng tiếp cận này, công sức bỏ ra của nhà quản trị là khá lớn. Nhưng cách tiếp cận này lại phù hợp trong những tình huống mà quyết định về bảo mật mang tính phức tạp, không rõ ràng, có nhiều khó khăn trong việc ra quyết định tự động. Chẳng hạn như khi một ứng dụng web có lượng truy cập tăng đột biến, thì đây có thể là dấu hiệu của một đợt tấn công từ chối dịch vụ (Denial of Service – DoS) hoặc cũng có thể là kết quả của một chiến dịch tiếp thị hay một sự kiện liên quan. Trong trường hợp này, một nhà quản trị có kiến thức nghiệp vụ và thông tin về sự kiện của tổ chức sẽ dễ dàng ra quyết định chính xác hơn so với một công cụ ra quyết định tự động chỉ dựa trên thông tin về lượng truy xuất.
Hai hướng tiếp cận kể trên không mang tính loại trừ lẫn nhau. Một giải pháp có thể kết hợp cả hai hướng tiếp cận để tăng cường bảo mật, chẳng hạn như bằng cách tự động ra quyết định cho những tình huống bảo mật đã rõ ràng và để nhà quản trị ra quyết định cho những trường hợp còn lại. Hoặc một ví dụ khác là cung cấp công cụ phù hợp để nhà quản trị tự tìm hiểu, phân tích hệ thống trong thời gian đầu, để có cái nhìn tổng quan và chi tiết về hệ thống. Sau khi đã có ít nhiều thông tin về hệ thống cần bảo vệ, 3 nhà quản trị có thể khai thác những giải pháp ra quyết định bảo mật tự động, đối với những tình huống mà họ đã biết rõ, để tiết kiệm thời gian và công sức.
Mặc dù đã có nhiều nghiên cứu về bảo mật ứng dụng web thông qua hướng tiếp cận tự động hóa bảo mật, các nghiên cứu theo hướng bảo mật dựa trên con người còn khá hạn chế. Theo quan điểm riêng của luận án, một trong số những nguyên nhân chủ yếu là cách tiếp cận này đòi hỏi khá nhiều công sức và thời gian của nhà quản trị, cũng như mang tính chủ quan nên khó tổng quát hóa thành phương pháp. Tuy nhiên, như đã phân tích ở trên, bảo mật dựa trên con người cũng có vai trò nhất định, quan trọng trong việc nâng cao bảo mật ứng dụng web. Để cải thiện năng suất của việc ra quyết định về bảo mật dựa trên con người, một trong số những phương pháp được sử dụng rộng rãi hiện nay là tích hợp trực quan hóa thông tin (Information Visualization) và tương tác người dùng (User Interaction) vào quá trình phân tích và ra quyết định.
Trong phương pháp này, nhà quản trị vẫn đóng vai trò chính trong việc ra quyết định. Tuy nhiên, công việc quan sát và phân tích để ra quyết định đã được hỗ trợ đáng kể bởi những kỹ thuật trực quan hóa và tương tác người dùng phù hợp.2 Trực quan hóa thông tin trong bảo mật Định nghĩa một cách đơn giản, trực quan hóa thông tin là kỹ thuật sử dụng hình ảnh trực quan kết hợp với những công cụ tương tác người dùng phù hợp để biểu diễn dữ liệu trừu tượng nhằm mục đích hỗ trợ, tăng cường nhận thức của người dùng. Tufte, một trong những người có đóng góp tiên phong trong lĩnh vực trực quan hóa thông tin, thì đó là sự biểu diễn dữ liệu bằng cách kết hợp các đối tượng như điểm, đường, hệ tọa độ, con số, ký hiệu, từ ngữ, độ bóng, và màu sắc [3]. Những đối tượng được biểu diễn trong trực quan hóa thông tin là những đối tượng trừu tượng, hay nói một cách khác là những đối tượng không có một vị trí hoặc kích thước cụ thể trong không gian vật lý, chẳng hạn như địa chỉ nhà, tên đường phố, hay kinh vỹ độ trên bề mặt Trái Đất.
Một ví dụ về đối tượng trừu tượng phù hợp cho trực quan hóa thông tin là ứng dụng web. Một ứng dụng web chỉ bao gồm tập hợp các trang web với địa chỉ URL xác định cho mỗi trang, và không chứa thêm bất kỳ thông tin nào liên quan đến vị trí hay kích thước vật lý. Nhưng khi ứng dụng web được trực quan hóa thì mỗi trang web có thể được hiển thị tại một vị trí xác định nào đó trong không gian màn hình, 4 cũng như mối liên kết giữa các trang cũng có thể được biểu diễn bằng các đoạn thẳng trong không gian màn hình.