Các loại hình tấn công website

Một phần của tài liệu Nghiên cứu giải pháp bảo mật và xác thực website (Trang 46)

2.3.1. Tấn công vào vùng ẩn

Các phần bị giấu đi trong trang Web thường được dùng để lưu thông tin về phiên làm việc của client, phiên làm việc này được ghi nhớ ở máy khách (client) chứ không cần phải tổ chức CSDL phức tạp trên máy chủ. Tuy vậy, phần bị giấu đi này không "ẩn" thực sự, chức năng "View Source" (xem mã nguồn) của trình duyệt cho phép đọc được mã nguồn của phần bị giấu của trang Web. Dựa vào mã nguồn này hacker có thể giả lập phiên làm việc để truy cập thông tin trên máy chủ.

2.3.2. Can thiệp vào tham số trên URL

Đây là cách thức tấn công bằng cách đưa tham số trực tiếp vào địa chỉ URL để truy cập thông tin không dành cho người dùng (người dùng thao tác qua giao diện trên trình duyệt không thể thấy được các thông tin này). Câu lệnh SQL truy cập CSDL nền của ứng dụng trên Web thường được thể hiện

trên địa chỉ URL. Dùng các câu lệnh SQL để khai thác CSDL trên server bị lỗi, điển hình nhất là tấn công bằng "SQL INJECT". Khi hacker gửi những dữ liệu (thông qua các form), ứng dụng web sẽ thực hiện và trả về trình duyệt kết quả câu truy vấn hay những thông báo lỗi có liên quan đến CSDL và từ đó có thể điều khiển toàn bộ hệ thống ứng dụng.

SQL Injection là một kĩ thuật cho phép những kẻ tấn công thi hành các câu lệnh truy vấn SQL bất hợp pháp (người phát triển không lường trước được) bằng cách lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập từ các ứng dụng web. Hậu quả này rất tai hại vì nó cho phép kẻ tấn công có toàn quyền, hiệu chỉnh… trên cơ sở dữ liệu của ứng dụng. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị CSDL như SQL Server, Oracle, DB2, Sysbase.

Tác hại của dạng tấn công SQL Injection tùy thuộc vào môi trường và cách cấu hình hệ thống. Nếu ứng dụng sử dụng quyền dbo (quyền của người sở hữu CSDL) khi thao tác dữ liệu, nó có thể xóa toàn bộ các bảng dữ liệu, tạo các bảng dữ liệu mới… Nếu ứng dụng sử dụng quyền sa (quyền quản trị hệ thống), nó có thể điều khiển toàn bộ hệ CSDL và thậm chí có thể tạo ra các tài khoản người dùng bất hợp pháp để điều khiển hệ thống.

Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ các câu truy vấn SQL bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng Request (Request, Request. QueryString, Request.Form, Request. Cookies, và Request.Server Variables).

Cuối cùng, để hạn chế thiệt hại do tấn công SQL Injection, nên kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu của tài khoản người dùng mà ứng dụng web đang sử dụng. Các ứng dụng thông thường nên tránh dùng các quyền như dbo hay sa. Quyền càng hạn chế, thiệt hại càng ít.

2.3.3. Tấn công dùng cookie

Cookie là những phần dữ liệu nhỏ, có cấu trúc được chia sẻ giữa trình chủ và trình duyệt của người dùng chứa thông tin về người dùng đã ghé thăm trang web, những vùng mà họ đã đi qua trong trang web và lưu trên đĩa cứng của máy tính. Những người biết tận dụng những thông tin này có thể gây nên những hậu quả nghiêm trọng.

2.3.4. Tấn công từ chối dịch vụ DoS (Denial of Service)

Là các cuộc tấn công trên hệ thống mạng nhằm ngăn cản những truy xuất tới các dịch vụ, làm cho các dịch vụ mạng bị tê liệt, không còn khả năng đáp ứng được yêu cầu bằng cách làm tràn ngập số lượng kết nối, quá tải server hoặc ứng dụng chạy trên server.

Hình 2.2: Mô tả tấn công DoS

Tấn công DoS là kiểu tấn công vô cùng nguy hiểm, để hiểu được nó ta cần phải lắm rõ định nghĩa của tấn công DoS và các dạng tấn công DoS.

Tấn công DoS là một kiểu tấn công mà một người làm cho một hệ thống không thể sử dụng, hoặc làm cho hệ thống đó chậm đi một cách đáng kể với người dùng bình thường, bằng cách làm quá tải tài nguyên của hệ thống.

