ค้นหาเว็บไซต์

วิธีแก้ไขช่องโหว่ SambaCry (CVE-2017-7494) ในระบบ Linux


Samba เป็นมาตรฐานในการให้บริการไฟล์และการพิมพ์ที่ใช้ร่วมกันแก่ไคลเอนต์ Windows บนระบบ *nix มานานแล้ว ใช้โดยผู้ใช้ตามบ้าน ธุรกิจขนาดกลาง และบริษัทขนาดใหญ่ โซลูชันนี้โดดเด่นในฐานะโซลูชันที่นำไปใช้ได้จริงในสภาพแวดล้อมที่มีระบบปฏิบัติการที่แตกต่างกันอยู่ร่วมกัน

เนื่องจากมันเกิดขึ้นอย่างน่าเศร้ากับเครื่องมือที่ใช้งานกันอย่างแพร่หลาย การติดตั้ง Samba ส่วนใหญ่จึงอยู่ภายใต้ความเสี่ยงของการโจมตีที่อาจหาประโยชน์จากช่องโหว่ที่ทราบ ซึ่งไม่ถือว่าร้ายแรงจนกว่าการโจมตีของแรนซัมแวร์ WannaCry จะไม่มีข่าวเช่นกัน นานมาแล้ว.

ในบทความนี้ เราจะอธิบายว่าช่องโหว่ของ Samba นี้คืออะไร และจะปกป้องระบบที่คุณรับผิดชอบอย่างไร ขึ้นอยู่กับประเภทการติดตั้งของคุณ (จากที่เก็บข้อมูลหรือจากแหล่งที่มา) คุณจะต้องใช้แนวทางที่แตกต่างออกไป

หากคุณกำลังใช้ Samba ในสภาพแวดล้อมใดๆ หรือรู้จักใครก็ตามที่ใช้อยู่ โปรดอ่านต่อ!

ช่องโหว่

ระบบที่ล้าสมัยและไม่ได้รับการติดตั้งจะเสี่ยงต่อช่องโหว่การเรียกใช้โค้ดจากระยะไกล กล่าวง่ายๆ ก็คือ บุคคลที่มีสิทธิ์เข้าถึงการแบ่งปันแบบเขียนได้สามารถอัปโหลดโค้ดที่กำหนดเองและดำเนินการด้วยสิทธิ์รูทในเซิร์ฟเวอร์

ปัญหานี้อธิบายไว้ในเว็บไซต์ Samba เป็น CVE-2017-7494 และเป็นที่ทราบกันว่าส่งผลต่อ Samba เวอร์ชัน 3.5 (เผยแพร่เมื่อต้นเดือนมีนาคม 2010) เป็นต้นไป อย่างไม่เป็นทางการ ได้รับการตั้งชื่อว่า SambaCry เนื่องจากมีความคล้ายคลึงกับ WannaCry: ทั้งกำหนดเป้าหมายโปรโตคอล SMB และอาจมีเวิร์มได้ ซึ่งอาจทำให้แพร่กระจายจากระบบหนึ่งไปยังอีกระบบหนึ่งได้

Debian, Ubuntu, CentOS และ Red Hat ได้ดำเนินการอย่างรวดเร็วเพื่อปกป้องผู้ใช้และได้เปิดตัวแพตช์สำหรับเวอร์ชันที่รองรับ นอกจากนี้ยังมีการจัดเตรียมวิธีแก้ไขปัญหาด้านความปลอดภัยสำหรับผู้ที่ไม่ได้รับการสนับสนุนอีกด้วย

กำลังอัปเดตแซมบ้า

ตามที่กล่าวไว้ก่อนหน้านี้ มีสองวิธีในการปฏิบัติตามขึ้นอยู่กับวิธีการติดตั้งก่อนหน้า:

หากคุณติดตั้ง Samba จากพื้นที่เก็บข้อมูลของการแจกจ่ายของคุณ

มาดูสิ่งที่คุณต้องทำในกรณีนี้:

แก้ไข Sambacry ใน Debian

ตรวจสอบให้แน่ใจว่า apt ได้รับการตั้งค่าให้รับการอัปเดตความปลอดภัยล่าสุดโดยเพิ่มบรรทัดต่อไปนี้ในรายการแหล่งที่มาของคุณ (/etc/apt/sources.list):

deb http://security.debian.org stable/updates main
deb-src http://security.debian.org/ stable/updates main

ถัดไป อัพเดตรายการแพ็คเกจที่มีอยู่:

aptitude update

สุดท้าย ตรวจสอบให้แน่ใจว่าเวอร์ชันของแพ็คเกจ samba ตรงกับเวอร์ชันที่ช่องโหว่ได้รับการแก้ไขแล้ว (ดู CVE-2017-7494):

aptitude show samba

แก้ไข Sambacry ใน Ubuntu

ในการเริ่มต้น ให้ตรวจสอบแพ็คเกจใหม่ที่มีอยู่และอัพเดตแพ็คเกจ samba ดังนี้:

sudo apt-get update
sudo apt-get install samba

เวอร์ชัน Samba ที่ใช้การแก้ไขสำหรับ CVE-2017-7494 แล้วมีดังต่อไปนี้:

  • 17.04: แซมบ้า 2:4.5.8+dfsg-0ubuntu0.17.04.2
  • 16.10: แซมบ้า 2:4.4.5+dfsg-2ubuntu5.6
  • 16.04 LTS: แซมบ้า 2:4.3.11+dfsg-0ubuntu0.16.04.7
  • 14.04 LTS: แซมบ้า 2:4.3.11+dfsg-0ubuntu0.14.04.8

