Tràn vùng Heap trong Truyền số thực dấu phẩy động (CVE-2013-4164)

Một lỗi bảo mật làm tràn Heap trong Truyền số thực dấu phẩy động được phát hiện dưới mã CVE-2013-4164.

Thông tin chi tiết

Bất cứ khi nào một chuỗi (string) được chuyển đổi qua một giá trị số thực dấu phẩy động (floating point value), một chuỗi với giá trị đặc biệt có thể gây ra tràn vùng đệm heap. Lỗi này có thể dẫn đến Tấn công từ chối dịch vụ (DDoS) thông qua lỗi segmentation và khả năng thực thi các mã lạ. Tất cả các chương trình chuyển đổi đầu vào không rõ danh tính qua một số thực dấu phẩy động (thường gặp trong các trường hợp nhận JSON) sẽ bị ảnh hưởng.

Các mã bị bị ảnh hưởng có thể như sau:

untrusted_data.to_f

Nhưng tất cả các mã tạo ra các giá trị có dẫu phẩy động từ các dữ liệu bên ngoài sẽ bị tổn thương, như ví dụ sau:

JSON.parse untrusted_data

Xin lưu ý lỗi này giống CVE-2009-0689.

Khuyến cáo tất cả người dùng đang chạy các ấn bản bị ảnh hưởng nên nâng cấp lên các phiển bản được vá.

Các phiên bản bị ảnh hưởng

  • Tất cả bản Ruby 1.8 sau Ruby 1.8.6 patchlevel 230
  • Tất cả bản Ruby 1.9 trước Ruby 1.9.3 patchlevel 484
  • Tất cả bản Ruby 2.0 trước Ruby 2.0.0 patchlevel 353
  • Tất cả bản Ruby 2.1 trước Ruby 2.1.0 preview2
  • Trước trunk revision 43780

Giải pháp

Khuyến cáo tất cả người dùng nâng cấp lên Ruby 1.9.3 patchlevel 484, Ruby 2.0.0 patchlevel 353 hoặc Ruby 2.1.0 preview2.

Xin lưu ý rằng các bản Ruby 1.8 hoặc cũ hơn đều đã lỗi thời và sẽ không có kế hoạch phát hành vá lỗi. Người dùng các bản trên được khuyến cáo nâng cấp càng sớm càng tốt vì chúng tôi không thể bảo đảm các vá lỗi cho các ấn bản không được hỗ trợ.

Công lao

Cảm ơn Charlie Somerville đã thông báo lỗi này.

Lịch sử

  • Phát hành lần 1 tại 2013-11-22 04:00:00 UTC
  • Phát hành lần 2 tại 2013-11-22 06:46:00 UTC
  • Phát hành lần 3 tại 2013-11-22 22:46:00 UTC
  • Phát hành lần 4 tại 2013-12-10 12:09:38 UTC