Các lỗ hổng Python và Java chưa được vá cho phép tin tặc vượt qua tường lửa bằng FTP injection

tin tặc

Lỗi mới được phát hiện này trong Java và Python là một vấn đề lớn hiện nay.

Hai ngôn ngữ lập trình phổ biến, Java và Python, chứa các lỗi bảo mật tương tự có thể bị khai thác để gửi email trái phép và vượt qua mọi hệ thống phòng thủ của tường lửa.

Và vì cả hai lỗ hổng vẫn chưa được vá, tin tặc có thể lợi dụng để thiết kế các hoạt động tấn công mạng tiềm ẩn nhằm vào các mạng và cơ sở hạ tầng quan trọng.

Các lỗ hổng chưa được vá thực sự nằm trong cách các ngôn ngữ lập trình Java và Python xử lý các liên kết Giao thức truyền tệp (FTP), trong đó chúng không kiểm tra cú pháp tham số tên người dùng, dẫn đến cái mà các nhà nghiên cứu gọi là lỗ hổng tiêm giao thức.

Tiêm FTP Java/Python để gửi email SMTP trái phép

ftp-protocol-injection-khai thác

Trong một bài đăng trên blog được xuất bản trong tuần qua, nhà nghiên cứu bảo mật Alexander Klink đã trình bày chi tiết về lỗ hổng chèn giao thức FTP trong Thực thể XML eXternal Entity (XXE) của Java, lỗ hổng này cho phép kẻ tấn công đưa các lệnh độc hại không phải FTP vào bên trong yêu cầu kết nối FTP.

Để minh họa cuộc tấn công, Alexander đã chỉ ra cách gửi email trái phép qua SMTP (Giao thức truyền thư đơn giản) trong nỗ lực kết nối FTP, mặc dù kết nối FTP không thành công, vì máy chủ FTP hỗ trợ xác thực nhưng không kiểm tra sự hiện diện của trả về vận chuyển (CR) hoặc nguồn cấp dữ liệu dòng (LF) trong tên người dùng.

Alexander kết luận: “Cuộc tấn công này đặc biệt thú vị trong một tình huống mà bạn có thể tiếp cận một máy chủ thư nội bộ (không bị hạn chế, thậm chí có thể không lọc thư rác hoặc phần mềm độc hại) từ máy đang thực hiện phân tích cú pháp XML”.

Cho phép tiêm Java/Python FTP để vượt qua tường lửa

Tuy nhiên, hai ngày sau, trong một tư vấn bảo mật riêng biệt, nhà nghiên cứu bảo mật Timothy Morgan từ Blindspot Security đã đưa ra phát hiện của mình, cho thấy kịch bản khai thác đe dọa hơn trong đó trình xử lý URL FTP trong cả Java và Python có thể được sử dụng để vượt qua tường lửa.

Morgan cho biết lỗ hổng chèn giao thức FTP như vậy có thể được sử dụng để lừa tường lửa của nạn nhân chấp nhận các kết nối TCP từ web đến hệ thống của máy chủ dễ bị tấn công trên các cổng “cao” của nó (từ 1024 đến 65535).

Bên cạnh cuộc tấn công tiêm giao thức FTP, còn tồn tại một vấn đề bảo mật đã tồn tại hàng thập kỷ trong giao thức FTP được gọi là FTP chế độ cổ điển – một cơ chế không an toàn của các tương tác FTP giữa máy khách và máy chủ, nhưng nhiều nhà cung cấp tường lửa vẫn hỗ trợ nó theo mặc định.

Khi kết nối FTP ở chế độ cổ điển được bắt đầu, tường lửa sẽ tạm thời mở một cổng – thường là từ 1024 đến 65535 – được chỉ định trong lệnh PORT, điều này gây ra rủi ro bảo mật.

HỘI THẢO TRỰC TUYẾN SẮP TỚI

Học cách bảo vệ phạm vi nhận dạng – Các chiến lược đã được chứng minh

Cải thiện bảo mật doanh nghiệp của bạn với hội thảo trực tuyến về an ninh mạng do chuyên gia hướng dẫn sắp tới của chúng tôi: Khám phá các chiến lược Vành đai nhận dạng!

