Khi các công cụ trở nên phổ biến, nhiều cài đặt Samba trở nên nguy hiểm hơn, đặc biệt sau vụ tấn công ransomware WannaCry gần đây. Trong bài viết này, chúng tôi sẽ hướng dẫn cách vá lỗ hổng SambaCry (CVE-2017-7494) trên hệ điều hành Linux.
Từ lâu, Samba đã trở thành tiêu chuẩn cung cấp dịch vụ chia sẻ file và in ấn cho người dùng Windows trên các hệ điều hành *nix. Nó được sử dụng rộng rãi từ các hộ gia đình đến doanh nghiệp nhỏ và công ty lớn. Samba giải quyết vấn đề truy cập môi trường với nhiều hệ điều hành khác nhau.
Nếu trước đây, lỗ hổng trong Samba không được coi là nguy cơ nghiêm trọng, thì với sự xuất hiện của 2 cuộc tấn công nặng ký là WannaCry và EternalRocks, người dùng đang phải tìm cách bảo vệ dữ liệu trọng yếu của mình. WannaCry tấn công trực tiếp và đòi tiền chuộc, còn EternalRocks được đánh giá nguy hiểm hơn, hoạt động âm thầm và có khả năng biến đổi thành bất kỳ loại mã độc nào.
Trong bài viết này, chúng tôi sẽ phân tích về nguy cơ của Samba và cách khắc phục lỗ hổng SambaCry (CVE-2017-7494) trên hệ điều hành Linux của bạn. Tùy thuộc vào cài đặt của bạn (từ kho hoặc nguồn), cách tiếp cận có thể khác nhau.
Nếu bạn đang sử dụng Samba trong bất kỳ môi trường nào hoặc biết ai đó đang sử dụng Samba, hãy đọc tiếp bài viết dưới đây.
Dễ bị tổn thương
Các hệ thống lỗi thời và chưa được xử lý dễ bị tấn công thông qua lỗ hổng thực thi mã từ xa (remote code execution). Đơn giản, điều này có nghĩa là người nào đó có quyền truy cập vào phần được phép ghi có thể tải lên đoạn mã độc hại và thực thi nó với quyền root trong máy chủ. Thường xuyên chúng ta chỉ nghe về khái niệm root trên các thiết bị Android.
Vấn đề này được Samba mô tả với mã CVE-2017-7494 và ảnh hưởng đến phiên bản Samba 3.5 (ra mắt vào tháng 3 năm 2010) và các phiên bản cao hơn. Mã CVE-2017-7494 được gọi là Samba Cry do sự tương đồng với WannaCry: cả hai nhắm đến giao thức SMB và có khả năng lan truyền mạnh mẽ, có thể từ hệ thống này sang hệ thống khác qua giao thức SMB.
Debian, Ubuntu, CentOS và Red Hat nhanh chóng phát hành các bản vá lỗi cho các phiên bản được hỗ trợ. Ngoài ra, có các giải pháp bảo mật khác cho những người dùng không được hỗ trợ.
Cách khắc phục lỗ hổng SambaCry (CVE-2017-7494) trên Linux
Như đã đề cập trước đó, có 2 cách tiếp cận để thực hiện theo phương pháp cài đặt trước đó:
Trường hợp 1: Nếu bạn lựa chọn cài đặt Samba từ kho phân phối
Nếu bạn cài đặt Samba từ kho của nhà phân phối, hãy tham khảo ngay những bước cần thực hiện trong trường hợp này:
- Khắc phục lỗi Sambacry trên Debian:
Đảm bảo apt được cấu hình nhận các bản cập nhật bảo mật mới nhất bằng cách thêm những dòng sau vào danh sách nguồn (/etc/apt/sources.list):
deb http://security.debian.org ổn định/cập nhật chính
deb-src http://security.debian.org/ ổn định/cập nhật chính
Tiếp theo, cập nhật danh sách các gói có sẵn:
# aptitude update
Cuối cùng, hãy đảm bảo rằng phiên bản của gói samba bạn đang sử dụng đã được vá các lỗ hổng bảo mật (xem CVE-2017-7494):
Liên kết CVE-2017-7494: https://security-tracker.debian.org/tracker/CVE-2017-7494
# aptitude show samba
- Sửa Sambacry trên Ubuntu:
Để bắt đầu, hãy kiểm tra các gói mới nhất và cập nhật gói samba của bạn:
$ sudo apt-get update
$ sudo apt-get install samba
Các phiên bản Samba đã áp dụng các bản vá cho lỗi CVE-2017-7494 như sau:
Ubuntu 17.04: samba 2:4.5.8+dfsg-0ubuntu0.17.04.2
Ubuntu 16.10: samba 2:4.4.5+dfsg-2ubuntu5.6
Ubuntu 16.04 LTS: samba 2:4.3.11+dfsg-0ubuntu0.16.04.7
Ubuntu 14.04 LTS: samba 2:4.3.11+dfsg-0ubuntu0.14.04.8
Cuối cùng, thực hiện lệnh sau để kiểm tra quyền cài đặt phiên bản Samba trên Ubuntu:
$ sudo apt-cache show samba
- Khắc phục lỗ hổng SambaCry trên CentOS/RHEL 7:
Phiên bản vá lỗi Samba trong EL 7 là samba-4.4.4-14.el7_3. Để cài đặt phiên bản này, bạn sử dụng lệnh:
# yum makecache fast
# yum update samba
Tương tự như các bước trước đó, đảm bảo bạn đã cập nhật bản vá cho Samba bằng lệnh:
# yum info samba
Các phiên bản trước đó vẫn nhận được sự hỗ trợ trên CentOS và RHEL, và các bản vá lỗi đã được cung cấp. Bạn có thể kiểm tra TẠI ĐÂY để biết thêm thông tin chi tiết.
Trường hợp 2: Nếu bạn cài đặt Samba từ nguồn
Lưu ý:
Các bước dưới đây giả định rằng bạn đã tích hợp Samba từ mã nguồn. Hãy thử nghiệm trong môi trường thử nghiệm TRƯỚC khi triển khai trên một máy chủ sản xuất.
Hãy đảm bảo bạn đã sao lưu file smb.conf trước khi bắt đầu quá trình.
Trong tình huống này, chúng tôi sẽ hướng dẫn cách kết hợp và cập nhật Samba từ nguồn. Trước khi bắt đầu, đảm bảo rằng tất cả các yêu cầu cài đặt đã được cài đặt. Quá trình có thể mất vài phút.
- Trên Debian và Ubuntu:
# aptitude install acl attr autoconf bison build-essential \
debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \
libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \
libcap-dev libcups2-dev libgnutls28-dev libjson-perl \
libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \
libpopt-dev libreadline-dev perl perl-modules pkg-config \
python-all-dev python-dev python-dnspython python-crypto xsltproc \
zlib1g-dev libsystemd-dev libgpgme11-dev python-gpgme python-m2crypto
- Trên CentOS 7 hoặc các bản phân phối tương tự:
# yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \
libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \
perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \
python-crypto gnutls-devel libattr-devel keyutils-libs-devel \
libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \
pam-devel popt-devel python-devel readline-devel zlib-devel
Ngừng các dịch vụ:
# systemctl stop smbd
Tải và bỏ trống nguồn (với 4.6.4 là phiên bản mới nhất):
# wget https://www.samba.org/samba/ftp/samba-latest.tar.gz
# tar xzf samba-latest.tar.gz
# cd samba-4.6.4
Mục đích là thông tin, kiểm tra các tùy chọn cấu hình có sẵn cho bản phát hành hiện tại bằng:
# ./configure -help
Bạn có thể đưa một số tùy chọn được trả lại bởi lệnh trên nếu các lệnh được sử dụng trong bản build trước, hoặc bạn có thể chọn mặc định:
# ./configure
# make
# make install
Cuối cùng khởi động lại dịch vụ:
# systemctl restart smbd
Và xác nhận bạn đang chạy bản cập nhật:
# smbstatus --version
Đó là phiên bản 4.6.4.
Khái quát chung
Nếu đang chạy phiên bản không được hỗ trợ từ một nhà phân phối nhất định và vì một số lý do nào đó mà không thể nâng cấp lên phiên bản mới nhất gần đây, bạn có thể áp dụng các đề xuất dưới đây:
Nếu SELinux được kích hoạt, bạn sẽ được bảo vệ.
Đảm bảo Samba share được mount (gắn kết) với tùy chọn noexec. Điều này sẽ ngăn chặn việc thực thi các chương trình nhị phân nằm trên hệ thống tập tin được mount (gắn kết).
Thêm “nt pipe support = no” vào phần [global] của file smb.conf và khởi động lại dịch vụ. Lưu ý rằng khi thực hiện điều này 'có thể vô hiệu hóa một số chức năng trong Windows client', theo dự án Samba.
Lưu ý quan trọng: Hãy nhớ rằng tùy chọn 'nt pipe support = no' sẽ vô hiệu hóa tính năng share (chia sẻ) được liệt kê từ các client Windows.
Ví dụ, khi bạn nhập \\ 10.100.10.2 \ từ Windows Explorer trên máy chủ samba, kết quả bạn sẽ nhận được bị từ chối cho phép. Các client Windows sẽ phải tự xác định share (chia sẻ) theo cách thủ công là \\ 10.100.10.2 \ share_name để truy cập chia sẻ.
Trong bài viết trên, Tai mien phi đã mô tả lỗ hổng SambaCry và cách vá lỗ hổng SambaCry (CVE-2017-7494) trên Linux. Hy vọng các thông tin trong bài viết sẽ hữu ích với bạn.
Nếu bạn có bất kỳ câu hỏi hoặc thắc mắc các thông tin về SambaCry, bạn có thể để lại ý kiến của mình trong phần dưới đây, Mytour sẽ giải đáp các thắc mắc đó cho bạn.
Đối với người dùng Windows 10, lỗ hổng SMB zero-day đã nhận được cảnh báo mạnh mẽ từ các chuyên gia. Lỗ hổng SMB zero-day là nơi mà mã độc có thể xâm nhập một cách dễ dàng, thường do người dùng nhấp vào liên kết lạ chưa được kiểm tra. Để tránh virus, hạn chế việc nhấp vào đường dẫn không rõ nguồn gốc trên mạng xã hội và trong email. Để biết thêm chi tiết về lỗ hổng này, vui lòng tham khảo bài đánh giá về lỗ hổng SMB zero-day và cách phòng tránh.