regreSSHion หรือ CVE-2024-6387 เป็นช่องโหว่ร้ายแรงใน OpenSSH ที่เปิดเผยในเดือนกรกฎาคม 2024 ช่องโหว่นี้ ช่วยให้อาชญากรไซเบอร์สามารถเข้าถึงระบบของคุณจากระยะไกลโดยไม่ต้องใช้รหัสผ่าน และสามารถควบคุมระบบของคุณได้อย่างสมบูรณ์ ช่องโหว่นี้ส่งผลกระทบต่อ OpenSSH เวอร์ชัน 8.5p1 ถึง 9.8p1 บนระบบ Linux ที่ใช้ glibc
วิธีป้องกัน
- อัปเดต OpenSSH: ทางที่ดีควรอัปเดต OpenSSH เป็นเวอร์ชันล่าสุดโดยเร็วที่สุด เวอร์ชันล่าสุด (9.9p1) ได้รับการแก้ไขช่องโหว่ regreSSHion แล้ว
- ตรวจสอบระบบของคุณ: คุณสามารถใช้เครื่องมือสแกนเนอร์ช่องโหว่เพื่อตรวจสอบว่าระบบของคุณได้รับผลกระทบจาก regreSSHion หรือไม่
- จำกัดการเข้าถึง: จำกัดการเข้าถึงระบบ OpenSSH ของคุณให้น้อยที่สุด
- ใช้การตรวจสอบสิทธิ์: ตรวจสอบสิทธิ์ของไฟล์และไดเรกทอรี OpenSSH ของคุณอย่างสม่ำเสมอ
- ตรวจสอบบันทึก: ตรวจสอบบันทึกระบบของคุณอย่างสม่ำเสมอเพื่อดูว่ามีกิจกรรมที่ผิดปกติหรือไม่
วิธีตรวจสอบช่องโหว่ CVE-2024-6387
CVE-2024-6387_Check เป็นเครื่องมือที่มีขนาดเล็กแต่มีประสิทธิภาพในการค้นหาเครื่อง server ที่ใช้งาน OpenSSH เวอร์ชั่นทีมีช่องโหว่โดยเฉพาะ โดยการกำหนดเป้าหมายไปที่ช่องโหว่ regreSSHion
การติดตั้ง
- Install Python: Ensure you have Python installed on your system. If not, install it using your system’s package manager.
- Download the Script: Download the CVE-2024-6387_Check script from its GitHub repository: https://github.com/xaitax/CVE-2024-6387_Check You can use the following command to
curl -LO https://raw.githubusercontent.com/xaitax/CVE-2024-6387_Check/main/CVE-2024-6387_Check.py
หรือจะใช้ผ่าน git clone ก็ได้ แล้วแต่ความสะดวก ส่วนตัวผมชอบ git clone มากกว่า เพราะเวลามี update อะไรก็จะได้ pull มาได้เลย ในตัวอย่างนี้ผมจะใช้ git clone
เป็นหลัก
git clone https://github.com/xaitax/CVE-2024-6387_Check
ขั้นตอนการสแกนหาช่องโหว่
เข้าไปยัง directory ที่ clone มา
cd CVE-2024-6387_Check
รูปแบบการใช้งาน สำหรับเครื่องที่ติดตั้ง python เวอร์ชั่น 3 ให้ใช้ python3
แทน
python CVE-2024-6387_Check.py [--port PORT] [--timeout TIMEOUT] [--list FILE] [--grace-time-check [SECONDS]]
อธิบาย Command Line Arguments
<targets>
: IP addresses, domain names, file paths containing IP addresses, or CIDR network ranges.--port PORT
: Specify the port number to check (default: 22).--timeout TIMEOUT
: Set connection timeout in seconds (default: 1 second).--list FILE
: File containing a list of IP addresses to check.--grace-time-check [SECONDS]
: Time in seconds to wait after identifying the version to check forLoginGraceTime
mitigation (default: 120 seconds).
ตัวอย่างการใช้งาน
Single IP – สแกนแค่เครื่องเดียว
python CVE-2024-6387_Check.py 192.168.1.1
IPs from a file – สแกนจากไฟล์ที่มี IP list อยู่หลายเครื่อง
python CVE-2024-6387_Check.py -l ip_list.txt
Multiple IPs and Domains – สแกนจากหลาย IP หรือ หลาย domain พร้อมกัน (แบบเดียวกับ file)
python CVE-2024-6387_Check.py 192.168.1.1 example.com 192.168.1.2
CIDR Range – สแกนแบบช่วงของ IP/Subnet
python CVE-2024-6387_Check.py 192.168.1.0/24
With Custom Port – สำหรับกำหนด ในกรณีที่ ssh ที่ไม่ได้ใช้ port 22
python CVE-2024-6387_Check.py 192.168.1.1 example.com --port 2222
Checking LoginGraceTime Mitigation – หน่วงเวลาในการทำงาน
python CVE-2024-6387_Check.py 192.168.1.1 --grace-time-check
ผลลัพท์ที่ได้
ในตัวอย่างก็จะแสดงสถานะเครื่องที่เราสแกน ว่ามีช่องโหว่นี้อยู่หรือไม่ โดยจะแยกเป็นเครื่องที่ไม่พบช่องโหว่, พบช่องโหว่, และไม่ทราบ SSH version ซึ่งเป็น ssh ที่อยู่นอกเหนือรายการที่สแกน
🛡️ Servers not vulnerable: 2 [+] Server at somedomain.cloudapp.azure.com (running SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11) [+] Server at regresshion_test.cc (running SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.3) 🚨 Servers likely vulnerable: 1 [+] Server at 4.231.170.122 (running SSH-2.0-OpenSSH_9.2p1 Debian-2+deb12u2) [+] Server at 4.231.170.121 (running SSH-2.0-OpenSSH_9.2p1 Debian-2+deb12u2) with LoginGraceTime mitigation detected (session stayed open for 120 seconds) ⚠️ Servers with unknown SSH version: 1 [+] Server at 103.97.85.85 (banner: SSH-2.0-ROSSSH) 🔒 Servers with port 22 closed: 254 📊 Total scanned targets: 257
เมื่อพบเครื่องที่ไม่ปลอดภัย เราก็จัดการ update OpenSSH-Server ให้เรียบร้อย