Đừng bỏ lỡ – Tiết kiệm chỗ ngồi của bạn!

Sử dụng sự cố chèn giao thức FTP trong Java và Python, kẻ tấn công biết địa chỉ IP nội bộ của máy chủ được nhắm mục tiêu có thể bắt đầu kết nối FTP ở chế độ cổ điển mà kẻ tấn công có thể sử dụng cho mục đích bất chính.

Morgan đã xác định rằng kẻ tấn công có thể mở một cổng trong tường lửa được nhắm mục tiêu chỉ với ba yêu cầu:

  1. Xác định địa chỉ IP nội bộ của nạn nhân – điều này yêu cầu kẻ tấn công “gửi một URL, xem cách ứng dụng khách hoạt động, sau đó thử một địa chỉ khác cho đến khi cuộc tấn công thành công.”
  2. Xác định căn chỉnh gói và đảm bảo rằng lệnh PORT được đưa vào đúng thời điểm, giúp cuộc tấn công hoạt động.
  3. Khai thác lỗ hổng.

Mỗi yêu cầu bổ sung có thể được sử dụng để mở một cổng TCP khác.


Lỗ hổng chèn giao thức có thể khai thác dễ dàng

Tuy nhiên, nhà nghiên cứu đã cảnh báo rằng khai thác của anh ta có thể được sử dụng cho các cuộc tấn công trung gian (MitM), giả mạo yêu cầu phía máy chủ (SSRF), tấn công XEE, v.v. – và một khi vượt qua tường lửa, các máy chủ để bàn có thể bị tấn công ngay cả khi họ chưa cài đặt Java.

Tất cả những gì kẻ tấn công cần là thuyết phục nạn nhân truy cập ứng dụng Java hoặc Python độc hại được cài đặt trên máy chủ để vượt qua toàn bộ tường lửa.

Morgan cho biết: “Nếu một người dùng máy tính để bàn có thể bị thuyết phục truy cập một trang web độc hại trong khi Java được cài đặt, ngay cả khi các ứng dụng Java bị vô hiệu hóa, họ vẫn có thể kích hoạt Java Web Start để phân tích tệp JNLP (Giao thức khởi chạy mạng Java)”. “Những tệp này có thể chứa các URL FTP độc hại gây ra lỗi này.”

“Cũng lưu ý rằng vì Java phân tích cú pháp các tệp JNLP trước khi đưa ra bất kỳ cảnh báo bảo mật nào cho người dùng, nên cuộc tấn công có thể hoàn toàn thành công mà không có bất kỳ dấu hiệu nào cho người dùng (trừ khi chính trình duyệt cảnh báo người dùng về việc khởi chạy Java Web Start).”

Theo Morgan, một lỗ hổng gần như giống hệt cũng tồn tại trong thư viện urllib2 và urllib của Python, mặc dù “lỗ hổng này dường như chỉ giới hạn trong các cuộc tấn công thông qua tên thư mục được chỉ định trong URL.”


Lỗ hổng tiêm giao thức vẫn chưa được vá

Morgan cho biết lỗ hổng tiêm giao thức FTP đã được công ty của ông báo cáo cho nhóm Python vào tháng 1 năm 2016 và Oracle vào tháng 11 năm 2016, nhưng cả hai bên đều chưa đưa ra bất kỳ bản cập nhật nào để giải quyết vấn đề.

Morgan đã phát triển khai thác bằng chứng khái niệm (PoC) nhưng hiện đang tạm dừng xuất bản khai thác của mình cho đến khi Oracle và Python phản hồi việc tiết lộ và phát hành các bản vá.

Khai thác của Morgan đã được thử nghiệm thành công đối với tường lửa Palo Alto Networks và Cisco ASA, mặc dù các nhà nghiên cứu tin rằng nhiều tường lửa thương mại cũng dễ bị tấn công luồng FTP.

Vì vậy, cho đến khi có các bản vá lỗi, Morgan đề nghị người dùng gỡ cài đặt Java trên máy tính để bàn và trong trình duyệt của họ, cũng như tắt hỗ trợ cho FTP “chế độ cổ điển” trên tất cả các tường lửa.

Leave a Reply