Nếu kẻ tấn công không có khả năng thâm nhập được vào hệ thống, thì chúng cố gắng tìm cách làm cho hệ thống đó sụp đổ và không có khả năng phục vụ người dùng bình thường đó là tấn công Denial of Service (DoS).

Mặc dù tấn công DoS không có khả năng truy cập vào dữ liệu thực của hệ thống nhưng nó có thể làm gián đoạn các dịch vụ mà hệ thống đó cung cấp. Như định nghĩa trên DoS khi tấn công vào một hệ thống sẽ khai thác những cái yếu nhất của hệ thống để tấn công, những mục đích của tấn công DoS:

- Cố gắng chiếm băng thông mạng và làm hệ thống mạng bị ngập (flood), khi đó hệ thống mạng sẽ không có khả năng đáp ứng những dịch vụ khác cho người dùng bình thường.

- Cố gắng làm ngắt kết nối giữa hai máy, và ngăn chặn quá trình truy cập vào dịch vụ.

- Cố gắng ngăn chặn những người dùng cụ thể vào một dịch vụ nào đó. - Cố gắng ngăn chặn các dịch vụ không cho người khác có khả năng truy cập vào.

Khi tấn công DoS xảy ra người dùng có cảm giác khi truy cập vào dịch vụ đó như bị:

- Disable Network - Tắt mạng.

- Disable Organization - Tổ chức không hoạt động. - Financial Loss - Tài chính bị mất.

Mục tiêu mà kẻ tấn công thường sử dụng tấn công DoS.

- Tạo ra sự khan hiếm, những giới hạn và không đổi mới tài nguyên. - Băng thông của hệ thống mạng (Network Bandwidth), bộ nhớ, ổ đĩa, và CPU Time hay cấu trúc dữ liệu đều là mục tiêu của tấn công DoS.

- Tấn công vào hệ thống khác phục vụ cho mạng máy tính như: hệ thống điều hoà, hệ thống điện, hệ thống làm mát và nhiều tài nguyên khác của doanh nghiệp. Bạn thử tưởng tượng khi nguồn điện vào máy chủ web bị ngắt thì người dùng có thể truy cập vào máy chủ đó không.

- Phá hoại hoặc thay đổi các thông tin cấu hình.

Tấn công Denial of Service chia ra làm hai loại tấn công:

- Tấn công DoS: Tấn công từ một cá thể, hay tập hợp các cá thể.

- Tấn công DDoS: Đây là sự tấn công từ một mạng máy tính được thiết kế để tấn công tới một đích cụ thể nào đó.

2.3.5. Các cách tấn công chữ ký điện tử

Khi nói đến chữ ký điện tử, chúng ta luôn đặt mục tiêu an toàn lên hàng đầu, một chữ ký điện tử chỉ thực sự được áp dụng trong thực tế nếu như nó được chứng minh là không hề giả mạo. Mục tiêu lớn nhất của những kẻ tấn công các sơ đồ chữ ký là giả mạo chữ, điều này có nghĩa là kẻ tấn công sinh ra được chữ ký của người ký lên thông điệp mà chữ ký này sẽ được chấp nhận bởi người xác nhận. Trong thực tế các hành vi tấn công chữ ký điện tử rất đa dạng, để dễ dàng phân tích một sơ đồ chữ ký là an toàn hay không người ta tiến hành kiểm nghiệm độ an toàn của chữ ký trước các sự tấn công sau:

Tolal break (tấn công toàn bộ): Một kẻ giả mạo không những tìm được

thông tin về khoá riêng (private key) mà còn có thể sử dụng một thuật toán sinh chữ ký tương ứng tạo ra được chữ ký cho thông điệp.

Selective forgert (giả mạo có lựa chọn): Kẻ tấn công có khả năng tạo ra

đựơc một tập hợp các chữ ký cho một lớp các thông điệp nhất định, các thông điệp này được ký mà không cần phải có khoá mật của người ký.

Existential forgert (giả mạo với thông điệp biết trước): Kẻ tấn công có

khả năng giả mạo chữ ký cho một thông điệp, để có khả năng kiểm soát thông điệp được giả mạo này.

Message attacks (tấn công vào thông điệp): Ở đây kẻ tấn công có khả

năng kiểm tra các chữ ký khác nhau xem có phù hợp với thông điệp có trước hay không. Đây là kiểu tấn công rất thông dụng.

2.4. Giải pháp bảo mật trong website

