ระหว่างการตรวจสอบเว็บไซต์ OpenCart ที่ใช้ธีม Journal ยอดนิยม เราพบว่า endpoint เฉพาะเจาะจงมีช่องโหว่ต่อการเปิดเผยข้อมูลละเอียดอ่อนผ่าน SQL errors เวอร์ชัน Journal 3.1.0 ที่แก้ไขปัญหานี้เผยแพร่เมื่อวันที่ 1 กรกฎาคม 2020
CVE ID: CVE-2020-15478
สรุป
Journal ธีม OpenCart ขายดีที่สุดที่ใช้ในเว็บไซต์กว่า 25,000 ไซต์ พบว่ามีการเปิดเผยข้อมูลละเอียดอ่อนและอาจเปราะบางต่อการโจมตีเพิ่มเติมอย่าง SQL Injection
การเปิดเผยข้อมูลละเอียดอ่อน (Sensitive Data Exposure) ซึ่งเป็นช่องโหว่ใน OWASP Top 10 เกิดขึ้นเมื่อแอปพลิเคชันล้มเหลวในการรักษาความปลอดภัยข้อมูลละเอียดอ่อนอย่างเพียงพอ ข้อมูลที่เปิดเผยอาจรวมถึงรหัสผ่าน โทเค็นเซสชัน ข้อมูลบัตรเครดิต ข้อมูลสุขภาพส่วนตัว และอื่นๆ
ช่องโหว่
รายละเอียดเพิ่มเติมเกี่ยวกับช่องโหว่จะถูกเพิ่มเมื่อวันที่ 15 กรกฎาคม เพื่อให้ผู้ใช้ธีมมีเวลาพอในการอัปเดตเป็นเวอร์ชันล่าสุด
อัปเดตรายละเอียดทางเทคนิค:
เนื่องจากวิธีที่พารามิเตอร์ "page" ถูกแปลงเป็นจำนวนเต็ม (typecast) ใน /catalog/controller/journal3/blog.php หากใครป้อนสตริง จะทำให้เกิดข้อความข้อผิดพลาดโดยละเอียดแสดง SQL error, รายละเอียดฐานข้อมูล และ internal path
ข้อมูลเหล่านี้ช่วยให้ผู้โจมตีเตรียมการโจมตีได้ดีขึ้น เราเห็นว่า $page ถูกแปลงเป็น integer โดยใช้ $page = (int)Arr::get($this->request->get, 'page', 1); ในไฟล์ที่กล่าวมา
เส้นเวลา
รายงานช่องโหว่ให้ทีม Journal วันที่ 11 มิถุนายน 2020
เวอร์ชัน 3.1.0 ที่มีการแก้ไขช่องโหว่เผยแพร่เมื่อวันที่ 1 กรกฎาคม 2020
คำแนะนำ
- ขอแนะนำให้อัปเดตธีมเป็นเวอร์ชันล่าสุดอย่างยิ่ง
- คุณยังสามารถเพิ่มโค้ดต่อไปนี้หลังบรรทัด
$page = (int)Arr::get($this->request->get, 'page', 1);ใน /catalog/controller/journal3/blog.php:
if ($page == 0) { $page=1; }
อ้างอิง
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15478
- https://docs.journal-theme.com/changelog
- https://nvd.nist.gov/vuln/detail/CVE-2020-15478