Cơ chế đăng nhập một lần (SSO) cho phép người dùng đăng nhập một lần cho tất cả các tài khoản có yêu cầu xác thực bảo mật khác nhau trong phiên truy cập của người dùng. Giải pháp này đảm bảo tính thuận tiện, vừa tăng độ bảo mật khi sử dụng, giảm áp lực trong việc quản lý tài khoản đối với nhà quản trị. Ngoài ra, SSO còn có khả năng tích hợp và kết hợp các hệ thống tài khoản khác nhau, điều này sẽ mang lại lợi ích cho
18
người dùng và nhà cung cấp dịch vụ. Sau đây là một số ưu điểm và khuyết điểm của SSO.
Ưu điểm:
- Tiết kiệm thời gian cho người sử dụng trong việc đăng nhập vào nhiều dịch vụ được cung cấp trên cổng TTĐT.
- Tăng cường khả năng bảo mật thông qua việc giúp người dùng không cần nhớ nhiều thông tin đăng nhập.
- Giúp cho người quản trị hệ thống tiết kiệm thời gian trong việc tạo lập hay loại bỏ người dùng trên hệ thống, cũng như thay đổi quyền của một hay một nhóm người dùng nào đó.
- Tiết kiệm thời gian khi tái lập lại mật khẩu cho người dùng. - Bảo mật các cấp độ của việc thoát hay truy xuất hệ thống. Khuyết điểm:
- Đòi hỏi cơ sở hạ tầng của toàn bộ hệ thống phải đảm bảo
- Do nhiều ứng dụng cùng sử dụng chung cơ sở dữ liệu người dùng nên việc xác thực khi người dùng đăng ký với hệ thống phải chặt chẽ, nếu không sẽ rất dễ vi phạm việc đảm bảo an ninh cho hệ thống.
- Cần có cơ chế xác thực đảm bảo khi truyền các thông tin định danh người dùng giữa người sử dụng với các máy chủ dịch vụ.
Cơ chế đăng nhập một lần là một trong những đặc tính quan trọng đối với một cổng TTĐT nhưng nó cũng chứa những rủi ro riêng. Tin tặc có thể lợi dụng các lỗ hổng trong việc quản lý xác thực để thực hiện tấn công gây hại cho hệ thống.
Một số rủi ro đối với SSO là:
Mật khẩu yếu: sử dụng mật khẩu là phương pháp xác thực được sử dụng phổ biến trên các ứng dụng web nói chung và cổng TTĐT nói riêng. Một mật khẩu đơn giản, dễ nhớ, được sử dụng nhiều lần trên nhiều ứng dụng web khác nhau và không được thay đổi trong thời gian dài mang lại tiện lợi cho người dùng nhưng cũng đồng nghĩa với nhiều rủi ro mất an toàn đối với tài khoản người dùng. Một phương pháp thường dùng để tấn công các mật khẩu yếu là đoán mật khẩu bằng hình thức tấn công Brute force. Để hạn chế rủi ro này cần thiết lập các chính sách mật khẩu mạnh.
Rủi ro khi bị khai thác lỗi xử lý phiên làm việc: khi người dùng đăng nhập vào hệ thống, có thể bị tin tặc lợi dụng để thực hiện những hành động xấu ngay trên phiên đăng nhập của mình. Chẳng hạn tin tặc có thể lừa người dùng nhấp vào một liên kết để thực hiện các yêu cầu giả mạo trên phiên đăng nhập của người dùng. Để ngăn chặn tấn công này có thể sử dụng một SSO token trong mỗi yêu cầu trên trình duyệt người dùng. Các SSO token này phải là duy nhất cho mỗi phiên làm việc của người dùng.
Rủi ro khi sử dụng thuật toán mã hóa yếu: khi sử dụng các trình duyệt để truy cập vào các ứng dụng trên cổng TTĐT. Nếu các thông tin người dùng không được mã hóa trên trình duyệt hay các trình duyệt sử dụng thuật toán mã hóa yếu sẽ rất nguy hiểm đặc
19
biệt là thông tin tài khoản người dùng. Tin tặc có thể dễ dàng thu thập thông tin không được mã hóa hay giải mã những thông tin được mã hóa yếu.
Rủi ro khi hoạt động trên mạng Internet: nếu một người dùng sử dụng trình duyệt đăng nhập vào tài khoản SSO trên một hệ thống, không may khi đó hệ thống sử dụng của người dùng bị treo và không thể thoát ra được. Người dùng bỏ đi khi hệ thống đang bị treo, sau khi hệ thống hoạt động bình thường trở lại, một người nào đó làm việc với hệ thống này có thể truy cập trái phép vào hệ thống mà người dùng trước đó đăng nhập. Điều này đặc biệt nguy hiểm khi người này sử dụng cho các mục đích bất hợp pháp. Có thể hạn chế rủi ro này bằng cách đặt thời gian hoạt động cho một phiên đăng nhập, khi không thực hiện bất cứ hành động nào và buộc người dùng phải đăng nhập lại.
Một số hình thức tấn công nhằm vào SSO:
Tấn công tràn bộ đệm: lỗi tràn bộ đệm xảy ra khi một ứng dụng cố gắng ghi dữ liệu vượt khỏi phạm vi của bộ đệm. Lỗi này có thể do lỗi lập trình hoặc do người dùng cố ý phá hoại, họ có thể lợi dụng lỗi này để phá vỡ an ninh của hệ thống. Các lỗi tràn bộ đệm có thể khiến cho ứng dụng ngừng hoạt động, gây mất dữ liệu hoặc cho ra các kết quả sai, thậm chí giúp kẻ tấn công kiểm soát hệt hống hoặc tạo cơ hội cho kẻ tấn công thực hiện nhiều thủ thuật khai thác khác nhau.
Tấn công vào SSO bằng cách khai thác lỗi tràn bộ đệm trên stack, bằng cách kiểm tra một lỗi trong chức năng SSO chứa các giới hạn không đúng. Kẻ tấn công có thể lợi dụng lỗi tràn bộ đệm, gửi một gói tin đặc biệt với các dịch vụ mà không được chứng thực hay chèn một đoạn mã vào bộ nhớ hệ thống và tùy ý thực thi mã này trên hệ thống. Kẻ tấn công cũng có thể ghi đè một biến địa phương nằm gần bộ nhớ đệm trong stack để thay đổi hành vi của chương trình nhằm phục vụ ý đồ của mình. Chúng cũng có thể ghi đè địa chỉ trả về trong khung stack. Khi hàm trả về thực thi sẽ được tiếp tục tại địa chỉ mà kẻ tấn công đã chỉ rõ thường là tại một bộ đệm chứa dữ liệu của người dùng. Lỗi tràn bộ đệm có thể giúp cho kẻ tấn công vượt qua việc xác thực tài khoản người dùng SSO.
Việc xử lý bộ đệm trước khi đọc hay thực thi có thể làm thất bại các cuộc khai thác lỗi tràn bộ đệm nhưng vẫn không ngăn chặn được một cách tuyệt đối. Tuy nhiên, đây là việc làm cần thiết phải làm, việc xử lý bao gồm:
- Chuyển từ chữ hoa thành chữ thường.
- Loại bỏ các ký tự đặc biệt và lọc các xâu không chứa kí tự là chữ số hoặc chữ cái. Mặc dù vậy, vẫn còn có các kỹ thuật để tránh việc lọc và xử lý này như: sử dụng mã gồm toàn chữ và số, mã đa hình, mã tự sửa đổi, v.v. Vì vậy, để tránh các nguy cơ bị khai thác lỗi tràn bộ đệm chúng ta cần sử dụng các biện pháp phòng tránh hiệu quả hơn. - Lựa chọn ngôn ngữ lập trình: Ngôn ngữ lập trình có một ảnh hưởng lớn đối với sự xuất hiện lỗi tràn bộ đệm. Một ngôn ngữ lập trình sử dụng nhiều kỹ thuật đa dạng có thể giúp tránh việc sử dụng con trỏ và kiểm tra biên do người dùng xác định. Có ngôn ngữ có thể giúp chặn các lỗi tràn bộ đệm bằng việc gắn thông tin về kích thước mảng
20
với các mảng như Cyclone, ngôn ngữ khác lại có khả năng cung cấp việc kiểm tra truy cập hay ghi đè dữ liệu và đưa ra ngoại lệ hay cảnh báo như Pythol, Lisp, v.v. Ngoài ra, các môi trường như Java, .Net đòi hỏi kiểm tra biên đối với tất cả các mảng.
- Sử dụng các thư viện an toàn: Sử dụng các thư viện được viết tốt và đã được kiểm thử dành cho các kiểu dữ liệu trừu tượng mà các thư viện này thực hiện tự động việc quản lý bộ nhớ, trong đó có kiểm tra biên có thể làm giảm sự xuất hiện và ảnh hưởng của các hiện tượng tràn bộ đệm. Các thư viện an toàn gồm có: The Better String Library, Arri Buffer API, Vstr.
- Chống tràn bộ đệm trên stack: Stack smashing protection là kỹ thuật dùng để phát hiện các hiện tượng tràn bộ đệm phổ biến nhất. Kỹ thuật này kiểm tra xem stack đã bị sửa đổi hay chưa khi một hàm trả về. Nếu stack đã bị sửa đổi, chương trình kết thúc bằng một lỗi phân khúc. Chế độ cấm thực thực thi dữ liệu được thực hiện để bảo vệ các con trỏ và không cho chúng bị ghi đè. Có thể bảo vệ stack bằng cách phân tán stack thành hai phần, một phần dành cho dữ liệu và một phần dành cho các bước trả về hàm.
- Bảo vệ không gian thực thi: giải pháp ngày ngăn chặn việc thực thi mã tại stack hay heap. Kẻ tấn công có thể sử dụng lỗi tràn bộ đệm để chèn một đoạn mã tùy ý vào bộ nhớ của chương trình, với việc bảo vệ không gian thực thi thì mọi cố gắng chạy đoạn mã đó sẽ gay ra một ngoại lệ.
- Ngẫu nhiên hóa sơ đồ không gian địa chỉ: đây là tính năng liên quan đến việc sắp xếp các vùng dữ liệu quan trọng một cách ngẫu nhiên trong không gian địa chỉ của một tiến trình (thường bao gồm nơi chứa mã thực thi và vị trí cá thư viện, heap và stack).
- Kiểm tra sâu đối với gói tin: việc này có thể phát hiện các hành động cố gắng khai thác lỗi tràn bộ đệm từ xa ngay từ biên của mạng. Các kỹ thuật này có khả năng ngăn chặn các gói tin có chứa chữ ký của một vụ tấn công dã biết hoặc chứa các chuỗi dài các lệnh rỗng không làm gì. Tuy nhiên, việc rà quét gói tin không phải là một phương pháp hiệu quả vì nó chỉ có thể ngăn chặn các cuộc tấn công đã biết và có thể mã hóa các lệnh rỗng đê vượt qua việc kiểm tra này.
Chiếm phiên làm việc (Session Hijacking): kẻ tấn công có thể có thể chiếm lấy một phiên làm việc đang hoạt động của một người dùng hợp lệ, nhằm mục đích vượt qua quá trình chứng thực truy cập bất hợp lệ vào các dịch vụ của hệ thống. Khi một người dùng thực hiện đăng nhập vào hệ thống SSO, sau khi người dùng được xác thực họ có quyền truy cập đến các ứng dụng trong hệ thống. Trong quá trình hoạt động, người dùng không cần phải chứng thực lại. Kẻ tấn công lợi dụng điều này để thực hiện cướp phiên làm việc đang hoạt động của người dùng và làm cho người dùng không kết nối được với hệ thống. Sau đó kẻ tấn công mạo danh người dùng bằng phiên làm việc vừa cướp được, truy cập đến các ứng dụng mà không cần phải đăng nhập vào hệ thống.
Tấn công chiếm phiên làm việc rất nguy hiểm với các cổng TTĐT, bởi khi một người dùng sử dụng SSO để đăng nhập vào một ứng dụng trên cổng TTĐ người dùng đó có thể truy cập vào các ứng dụng khác mà không phải đăng nhập lại. Nếu những kẻ tấn công có thể chiếm được phiên làm việc của người dùng thì cũng có thể gây hại đến an toàn thông tin trên các ứng dụng khác trong cổng TTĐT mà người dùng đang đã xác
21
thực. Vì vậy, việc phòng chống tấn công chiếm phiên làm việc khi sử dụng SSO trên các cổng TTĐT là rất cần thiết.
Quá trình tấn công chiếm phiên làm việc gồm có ba bước như sau:
- Dò Tìm phiên làm việc: Kẻ tấn công sẽ dò tìm các phiên làm việc đang mở và tính toán giá trị tuần tự của gói tin tiếp theo.
- Tái đồng bộ kết nối: Kẻ tấn công gởi các tín hiệu TCP reset (RST) hay FIN để yêu cầu khởi động lại quá trình kết nối đồng thời đóng phiên làm việc cũ.
- Chèn các gói tin tấn công: lúc này kẻ tấn công sẽ gởi đến máy chủ những gói tin TCP với số hiệu tuần tự đã được tính toán thích hợp với phiên làm việc do đó máy chủ sẽ chấp nhận những thông tin này giống như là các dữ liệu hợp lệ tiếp theo của người dùng bị tấn công. Nghĩa là, khi này những kẻ tấn công có thể thực hiện những hành động gây hại trên phiên làm việc của người dùng.
Khi đã biết được tác hại cũng như các quá trình của tấn công chiếm phiên làm việc. Chúng ta cần có những giải pháp phòng chống để có thể bảo vệ dữ liệu cho cổng TTĐT của mình và hướng dẫn người dùng các thao tác nhằm bảo vệ tính riêng tư, phòng chống bị mất cắp dữ liệu.
Để phòng chống không bị tấn công chiếm phiên làm việc thì chúng ta cần phòng tránh bị nghe lén, một khi kẻ tấn công không thể nghe lén được thì cũng không thể tấn công vào phiên làm việc của người dùng. Một trong các giải pháp để tránh tác hại của việc nghe lén đó là mã hóa dữ liệu, mã hóa đường truyền với các kỹ thuật và thuật toán mã hóa mạnh. Dùng SSH thay cho Telnet thông thường khi quản trị từ xa hay áp dụng SSL dùng cho truyền thông qua HTTPS.
Ngoài ra chúng ta có thể ngăn không cho kẻ tấn công tương tác vào đường truyền cũng giúp loại bỏ nguy cơ bị tấn công này, với những giải pháp hữu hiệu như dùng mạng riêng ảo (VPN), hay áp dụng IPSEC. Sau đây là một số khuyến nghị nhằm ngăn ngừa tấn công chiếm phiên làm việc.
- Sử dụng mã hóa.
- Ứng dụng các giao thức an toàn. - Hạn chế các kết nối đầu vào. - Giảm các truy cập từ xa. - Có chế độ xác thực mạnh mẽ.
- Huấn luyện cho người dùng, nâng cao nhận thức an toàn thông tin.
- Sử dụng SSL trong quá trình chứng thực để chống lại việc nghe lén dữ liệu quan trọng.
- Sử dụng cơ chế tạo Mã phiên làm việc ngẫu nhiên, với thuật toán mã hóa mạnh. Mã phiên làm việc phải đủ lớn để làm khó quá trình tấn công brute-force.
- Giới hạn thời gian tồn tại của phiên làm việc khi không thực hiện hành động nào.
Tấn công Man in the Midle (MITM): hoạt động bằng cách thiết lập các kết nối đến máy tính nạn nhân và chuyển tiếp các tin nhắn thông qua chúng. Kiểu tấn công này như một một kẻ nghe trộm. Trong trường hợp bị tấn công, nạn nhân không hề biết họ
22
vẫn tin rằng họ đang giao tiếp trực tiếp với người kia, trong khi đó sự thực là các luồng giao tiếp lại bị chuyển tiếp thông qua host của kẻ tấn công. Kết quả là kẻ tấn công có thể biết được những dữ liệu nhạy cảm và còn có thể gửi xen vào, cũng như thay đổi luồng dữ liệu để kiểm soát sâu hơn những nạn nhân. Một số hình thức tấn công MITM hay được sử dụng nhất, chẳng hạn như tấn công giả mạo ARP Cache, DNS Spoofing, chiếm quyền điều khiển, v.v. Tấn công giả mạo ARP Cache cho phép kẻ tấn công (nằm trên cùng một mạng con với các nạn nhân của nó) có thể nghe trộm tất cả các lưu lượng mạng giữa các máy tính nạn nhân. Đây là một trong những hình thức tấn công đơn giản nhưng lại hiệu quả. Hiện việc giả mạo ARP Cache vẫn là một mối đe dọa rất thực trên các mạng hiện đại, vừa khó bị phát hiện và khó đánh trả. Tấn công giả mạo DNS là một kỹ thuật MITM được sử dụng nhằm cung cấp thông tin DNS giả cho một host để khi người dùng truy cập vào một trang web nào đó, thì nó sẽ chuyển đến một trang web giả mạo trên một địa chỉ IP giả do kẻ tấn công đã tạo ra từ trước. Khi đó người dùng sẽ thực hiện các hành động trên trang web giả này và kẻ tấn công có thể đánh cắp các thông tin của người dùng, như thông tin đăng nhập, tài khoản ngân hàng, v.v.
Tấn công MITM đặc biệt nguy hiểm đối với hệ thống SSO trên các cổng TTĐT. Nếu các thông tin đăng nhập của người dùng không được bảo vệ đúng cách, những kẻ tấn công có thể nghe lén được thông tin tài khoản người dùng và sử dụng nó để truy cập vào các ứng dụng trên cổng TTĐT đó. Khi đó kẻ tấn công có thể truy cập và sử dụng