สุดท้ายให้รันคำสั่งต่อไปนี้เพื่อตรวจสอบว่ากล่อง Ubuntu ของคุณติดตั้งเวอร์ชัน Samba ที่ถูกต้องแล้ว

sudo apt-cache show samba

แก้ไข Sambacry บน CentOS/RHEL 7

เวอร์ชัน Samba ที่ได้รับแพตช์ใน EL 7 คือ samba-4.4.4-14.el7_3 หากต้องการติดตั้งให้ทำ

yum makecache fast
yum update samba

เช่นเคย ตรวจสอบให้แน่ใจว่าคุณมีเวอร์ชัน Samba ที่ได้รับการแก้ไขแล้ว:

yum info samba

CentOS และ RHEL เวอร์ชันเก่าที่ยังคงรองรับก็มีการแก้ไขเช่นกัน ตรวจสอบ RHSA-2017-1270 เพื่อหาข้อมูลเพิ่มเติม

หากคุณติดตั้ง Samba จากแหล่งที่มา

หมายเหตุ: ขั้นตอนต่อไปนี้ถือว่าคุณได้สร้าง Samba จากแหล่งที่มาก่อนหน้านี้ ขอแนะนำอย่างยิ่งให้ลองใช้อย่างกว้างขวางในสภาพแวดล้อมการทดสอบก่อนที่จะปรับใช้กับเซิร์ฟเวอร์ที่ใช้งานจริง

นอกจากนี้ ตรวจสอบให้แน่ใจว่าคุณได้สำรองข้อมูลไฟล์ smb.conf ก่อนที่จะเริ่มต้น

ในกรณีนี้ เราจะรวบรวมและอัปเดต Samba จากแหล่งที่มาด้วย ก่อนที่เราจะเริ่ม เราต้องตรวจสอบให้แน่ใจว่าได้ติดตั้งการขึ้นต่อกันทั้งหมดไว้ก่อนหน้านี้แล้ว โปรดทราบว่าการดำเนินการนี้อาจใช้เวลาหลายนาที

ใน Debian และ 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

ใน CentOS 7 หรือคล้ายกัน:

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

หยุดบริการ:

systemctl stop smbd

ดาวน์โหลดและยกเลิกการติดตั้งแหล่งที่มา (โดยที่ 4.6.4 เป็นเวอร์ชันล่าสุดในขณะที่เขียนนี้):

wget https://www.samba.org/samba/ftp/samba-latest.tar.gz 
tar xzf samba-latest.tar.gz
cd samba-4.6.4

เพื่อวัตถุประสงค์ในการให้ข้อมูลเท่านั้น ให้ตรวจสอบตัวเลือกการกำหนดค่าที่มีอยู่สำหรับรีลีสปัจจุบันด้วย

./configure --help

คุณอาจรวมตัวเลือกบางส่วนที่ส่งคืนโดยคำสั่งด้านบนหากใช้ในรุ่นก่อนหน้าหรือคุณอาจเลือกใช้ค่าเริ่มต้น:

./configure
make
make install

สุดท้ายให้เริ่มบริการใหม่

systemctl restart smbd

และตรวจสอบว่าคุณกำลังใช้งานเวอร์ชันอัปเดต:

smbstatus --version

ซึ่งควรส่งคืน 4.6.4

ข้อควรพิจารณาทั่วไป

หากคุณใช้เวอร์ชันที่ไม่สนับสนุนของการแจกจ่ายที่ระบุ และไม่สามารถอัปเกรดเป็นเวอร์ชันที่ใหม่กว่าได้ด้วยเหตุผลบางประการ คุณอาจต้องคำนึงถึงคำแนะนำต่อไปนี้:

  • หากเปิดใช้งาน SELinux คุณจะได้รับการปกป้อง!
  • ตรวจสอบให้แน่ใจว่าการแชร์ Samba ได้รับการติดตั้งด้วยตัวเลือก noexec วิธีนี้จะป้องกันการดำเนินการของไบนารีที่อยู่บนระบบไฟล์ที่เมาท์

เพิ่ม,

nt pipe support = no

ไปที่ส่วน [global] ของไฟล์ smb.conf ของคุณแล้วเริ่มบริการใหม่ คุณอาจต้องการทราบว่าสิ่งนี้ "อาจปิดการใช้งานฟังก์ชันบางอย่างในไคลเอนต์ Windows" ตามโครงการ Samba

ข้อสำคัญ: โปรดทราบว่าตัวเลือก “nt pipe support=no ” จะปิดใช้งานรายการแชร์จากไคลเอนต์ Windows เช่น เมื่อคุณพิมพ์ \\10.100.10.2\ จาก Windows Explorer บนเซิร์ฟเวอร์ samba คุณจะได้รับการปฏิเสธสิทธิ์ ไคลเอนต์ Windows จะต้องระบุการแชร์ด้วยตนเองเป็น \\10.100.10.2\share_name เพื่อเข้าถึงการแชร์

สรุป

ในบทความนี้ เราได้อธิบายช่องโหว่ที่เรียกว่า SambaCry และวิธีแก้ไข เราหวังว่าคุณจะสามารถใช้ข้อมูลนี้เพื่อปกป้องระบบที่คุณรับผิดชอบ

หากคุณมีคำถามหรือความคิดเห็นเกี่ยวกับบทความนี้ โปรดใช้แบบฟอร์มด้านล่างเพื่อแจ้งให้เราทราบ