Cuộc tấn công này bao gồm việc thay đổi số nhận dạng tài nguyên được ứng dụng sử dụng để thực hiện một tác vụ độc hại. Khi một ứng dụng xác định loại tài nguyên hoặc vị trí dựa trên đầu vào của người dùng, chẳng hạn như tên tệp hoặc số cổng, dữ liệu này có thể được thao tác để thực thi hoặc truy cập các tài nguyên khác nhau. Loại tài nguyên bị ảnh hưởng bởi đầu vào của người dùng cho biết loại nội dung có thể được hiển thị. Ví dụ: một ứng dụng cho phép nhập các ký tự đặc biệt như dấu chấm, dấu gạch chéo và dấu gạch chéo ngược sẽ rất rủi ro khi được sử dụng cùng với các phương thức tương tác với hệ thống tệp.
Các bài viết liên quan:
Cuộc tấn công chèn ép tài nguyên khác với Thao tác đường dẫn vì việc tiêm tài nguyên tập trung vào việc truy cập các tài nguyên khác với hệ thống tệp cục bộ, trong khi Thao tác đường dẫn tập trung vào việc truy cập hệ thống tệp cục bộ.
Xem thêm Tìm hiểu về CSV Injection
Khái niệm Resource Injection
Khái niệm Resource Injection là một loại tấn công mà kẻ tấn công cố gắng chèn hoặc thay đổi các nguồn tài nguyên trong ứng dụng một cách bất hợp pháp hoặc không được ủy quyền. Resource trong trường hợp này có thể bao gồm các tài nguyên như tệp tin, cơ sở dữ liệu, thông tin hệ thống, hoặc các thành phần khác mà ứng dụng sử dụng để hoạt động.
Xem thêm Controller Resource trong Laravel
Khi tấn công Resource Injection, kẻ tấn công thường sử dụng các lỗ hổng bảo mật hoặc thiết kế yếu của ứng dụng để thực hiện việc chèn hoặc thay đổi thông tin tài nguyên. Điều này có thể dẫn đến các hậu quả nghiêm trọng, bao gồm:
- Truy cập trái phép vào dữ liệu nhạy cảm: Kẻ tấn công có thể chèn mã độc để lấy thông tin nhạy cảm, như tên đăng nhập, mật khẩu, thông tin tài chính hoặc thông tin khách hàng.
- Sửa đổi dữ liệu: Kẻ tấn công có thể thay đổi dữ liệu trong tệp tin hoặc cơ sở dữ liệu, gây ra sự cố hoặc làm mất tính toàn vẹn của dữ liệu.
- Tấn công khác: Resource Injection có thể làm mở ra các lỗ hổng bảo mật khác, cho phép kẻ tấn công thực hiện các tấn công khác như Remote Code Execution (RCE), Cross-Site Scripting (XSS), hoặc Server-Side Request Forgery (SSRF).
Để phòng ngừa Resource Injection, các biện pháp bảo mật cần được triển khai, bao gồm:
- Kiểm tra và xác thực đầu vào: Đảm bảo rằng tất cả đầu vào từ người dùng hoặc các nguồn bên ngoài được kiểm tra và xác thực kỹ lưỡng trước khi sử dụng.
- Sử dụng cơ chế bảo mật phân quyền: Áp dụng các cơ chế phân quyền phù hợp để đảm bảo rằng chỉ những người dùng được ủy quyền mới có thể truy cập và thay đổi các nguồn tài nguyên.
- Sử dụng các kỹ thuật mã hóa dữ liệu: Mã hóa dữ liệu quan trọng như thông tin xác thực hoặc dữ liệu nhạy cảm trong quá trình truyền và lưu trữ để ngăn chặn việc chèn hoặc thay đổi bất hợp pháp.
Ngoài ra, kiểm tra bảo mật định kỳ, áp dụng các quy trình kiểm tra và xác thực dữ liệu và cập nhật hệ thống cũng là những biện pháp quan trọng trong việc phòng ngừa Resource Injection.
Xem thêm Lý thuyết số học trong mã hóa
Ví dụ 1
Các ví dụ sau đại diện cho một ứng dụng lấy số cổng từ một yêu cầu HTTP và tạo một ổ cắm với số cổng này mà không cần bất kỳ xác thực nào. Người dùng sử dụng proxy có thể sửa đổi cổng này và có được kết nối trực tiếp (ổ cắm) với máy chủ.
Mã Java:
String rPort = request.getParameter("remotePort"); ... ServerSocket srvr = new ServerSocket(rPort); Socket skt = srvr.accept(); ...
Mã .Net:
int rPort = Int32.Parse(Request.get_Item("remotePort ")); ... IPEndPoint endpoint = new IPEndPoint(address,rPort); socket = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.Connect(endpoint); ...
Ví dụ 2
Ví dụ này giống như trước, nhưng nó lấy số cổng từ các yêu cầu CGI bằng C ++:
char* rPort = getenv("remotePort "); ... serv_addr.sin_port = htons(atoi(rPort)); if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) error("ERROR connecting"); ...
Ví dụ 3
Ví dụ này trong PLSQL / TSQL lấy đường dẫn URL từ CGI và tải xuống tệp chứa trong đó. Nếu người dùng sửa đổi đường dẫn hoặc tên tệp, có thể tải xuống các tệp tùy ý từ máy chủ:
... filename := SUBSTR(OWA_UTIL.get_cgi_env('PATH_INFO'), 2); WPG_DOCLOAD.download_file(filename); ...
Ví dụ 4
Ví dụ này cho thấy một cuộc tấn công chèn tài nguyên tập trung vào việc lấy mã băm Microsoft Windows SMB từ một máy chủ từ xa:
http://www.vulnerable.com/open.aspx?filename=\\192.168.1.2\test.txt
Xem thêm Kiểm tra bảo mật website – Injection pentest
Các biện pháp phòng ngừa Resource Injection
Để phòng ngừa Resource Injection, bạn có thể áp dụng các biện pháp bảo mật sau đây:
- Kiểm tra và xác thực đầu vào: Đảm bảo rằng tất cả đầu vào từ người dùng hoặc các nguồn bên ngoài được kiểm tra và xác thực kỹ lưỡng trước khi sử dụng. Điều này bao gồm:
- Kiểm tra đầu vào: Kiểm tra tính hợp lệ của dữ liệu đầu vào để đảm bảo rằng nó tuân thủ các quy tắc và định dạng được xác định trước. Có thể sử dụng các biểu thức chính quy, bộ lọc hoặc phân tích cú pháp để kiểm tra đầu vào.
- Xác thực đầu vào: Xác thực và xác minh tính toàn vẹn của dữ liệu đầu vào để đảm bảo rằng nó không bị thay đổi hoặc là dữ liệu giả mạo. Sử dụng các phương pháp mã hóa, chữ ký số hoặc cơ chế bảo mật khác để xác thực dữ liệu.
- Sử dụng cơ chế bảo mật phân quyền: Áp dụng cơ chế phân quyền phù hợp để đảm bảo rằng chỉ những người dùng được ủy quyền mới có thể truy cập và thay đổi các nguồn tài nguyên. Giới hạn quyền truy cập của người dùng dựa trên vai trò, quyền hạn và nguyên tắc nguyên tắc của hệ thống.
- Sử dụng các kỹ thuật mã hóa dữ liệu: Mã hóa dữ liệu quan trọng như thông tin xác thực hoặc dữ liệu nhạy cảm trong quá trình truyền và lưu trữ. Sử dụng các thuật toán mã hóa mạnh và tuân thủ các tiêu chuẩn bảo mật để đảm bảo rằng dữ liệu không thể bị đánh cắp hoặc sửa đổi trong quá trình truyền.
- Áp dụng kiểm tra bảo mật và kiểm tra mã nguồn: Thực hiện kiểm tra bảo mật và kiểm tra mã nguồn để phát hiện và khắc phục các lỗ hổng bảo mật liên quan đến Resource Injection. Điều này bao gồm sử dụng công cụ kiểm tra bảo mật tự động, kiểm tra mã nguồn tĩnh và động, và kiểm tra thử phần mềm để tìm ra các lỗ hổng và điểm yếu trong ứng dụng.
- Cập nhật hệ thống và phần mềm: Đảm bảo rằng hệ thống và phần mềm của bạn luôn được cập nhật mới nhất với các bản vá bảo mật. Các nhà cung cấp phần mềm thường cung cấp các bản vá và bản vá bảo mật để khắc phục các lỗ hổng bảo mật đã được phát hiện.
- Giáo dục và đào tạo: Đào tạo nhân viên về các nguy cơ liên quan đến Resource Injection và các biện pháp phòng ngừa. Nhân viên cần được hiểu rõ về tác động của Resource Injection và quy trình bảo mật để xử lý nó.
Nhớ rằng không có biện pháp phòng ngừa tuyệt đối và mỗi ứng dụng cần được xem xét riêng để áp dụng các biện pháp bảo mật phù hợp.