Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

ช่องโหว่ Log4Shell (CVE-2021-44228) ถูกอธิบายโดยนักวิจัยและผู้เชี่ยวชาญด้านไซเบอร์เซキュリティว่าเป็นช่องโหว่ zero-day ร้ายแรงที่สุดตลอดกาล มันส่งผลต่อยูทิลิตี้ Java ที่ใช้กันอย่างแพร่หลายชื่อ Log4j ซึ่งมีมาตั้งแต่ปี 2001 สำหรับบันทึกและสื่อสารเหตุการณ์ต่างๆ เช่น การดำเนินงานระบบปกติและข้อผิดพลาดของซอฟต์แวร์ บทความนี้จะแสดงวิธีปกป้องระบบ Linux จากช่องโหว่นี้

ช่องโหว่ Log4Shell ทำงานอย่างไร?

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

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

Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

Log4Shell ส่งผลต่ออะไรบ้าง?

เนื่องจาก Java เป็นภาษาโปรแกรมมิ่งที่ได้รับความนิยมมาก ซอฟต์แวร์จำนวนมากที่เขียนด้วย Java และใช้ Log4j สำหรับฟังก์ชันการบันทึกข้อมูล จึงได้รับผลกระทบจากช่องโหว่นี้ ซอฟต์แวร์ที่รู้จักดีและใช้กันอย่างแพร่หลายที่ได้รับผลกระทบ รวมถึง Apache และเกมวิดีโอชื่อ Minecraft

วิธีรู้ว่าซอฟต์แวร์ไหนได้รับผลกระทบ?

Log4Shell ในลักษณะเดียวกับช่องโหว่ด้านไซเบอร์เซキュリティอื่นๆ ถูกบรรเทาลงด้วยการแพตช์ซอฟต์แวร์ที่ได้รับผลกระทบ อย่างไรก็ตาม กรณีของ Log4Shell ค่อนข้างพิเศษ เนื่องจากส่งผลต่อซอฟต์แวร์หลากหลายรูปแบบ และอาจยากที่จะจดรายการว่าอะไรได้รับผลกระทบ และอะไรไม่ได้

โชคดีที่ National Cyber Security Center ของเนเธอร์แลนด์ ได้เผยแพร่รายการครบถ้วนบน GitHub ซึ่งรวมชื่อซอฟต์แวร์ที่พัฒนาโดยองค์กรต่างๆ แจ้งว่าเปราะบางต่อ Log4Shell หรือไม่

วิธีสแกนเซิร์ฟเวอร์ Apache สำหรับช่องโหว่

เนื่องจากช่องโหว่นี้ส่งผลกระทบต่อชุมชนไซเบอร์เซキュリティและซอฟต์แวร์อย่างมาก จึงไม่น่าแปลกใจที่มีเครื่องมือสำหรับแอดมินิสเตรเตอร์สแกนเซิร์ฟเวอร์หาช่องโหว่

เครื่องมือสแกนหนึ่งคือ Log4j-RCE-Scanner ซึ่งช่วยสแกนช่องโหว่การรันคำสั่งระยะไกล (Remote Command Execution) บน Apache Log4j ที่หลายที่อยู่

ติดตั้ง Log4j-RCE-Scanner

ก่อนเริ่ม ต้องติดตั้ง dependencies คือ httpx และ curl

Curl ติดตั้งง่ายบน Ubuntu และ Debian-based ด้วยคำสั่ง apt:

sudo apt install curl
Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

Arch Linux ใช้ pacman:

sudo pacman -Sy curl

CentOS และ Fedora ใช้ yum:

sudo yum install curl

ติดตั้ง httpx ด้วยคำสั่ง:

git clone https://github.com/projectdiscovery/httpx cd httpx/cmd/httpx && go build . sudo mv httpx /usr/local/bin/
Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

หลังติดตั้ง dependencies แล้ว ให้ clone repository Log4j-RCE-Scanner:

git clone https://github.com/adilsoybali/Log4j-RCE-Scanner
Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

เข้าไดเรกทอรีที่สร้างขึ้น:

