Lỗ hổng SQL Injection – Nguy cơ chiếm quyền truy cập quản trị vào máy chủ cơ sở dữ liệu.

Lỗ hổng SQL là gì?

SQL injection – còn được gọi là SQLi – sử dụng những lỗ hổng trong các kênh đầu vào (input) của website để nhắm mục tiêu vào cơ sở dữ liệu nằm trong phần phụ trợ của ứng dụng website, nơi lưu giữ những thông tin nhạy cảm và có giá trị nhất. Chúng có thể được kẻ tấn công sử dụng để ăn cắp hoặc xáo trộn dữ liệu, cản trở sự hoạt động của các ứng dụng và trong trường hợp xấu nhất, nó có thể chiếm được quyền truy cập quản trị vào máy chủ cơ sở dữ liệu. 

Lỗ hổng SQL Injection nghiêm trọng trong một phần mềm được các bệnh viện trên toàn thế giới sử dụng:

Các chuyên gia an ninh mạng báo cáo phát hiện hai lỗ hổng nghiêm trọng trong Philips Tasy EMR, một công cụ quản lý hồ sơ và dịch vụ y tế. Được theo dõi là CVE-2021-39375 và CVE-2021-39376, cả hai lỗi này đều được chấm 8.8/10 theo thang điểm CVSS (Common Vulnerability Scoring System).

Các lỗi SQL Injection tồn tại do việc sử dụng sai các ký tự đặc biệt trong các lệnh SQL. Các lỗi này nằm trong tất cả các phiên bản Tasy EMR trước 3.06.1083, vì vậy quản trị viên cần nâng cấp để giảm thiểu rủi ro xuống mức thấp nhất.

Cũng như những sản phẩm khác, Tasy EMR lưu trữ vô số thông tin nhạy cảm, bao gồm dữ liệu nhận dạng cá nhân, hồ sơ y tế, chẩn đoán, chi tiết thuốc, hóa đơn và hồ sơ cá nhân khác, vì vậy việc xâm nhập hệ thống có thể gây tai hại cho bệnh viện, nhân viên và bệnh nhân.

Để tìm hiểu thêm về các rủi ro bảo mật thông tin, các biến thể của phần mềm độc hại, lỗ hổng bảo mật và công nghệ thông tin, vui lòng truy cập các trang website của Viện An ninh mạng Quốc tế (IICS).

Nguồn tham khảo : Lỗ hổng SQL Injection nghiêm trọng trong một phần mềm được các bệnh viện trên toàn thế giới sử dụng

Cảnh báo từ các chuyên gia:

Các chuyên gia cho rằng những sai sót này  rõ ràng hơn đối với các tổ chức y tế công cộng, vì những hạn chế về nguồn lực của họ khiến họ trở thành mục tiêu lý tưởng cho các tác nhân đe dọa, đặc biệt khi xét thấy phần lớn công việc của họ vẫn là cuộc chiến chống lại đại dịch.

CISA cũng đã đưa ra cảnh báo, họ coi việc cập nhật sản phẩm này là một ưu tiên hàng đầu do nó hiện đang được sử dụng rộng rãi. Theo Cơ quan, giải pháp này được sử dụng tại các bệnh viện trên khắp châu Mỹ Latinh, chủ yếu ở Argentina, Brazil, Mexico, Colombia, Cộng hòa Dominica và các quốc gia khác. Dữ liệu của Philips xác nhận tuyên bố như vậy, vì công ty đề cập rằng Tasy EMR được sử dụng trong hơn 1.000 tổ chức chăm sóc sức khỏe trên toàn thế giới.

Như đã đề cập ở trên, khuyến nghị chính là nâng cấp các triển khai Tasy EMR dễ bị tấn công lên phiên bản an toàn mà Philips đã xuất bản hướng dẫn đi kèm trên các nền tảng chính thức của mình. Các tổ chức y tế cũng nên cố gắng giảm thiểu việc người dùng ngoài tiếp xúc với dữ liệu và các khu vực khác trong hệ thống. Việc sử dụng các công cụ bảo mật như phần mềm VPN và các sản phẩm chống phần mềm độc hại cũng được khuyến khích.

Tại sao nên sử dụng dịch vụ Pentest?

  • Dịch vụ Pentest giúp sớm tìm ra lỗi trong quá trình xây dựng để chủ động khắc phục lỗ hổng kỹ thuật trong hệ thống.
  • Đóng vai trò như vòng kiểm tra cuối cùng trước khi đưa ứng dụng vào giai đoạn vận hành.
  • Giúp hệ thống có đủ điều kiện để nhận các chứng chỉ an toàn.

