FixVibe
Covered by FixVibecritical

SQL SQL: Ngăn chặn truy cập cơ sở dữ liệu trái phép

SQL SQL (SQLi) là một lỗ hổng nghiêm trọng trong đó kẻ tấn công can thiệp vào các truy vấn cơ sở dữ liệu của ứng dụng. Bằng cách chèn cú pháp SQL độc hại, kẻ tấn công có thể bỏ qua xác thực, xem dữ liệu nhạy cảm như mật khẩu và chi tiết thẻ tín dụng hoặc thậm chí xâm phạm máy chủ cơ bản.

CWE-89

Tác động của việc tiêm SQL

Tính năng chèn SQL (SQLi) cho phép kẻ tấn công can thiệp vào các truy vấn mà ứng dụng thực hiện đối với cơ sở dữ liệu [S1] của nó. Tác động chính bao gồm truy cập trái phép vào dữ liệu nhạy cảm như mật khẩu người dùng, chi tiết thẻ tín dụng và thông tin cá nhân [S1].

Ngoài việc đánh cắp dữ liệu, kẻ tấn công thường có thể sửa đổi hoặc xóa các bản ghi cơ sở dữ liệu, dẫn đến những thay đổi liên tục trong hành vi ứng dụng hoặc mất dữ liệu [S1]. Trong các trường hợp có mức độ nghiêm trọng cao, SQLi có thể được nâng cấp để xâm phạm cơ sở hạ tầng phía sau, kích hoạt các cuộc tấn công từ chối dịch vụ hoặc cung cấp một cửa hậu liên tục vào các hệ thống [S1][S2] của tổ chức.

Nguyên nhân cốt lõi: Xử lý đầu vào không an toàn

Nguyên nhân cốt lõi của việc tiêm SQL là việc vô hiệu hóa không đúng cách các phần tử đặc biệt được sử dụng trong lệnh SQL [S2]. Điều này xảy ra khi một ứng dụng xây dựng các truy vấn SQL bằng cách nối trực tiếp đầu vào chịu ảnh hưởng từ bên ngoài vào chuỗi truy vấn [S1][S2].

Do đầu vào không được cách ly chính xác với cấu trúc truy vấn nên trình thông dịch cơ sở dữ liệu có thể thực thi các phần đầu vào của người dùng dưới dạng mã SQL thay vì xử lý nó dưới dạng dữ liệu bằng chữ [S2]. Lỗ hổng này có thể biểu hiện ở nhiều phần khác nhau của truy vấn, bao gồm câu lệnh SELECT, giá trị INSERT hoặc câu lệnh UPDATE [S1].

Sửa chữa và giảm nhẹ bê tông

Sử dụng truy vấn được tham số hóa

Cách hiệu quả nhất để ngăn chặn việc tiêm SQL là sử dụng các truy vấn được tham số hóa, còn được gọi là các câu lệnh được chuẩn bị sẵn [S1]. Thay vì nối các chuỗi, các nhà phát triển nên sử dụng các cơ chế có cấu trúc để thực thi việc phân tách dữ liệu và mã [S2].

Nguyên tắc đặc quyền tối thiểu

Các ứng dụng nên kết nối với cơ sở dữ liệu bằng các đặc quyền thấp nhất cần thiết cho tác vụ [S2] của chúng. Tài khoản ứng dụng web không được có đặc quyền quản trị và phải bị giới hạn ở các bảng hoặc thao tác cụ thể cần thiết cho chức năng [S2] của nó.

Xác thực và mã hóa đầu vào

Mặc dù không thay thế cho việc tham số hóa, nhưng xác thực đầu vào cung cấp [S2] chuyên sâu về khả năng bảo vệ. Các ứng dụng nên sử dụng chiến lược chấp nhận được, đã biết, xác thực rằng đầu vào phù hợp với loại, độ dài và định dạng dự kiến ​​[S2].

FixVibe kiểm tra nó như thế nào

FixVibe đã bao gồm việc chèn SQL thông qua mô-đun máy quét active.sqli có kiểm soát. Quét hoạt động chỉ chạy sau khi xác minh và chứng thực quyền sở hữu tên miền. Quá trình kiểm tra này thu thập thông tin các điểm cuối GET có cùng nguồn gốc với các tham số truy vấn, thiết lập phản hồi cơ sở, tìm kiếm các điểm bất thường về boolean dành riêng cho SQL và chỉ báo cáo phát hiện sau khi xác nhận thời gian qua nhiều độ dài độ trễ. Quét kho lưu trữ cũng giúp phát hiện nguyên nhân gốc sớm hơn thông qua code.web-app-risk-checklist-backfill, tính năng này gắn cờ các lệnh gọi SQL thô được xây dựng bằng phép nội suy mẫu.