Professional Documents
Culture Documents
(123doc) - Oracle-Listener-Attack
(123doc) - Oracle-Listener-Attack
I. Listener
1. Khái niệm
Listener là một dịch vụ nhận các yêu cầu từ các máy khách, tiếp nhận và chuyển các
yêu cầu của máy khách đến máy chủ.
Khi một database instance bắt đầu, nó tự đăng ký một Listener bằng một hoặc nhiều
tên dịch vụ. Khi một chương trình khách hoặc cơ sở dữ liệu kết nối với Listener, nó sẽ
yêu cầu kết nối với một dịch vụ.
Một tên dịch vụ có thể xác định nhiều cá thể cơ sở dữ liệu và một cá thể có thể thuộc
về nhiều dịch vụ. Vì lý do này, trình lắng nghe hoạt động như một trung gian giữa máy
khách và các instance và định tuyến yêu cầu kết nối đến instance thích hợp. Khách hàng
kết nối với một dịch vụ không cần chỉ instance họ yêu cầu.
Để kết nối với một dịch vụ cơ sở dữ liệu, trước tiên máy khách liên hệ với một tiến
trình lắng nghe thường nằm trên máy chủ cơ sở dữ liệu. Listener nhận các yêu cầu kết
nối máy khách đến và gửi các yêu cầu này đến máy chủ cơ sở dữ liệu. Sau khi kết nối
được thiết lập, máy khách và máy chủ cơ sở dữ liệu giao tiếp trực tiếp.
2. Hoạt động
Khi Listener nhận được yêu cầu của khách hàng, nó sẽ chọn một trong những trình xử
lý dịch vụ đã đăng ký. Tùy thuộc vào loại trình xử lý đã chọn, giao thức truyền thông
được sử dụng và hệ điều hành của máy chủ cơ sở dữ liệu, Listener thực hiện một trong
các hành động sau:
- Chuyển yêu cầu kết nối trực tiếp đến một Dispatcher.
- Gửi thông báo chuyển hướng trở lại máy khách với vị trí của Dispatcher hoặc máy
chủ chuyên dụng. Sau đó máy khách kết nối trực tiếp với Dispatcher hoặc máy chủ
chuyên dụng
- Tạo ra một quy trình máy chủ chuyên dụng và chuyển kết nối máy khách đến quy
trình máy chủ chuyên dụng.
Sau khi Listener hoàn thành thao tác kết nối cho máy khách, máy khách sẽ giao
tiếp trực tiếp với cơ sở dữ liệu Oracle mà không cần sự tham gia của Listener. Listener
tiếp tục nghe các phiên mạng đến.
2. Listener đưa yêu cầu kết nối trực tiếp cho Dispatcher
2. Listener cung cấp vị trí của Dispatcher cho khách hàng trong một tin nhắn chuyển
hướng.
2. Mô tả
1. Kẻ tấn công chạy một proxy TCP để chuyển tiếp tất cả các kết nối tới cổng cục bộ
của hắn đến cổng của máy chủ cơ sở dữ liệu thực. Sau đó thực hiện đăng ký dịch vụ
với máy chủ cơ sở dữ liệu (không cần xác thực). Lúc này, máy của kẻ tấn công trở
thành một phần cụm
2. Khi người dùng kết nối tới cơ sở dữ liệu, máy chủ sẽ coi máy của kẻ tấn công như
một cân bằng tải.
3. Thay vì kết nối trực tiếp tới cơ sở dữ liệu, một phần lưu lượng giữa máy khách gửi
tới máy chủ sẽ di chuyển qua máy của kẻ tấn công
4. Tương tự như trên, máy chủ cũng sẽ “cân bằng tải” lưu lượng gửi đến máy khách.
3. Mối nguy hại
Một cuộc tấn công TNS Listener có thể gây ra những mối nguy hại như sau:
- Kẻ tấn công nắm bắt dữ liệu trao đổi giữa máy chủ và máy khách
- Kẻ tấn công có thể chèn các lệnh tùy ý gửi đến máy chủ thông qua yêu cầu của
máy khách.
4. Hạn chế
- Kẻ tấn công phải có thể kết nối tới DB server, vì vậy có thể hạn chế IP kết nối tới DB
server
- Kẻ tấn công chỉ nhìn thấy khoảng 50% lưu lượng vì kẻ tấn công tham gia hệ thống
được coi là một cân bằng tải
- Kẻ tấn công chỉ sử dụng được các đặc quyền của User đang request tới DB.
5. Ngăn chặn
Nếu phiên bản Oracle Database đang sử dụng nằm trong danh sách các phiên bản bị ảnh
hưởng bởi các cuộc tấn công TNS Listener thì cách tốt nhất là update các bản vá của
Oracle cho cơ sở dữ liệu của mình.