Tham khảo thêm dịch vụ Pentest tại VNCS Global tại đây!

Tự vệ các cuộc tấn công lỗ hổng SQL Injection 

Đừng bao giờ tin tưởng vào input của người dùng

Quy tắc đầu tiên về input mà người dùng nhập là “don’t trust and verify” (không tin tưởng và cần xác minh”), có nghĩa là tất cả những gì người dùng nhập vào phải được coi là độc hại trừ khi có bằng chứng khác. Nó không chỉ dành cho các hộp nhập liệu đơn giản như các vùng văn bản mà còn cho mọi thứ khác – như input ẩn, các chuỗi tham số truy vấn, cookie và tệp tải lên.

Browsers của trình duyệt không cho phép người dùng thao tác với một input, không nghĩa là nó không thể bị giả mạo. Các công cụ đơn giản như Burp Suite cho phép người dùng chiếm được HTTP requests và sửa đổi bất cứ điều gì, kể cả các giá trị dạng ẩn, trước khi gửi chúng tới máy chủ. Và nếu bạn nghĩ mình là người thông minh bằng cách sử dụng Base64 mã hóa dữ liệu, bạn đã nhầm, nó có thể dễ dàng được giải mã, sửa đổi và mã hoá lại bởi kẻ tấn công

Xác nhận các chuỗi input ở phía máy chủ

Xác nhận là quá trình đảm bảo dữ liệu người dùng nhập vào là hợp lệ và vô hiệu hóa bất kỳ lệnh độc hại tiềm ẩn nào có thể được nhúng trong chuỗi nhập. Ví dụ, trong PHP, bạn có thể sử dụng mysql \ _real \ _escape \ _string () để thoát các ký tự có thể thay đổi bản chất của lệnh SQL.

Sử dụng các câu lệnh tham số

Một lựa chọn tốt hơn để thoát khỏi tấn công SQL Injection là sử dụng các câu lệnh tham số. Các câu lệnh tham số được định nghĩa bằng cách thêm tên của placeholder vào các lệnh SQL, thứ sau này sẽ được thay thế bởi input của người dùng. ASP.NET có một bộ API rất trực quan và dễ sử dụng cho mục đích này.

Phân định rõ ràng kiểu input

Mẹo này dành cho các ngôn ngữ như PHP, khi bạn thường không định nghĩa các kiểu dữ liệu cho các biến số

Việc định nghĩa rõ ràng kiểu input như một cách để loại bỏ những dữ liệu có thể gây sai cho câu lệnh SQL. Vì vậy, nếu bạn đang mong đợi người dùng nhập “int” cho tham số “age”, bạn có thể đảm bảo sự an toàn của input: 

//Thông thường

$ id = $ _GET [ ‘id’ ];

//lọc đầu vào

$ id = Isset ($ _ GET [‘id’])? (string) (int) $ _ GET [‘id’]: false;

 

Làm thế nào để triệt để lỗ hổng SQL?

Chỉ có biện pháp giảm thiểu khả năng khai thác thành công hoặc tác động đến hệ thống

  • Lọc dữ liệu đầu vào: không cho phép người dùng nhập dữ liệu đặc biệt 
  • Sử dụng tường lửa ứng dụng web WAF
  • Phân quyền rõ ràng: đối với các bảng hoặc cột đặc biệt cần xác thực người dùng trước khi thực thi truy vấn
  • Tránh quyền quản trị
  • Mã hóa dữ liệu nhạy cảm
  • Không lưu trữ dữ liệu nhạy cảm khi không cần thiết

Kết luận

SQL Injection đã tồn tại  từ rất lâu và có thể xếp hạng cao nhất các lỗ hổng nguy hiểm trong những năm tới. Chỉ mất một vài bước dễ dàng để bảo vệ chính bạn và người dùng của bạn khỏi sự tấn công này.  Lỗ hổng SQL Injection  này sẽ là một trong những ưu tiên hàng đầu khi kiểm tra mã nguồn cho các lỗ hổng bảo mật.

Việc đầu tiên cần làm để tránh trở thành nạn nhân của cuộc tấn công tiếp theo về vi phạm dữ liệu SQL injection là kiểm soát và xác nhận input của người dùng, tiếp theo đó cần tự trang bị những công cụ cần thiết để bảo vệ cho website của mình một khi chúng ghé thăm.