Trong giao dịch Website khi người dùng muốn Upload tài liệu, gửi dữ liệu trên mạng thì trước tiên dữ liệu phải được mã hóa. Sử dụng chuẩn JKS (Java key Store) hoặc PKCS#7, PKCS#12 (Peronal Information Exchange Syntax Standard) để phục vụ quá trình tạo khóa bí mật từ cặp khóa công khai và khóa riêng từ các file lưu trữ khóa đó. Để mã hóa và giải mã người dùng cần có file lưu trữ khóa theo chuẩn JKS hoặc PKCS#12. Đồng thời phải nhập mật khẩu bảo vệ file lưu trữ khóa để kiểm tra. Khi kiểm tra mật khẩu thành công, khóa công khai và kháo riêng của file lưu trữ khóa sẽ được lấy ra. Sau đó ta băm khóa công khai bằng thuật toán SHA1 được một chuỗi có độ dài 160 bit. Tiếp theo sử dụng thuật toán RSA để mã hóa chuỗi đó bằng khóa riêng ta thu được khóa bí mật có độ dài 128 bit dùng để mã hóa, giải mã bằng khoá công khai.

Ngoài ra chúng ta có thể xây dựng trương trình mã hóa dữ liệu sử dụng những thuật toán đã biết như thuật toán RSA, AES,…tích hợp trên website để mã hóa dữ liệu trước khi upload và giải mã khi download theo sơ đồ sau:

Hình 2.4: Sơ đồ truyền tin có mã hoá và giải mã trên website. Quá trình mã hoá được thực hiện theo 2 dạng:

- Mã hoá file, là kiểu thực hiện mã hoá các file dữ liệu trước khi chúng được gửi đi. Các file dữ liệu có thể là file dạng pdf, doc, …

- Mã hoá form, là kiểu thực hiện mã hoá dữ liệu nhập trên form và gửi đi tới người nhận, sau đó dữ liệu được giải mã trên form giải mã.

2.5. Giải pháp xác thực trong Website 2.5.1. Username và Password 2.5.1. Username và Password 2.5.1. Username và Password

Sự kết hợp của một username và password là cách xác thực cơ bản nhất. Với kiểu xác thực này, chứng từ ủy nhiệm người dùng được đối chiếu với chứng từ được lưu trữ trên CSDL hệ thống, nếu trùng khớp username và password, thì người dùng được xác thực và nếu không người dùng bị cấm truy cập. Phương thức này không bảo mật lắm vì chứng từ xác nhận người dùng được gửi đi xác thực trong tình trạng plain text, tức không được mã hóa và có thể bị tóm trên đường truyền.

2.5.2. Giải pháp kiểm soát truy nhập hệ thống SSO

Mỗi lần truy nhập một dịch vụ của hệ thống, người dùng phải khai báo thông tin về mật khẩu và tên đăng nhập cho hệ thống xác thực. Do vậy, người dùng phải nhớ rất nhiều cặp tên truy cập và mật khẩu khác nhau và phải đăng nhập nhiều lần. Điều này gây khó khăn cho người dùng và nhà cung cấp dịch

vụ, người quản trị cũng phải đối mặt với một loạt vấn đề như bảo mật, mã hóa, lưu trữ cơ sở dữ liệu.

Trước đây, để giải quyết vấn đề này, người sử dụng bắt buộc phải nhớ các thông tin đăng nhập, hoặc lưu trong các file có mã hóa, hoặc sử dụng một chương trình quản lý tài khoản trên máy tính của họ. Tuy nhiên, người dùng vẫn phải nhớ quá nhiều tên truy cập và mật khẩu, người quản trị luôn nhận được các yêu cầu tạo lại mật khẩu và kích hoạt lại tài khoản người dùng, do họ gặp phải các sự cố về thông tin đăng nhập.

Một giải pháp cho vấn đề trên là sử dụng một kỹ thuật xác thực một lần cho tất cả các tài khoản có yêu cầu bảo mật khác nhau. Giải pháp này vừa đảm bảo tính thuận tiện, vừa tăng độ bảo mật khi sử dụng. Hơn nữa, áp lực trong việc quản lý tài khoản đối với nhà quản trị hệ thống có thể được giảm xuống. Hệ thống SSO 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ẽ đem lại lợi ích cả cho người dùng và nhà cung cấp dịch vụ.

Ưu điểm của giải pháp SSO

Đối với người dùng: Hệ thống SSO cung cấp cho người dùng công cụ xác thực đăng nhập một lần. Công cụ này xác thực người dùng đăng nhập vào mọi hệ thống có tích hợp giải pháp SSO, vì vậy, người dùng chỉ cần nhớ một cặp tên truy cập và mật khẩu duy nhất.

