You are on page 1of 6

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.

Quỳ trình hoạt động như sau:


1. Máy khách gửi một yêu cầu kết nối đến người nghe.
2. Trình nghe phân tích cú pháp yêu cầu của khách hàng và chuyển tiếp nó đến
trình xử lý dịch vụ cho dịch vụ cơ sở dữ liệu được yêu cầu.
3. Máy khách kết nối với cơ sở dữ liệu.
II. Dispatcher
1. Tổng quan
Kiến trúc máy chủ chia sẻ sử dụng trình điều phối để hướng các kết nối máy khách
đến một hàng đợi chung. Một quy trình máy chủ chia sẻ không hoạt động sẽ nhận một
yêu cầu từ hàng đợi này.
Cách tiếp cận này cho phép các quy trình máy chủ phục vụ một số lượng lớn máy
khách. Hay nói cách khác, một quy trình máy chủ cho phép nhiều máy khách kết nối với
cùng một máy chủ mà không cần quy trình máy chủ dành riêng cho từng máy khách.
Một ưu điểm đáng kể của mô hình máy chủ chia sẻ so với mô hình máy chủ chuyên
dụng là giảm tài nguyên hệ thống, cho phép hỗ trợ số lượng người dùng tăng lên.
2. Khái niệm
Dispatcher là một điểm kết nối từ Listener đến Oracle database và hướng nhiều yêu
cầu phiên mạng đến các quy trình máy chủ chia sẻ.
3. Cơ chế hoạt động
Dispatcher có thể hỗ trợ đồng thời nhiều kết nối máy khách. Mỗt kết nối máy khách
được liên kết với một mạch ảo. Mạch ảo là một phần của bộ nhớ chia sẻ được sử dụng
bởi sử dụng bởi dispatcher cho các yêu cầu và trả lời kết nối database từ máy khách.
III. Listener Actions và Dispatcher
Listerner sử dụng Dispatcher như một trình xử lý dịch vụ mà nó có thể hướng các yêu
cầu của khách hàng. Khi một yêu cầu được gửi đến, Listener thực hiện một trong các
hành động sau:
- Gửi yêu cầu kết nối trực tiếp cho Dispatcher
- Đưa ra thông báo chuyển hướng tới máy khách, chứa protocol address của
Dispatcher. Sau đó, máy khách kết thúc phiên mạng cho Listener và thiết lập một
phiên mạng cho Dispatcher, sử dụng địa chỉ mạng được cung cấp trong redirect
message.
1. Direct Hand-Off to a Dispatcher
1. Listener nhận được yêu cầu kết nối máy khách

2. Listener đưa yêu cầu kết nối trực tiếp cho Dispatcher

3. Máy khách hiện đã được kết nối với Dispatcher.

2. Redirected Connection to a Dispatcher

1. Listener nhận được yêu cầu kết nối máy khách.

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.

3. Máy khách kết nối trực tiếp với Dispatcher.

IV. TNS Listener Poison Attack (CVE-2012-1675)


1. Tổng quan
TNS Listener có thể được quả lý từ xa ngay lập tức mà không cần phải cung cấp mật
khẩu. Lợi dụng điều này, kẻ tấn công thực hiện đăng ký các intances của cơ sỡ dữ liệu
đã được đăng ký trước đó. Khi hai hoặc nhiều instances của cơ sở dữ liệu được đăng ký
với cùng một tên, TNS Listener sẽ thực hiện cân bằng tải giữa tất cả các máy chủ cơ sở
dữ liệu từ xa đã đăng ký. Máy chủ cơ sở dữ liệu từ xa đã đăng ký mới nhất sẽ nhận được
kết nối máy khách đầu tiên và kết nối thứ hai sẽ chuyển đến máy chủ cơ sở dữ liệu từ xa
đã đăng ký trước đó.

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.

You might also like