cd Log4j-RCE-Scanner/

สุดท้าย ให้สิทธิ์รันสคริปต์ Bash:

chmod +x log4j-rce-scanner.sh
Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

ใช้งาน Log4j-RCE-Scanner

หลังติดตั้งสแกนเนอร์แล้ว สามารถใช้งานได้เลย

อ่านส่วน help ของสคริปต์ด้วยคำสั่ง:

bash log4j-rce-scanner.sh -h
Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

ตอนนี้สามารถสแกนเซิร์ฟเวอร์ Apache หาช่องโหว่ Log4Shell ได้:

bash log4j-rce-scanner.sh -d [domain] -b [Burp collaborator]

ระบุโดเมนและ Burp Collaborator ด้วยแฟล็ก -d และ -b หากโดเมนเปราะบาง DNS callbacks พร้อมชื่อโดเมนจะถูกส่งไปที่ Burp Collaborator

ทางเลือก -l ใช้ระบุรายการโดเมนได้เช่นกัน

Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

ติดตั้งและใช้งานสแกนเนอร์แบบ Python

หากชอบใช้สคริปต์ Python สามารถใช้ log4-scanner ที่พัฒนาโดย Cybersecurity and Infrastructure Security Agency ของสหรัฐอเมริกา

ติดตั้งด้วย:

git clone https://github.com/cisagov/log4j-scanner/

เข้าไดเรกทอรี:

cd log4j-scanner/log4-scanner/

ติดตั้ง dependencies ด้วย pip3:

pip3 install -r requirements.txt
Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

ดู help ของสคริปต์ด้วยแฟล็ก -h:

python3 log4j-scan.py -h
Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

สแกน URL เดียวง่ายด้วยแฟล็ก -u:

python3 log4j-scan.py -u example.com
Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

สแกนรายการ URL ด้วยแฟล็ก -l:

python3 log4j-scan.py -l list.txt
Log4Shell คืออะไร และวิธีปกป้องระบบ Linux จากช่องโหว่นี้

วิธีแพตช์ Apache

เพื่อต่อสู้กับช่องโหว่นี้ สำคัญมากที่จะอัปเดตการตั้งค่า Apache ให้ทันสมัย

ตรวจสอบเวอร์ชัน Apache ได้หลายวิธี: จากแผงควบคุมการจัดการ เช่น CPanel หรือ WebHost Manager หรือรันคำสั่ง httpd พร้อมแฟล็ก -v:

httpd -v

อัปเดต Apache เป็นเวอร์ชันล่าสุดที่ปลอดภัยที่สุด ด้วย apt บน Debian และ Ubuntu:

sudo apt update && sudo apt upgrade apache2

ผลลัพธ์เดียวกันบน CentOS ด้วย yum:

sudo yum install httpd

คำถามที่พบบ่อย

1. เวอร์ชัน Log4j ใดได้รับผลกระทบ?

เวอร์ชันต่ำกว่า 2.1.7.1 เปราะบางต่อการโจมตี เวอร์ชัน 2.15.0 แก้ไขส่วนที่โจมตีง่ายที่สุด และ 2.17.1 แก้ไขช่องโหว่ remote code execution ที่ยากต่อการโจมตี

2. ต้องใช้ Burp Collaborator เพื่อรับ DNS callbacks หรือไม่?

ตามนักพัฒนาสแกนเนอร์ Bash-based Burp Collaborator ใช้ร่วมกับสคริปต์เพื่อรับ DNS callbacks พร้อมชื่อโดเมนที่เปราะบาง ทางเลือกคือใช้ที่อยู่ Interact.sh

3. ต้องการ dependencies อื่นสำหรับสแกนเนอร์ Bash-based หรือไม่?

สำหรับการใช้งานพื้นฐาน ต้องมีแค่ httpx และ Curl ติดตั้ง อย่างไรก็ตาม เพื่อปลดล็อกฟังก์ชันบางอย่าง ต้องติดตั้ง Subfinder, Assetfinder, และ Amass ด้วย