Làm thế nào để bạn bảo vệ chống lại các cuộc tấn công PREPROCESSOR độc hại trong Bảng ngoài của Oracle?


7

Tôi là một DBA mới và gần đây tôi đã phát hiện ra tùy chọn Bảng bên ngoài trong Oracle bằng tính năng PREPROCESSOR ( http://doad.oracle.com/otndocs/products/database/enterprise_edition/utilities/pdf/xtables_preproc11g_1009.pdf ) Thật không may, tính năng này, có vẻ khá hữu ích trong phòng chờ của chúng tôi có vẻ rất nguy hiểm, vì ai đó có quyền truy cập vào HĐH (hoặc từ xa ....) có thể khai thác nó để khiến cơ sở dữ liệu bị xâm phạm, hoặc thậm chí tệ nhất - toàn bộ HĐH.

Tôi đã hạn chế quyền truy cập vào tính năng này ở mức tối thiểu và thu hồi bất kỳ đặc quyền bổ sung nào có thể cho phép truy cập bên ngoài vào os (extproc, java, v.v.)

Tuy nhiên, vẫn có những lúc chúng ta phải sử dụng tính năng này và đây là lúc tôi hỏi các bạn 2 câu hỏi chính:

  1. Làm thế nào để bạn bảo vệ chống lại các cuộc tấn công độc hại bằng tính năng độc ác này?
  2. Giả sử có điều gì đó đã thất bại trong các cơ chế bảo mật, có những cách nào để phát hiện ra rằng ai đó đã sử dụng tính năng này theo cách xấu? Những loại truy vấn (hoặc nội dung của chúng) có thể được nhìn thấy?

Cảm ơn (:

Câu trả lời:


5

Oracle đã có khả năng thực thi mã bên ngoài từ SQL trong một thời gian dài - EXTPROC , hộp dữ liệu , v.v. Bạn nói

ai đó có quyền truy cập vào HĐH (hoặc từ xa ....) có thể khai thác nó để khiến cơ sở dữ liệu bị xâm phạm

Nhưng điều này thậm chí có nghĩa là gì? Ai đó có quyền truy cập vào HĐH vì oraclengười dùng có thể truy cập trực tiếp DBF của bạn (chúng chỉ là các tệp trên đĩa), có thể đính kèm trực tiếp vào SGA, có thể tạo bản sao lưu và sao chép nó, có thể theo dõi lưu lượng truy cập mạng (như root). Trong trường hợp của một nhà phát triển độc hại, họ có thể làm bất cứ điều gì họ muốn trong PL / SQL và bao bọc nó. Tôi không thấy cách bạn giới thiệu một lỗ hổng mới bằng cách sử dụng tính năng này. Nếu nó làm cho công việc của bạn hoặc công việc của người dùng của bạn dễ dàng hơn, hãy thực hiện nó.


"ai đó có quyền truy cập vào HĐH (hoặc từ xa ....) có thể khai thác nó để khiến cơ sở dữ liệu bị xâm phạm" Tôi có nghĩa là một số ứng dụng trên máy chủ của chúng tôi có một số lỗ hổng SQL từ xa mà chúng tôi chưa tìm thấy, loại truy vấn nào bạn sẽ mong đợi để có được? Tôi không nói về truy cập vật lý hoặc vỏ từ xa, v.v., vì đây là một ngõ cụt. Đây không phải là sqli-101, tôi biết, tôi quan tâm nhiều hơn đến việc sử dụng độc hại của tính năng này và cách tránh nó (mặc dù bạn đang hạn chế quyền truy cập tối thiểu nhất có thể)
dotdot

Trong trường hợp EXTPROC (mà tôi biết nhiều nhất), nó không thấy SQL thô từ máy khách, nó được gọi với các tham số là kiểu dữ liệu Oracle, ví dụ OCIDate, OCINumber, v.v.
Gaius

4

Nếu người dùng có quyền truy cập vào HĐH và thư mục chứa chương trình PREPROCESSOR thì về mặt lý thuyết họ có thể làm bất cứ điều gì mà người dùng hệ điều hành Oracle có thể làm.

  1. Ngăn chặn điều này bằng cách ngăn chặn mức độ truy cập này vào HĐH.

  2. Giám sát điều này bằng cách giám sát truy cập vào HĐH và vào thư mục.


1
lưu ý khi thực hiện điều này, ví dụ như mã cơ sở dữ liệu Oracle như UTL_FILE có thể truy cập thư mục / thư mục tiền xử lý, do đó bạn có thể cần xem lại quyền truy cập trong cơ sở dữ liệu cũng như ở cấp độ o / s.
Niall Litchfield

@Niall Tất nhiên, nhưng vì OP lo ngại về người đã truy cập HĐH nên tôi không thấy cần phải biết điều đó có thể xảy ra như thế nào.
Leigh Riffel

1

Như đã đề cập, có hai vectơ chính của sự thỏa hiệp:

  1. Mức độ thỏa hiệp của cơ sở dữ liệu.

    Giảm nhẹ:

    • Sử dụng các tính năng hệ điều hành tiêu chuẩn, giới hạn bởi đặc quyền, nhưng rất nhiều tệp cần được bảo vệ.
    • Ngăn người dùng bình thường đăng nhập, chỉ cho phép truy cập qua sqlnet (được khuyến nghị).
  2. Thỏa hiệp SQLNet / SQL của cơ sở dữ liệu.

    Giảm nhẹ:

    • Các lược đồ đặc quyền giới hạn được sử dụng cho ứng dụng web (một người dùng khác là chủ sở hữu của các bảng và cấp quyền truy cập cụ thể cho người dùng ứng dụng web).
    • Sử dụng các gói để cấp quyền truy cập cụ thể vào các tính năng của cơ sở dữ liệu với các kiểm tra cho việc sử dụng sai.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.