Khi cập nhật mật khẩu và tên đăng nhập, người dùng chỉ cần cập nhật một lần cho toàn bộ các hệ thống có yêu cầu xác thực người dùng. Khi đã đăng nhập vào một hệ thống chứa các hệ thống con có tích hợp giải pháp SSO, người dùng có thể dễ dàng truy nhập vào các hệ thống con này mà không cần phải xác thực lại trong một khoảng thời gian nào đó, tùy thuộc vào chính sách quản trị.

Đối với nhà cung cấp dịch vụ, quản trị hệ thống: Người quản trị chỉ cần bảo mật và quản lý thông tin đăng ký của người dùng một lần, vì vậy có thể

giảm dung lượng cơ sở dữ liệu và tránh được các xung đột nảy sinh do phải xử lý mật khẩu của các hệ thống khác nhau, tăng khả năng mở rộng và triển khai các chiến lược bảo mật.

Người quản trị có thể thay đổi và cập nhật thông tin được bảo mật của người dùng khi cần thiết, một cách dễ dàng hơn so với việc thay đổi ở từng hệ thống riêng lẻ mà người dùng đó được phép truy cập. Điều này rất hữu ích khi người dùng thay đổi vị trí của mình với các cấp độ bảo mật khác nhau.

Nhược điểm của giải pháp SSO

Việc xử lý một loạt các hệ thống con có tích hợp giải pháp SSO không đơn giản, bởi vì mỗi hệ thống con có thể hoạt động trên các nền phần cứng và phần mềm khác nhau. Vì vậy, khi cài đặt sẽ phải giải quyết nhiều vấn đề liên quan đến tính tương thích và đồng bộ giữa các hệ thống.

Khi đã được xác thực thành công, người dùng có thể truy nhập vào nhiều ứng dụng trong hệ thống. Bởi vậy, nếu không được bảo mật tốt tại các hệ thống con, thì đối tượng tấn công khi tiếp cận vào một ứng dụng có thể tấn công vào toàn bộ hệ thống.

Các kỹ thuật mang tính mở áp dụng với hệ thống hoặc chưa được chuẩn hóa, hoặc chưa được cung cấp, có thể gây mâu thuẫn và không tương thích với các sản phẩm khác.

Thách thức đối với giải pháp SSO là làm việc theo kiến trúc, các cơ chế bảo mật độc lập đối với các nền ứng dụng. Để thuận tiện và đơn giản hơn khi giải quyết nhược điểm của SSO, người ta thường đi theo hướng xây dựng các ứng dụng sử dụng cơ sở hạ tầng bảo mật, xác thực người dùng chung, thông suốt giữa các ứng dụng. Điều này đòi hỏi phải có định dạng chung khi thể hiện các thông tin xác thực hoặc ủy nhiệm, sao cho tất cả các ứng dụng đều có thể hiểu và chấp nhận chúng. Đồng thời, phải đảm bảo được các ủy nhiệm là đúng đắn. Mặc dù có một số nhược điểm, nhưng giải pháp SSO vẫn đang

được triển khai rộng rãi ở nhiều nước trên thế giới, trong nhiều hệ thống thông tin có nhu cầu xác thực và bảo mật. Nó được đánh giá là một trong các giải pháp hiệu quả, tiện dụng và kinh tế khi triển khai trên diện rộng. Các vấn đề nêu trên sẽ được giải quyết trong thời gian tới khi chúng ta tăng cường chuẩn hóa và có các chính sách cụ thể cho vấn đề này.

Các hệ thống xác thực SSO đang được sử dụng rộng rãi là: CAS (Central Authentication Service), WebAuth. RSA Single Sign On Manager, Open Single Sign - On (OpenSSO) hoạt động dựa trên Token, Java Open SSO (JOSSO)[3].

2.5.2.1. Open SSO Enterprise

OpenSSO là một sản phẩm mã nguồn mở của SUN. Nó là một sản phẩm đơn lẻ, kết hợp các tính năng của Sun Java System. Access Manager, Sun Java System Federation Manager và Sun System SAML v2 Java Plugin, kiểm soát truy nhập, đảm bảo an toàn các dịch vụ web và các dịch vụ định danh

Một phần của tài liệu Nghiên cứu giải pháp bảo mật và xác thực website (Trang 46)

Tải bản đầy đủ (PDF)

(87 trang)