นักวิจัยเริ่มสำรวจเว็บและพบว่าบาง path ของเว็บจะ unserialize ข้อมูลในพารามิเตอร์บางตัวออกมา เช่น
/album_upload/create
จะ unserialize พารามิเตอร์ cookie เสมอ แต่ก็ได้ผลลัพธ์เพียงค่า exception ที่เปิดเผยชื่อไฟล์ออกมาเท่านั้น ทีมงานพยายามทดสอบทางเจาะโค้ดต่อไป โดยใช้สตริงที่สร้างจากซอฟต์แวร์ fuzzer ที่เขียนขึ้นเองเพื่อหาความเป็นไปได้ต่างๆ และพบว่าบางกรณีข้อมูลที่ส่งเข้าไปให้ไบนารีออกมาขนาดใหญ่กว่า 200KB
ทีมงานสำรวจข้อมูลที่ได้มาและพบว่ามันคือช่องโหว่ของ PHP เองที่ยังไม่มีใครพบ ช่องโหว่ที่พบมีสองกรณี ได้แก่ CVE-2016-5771 และ CVE-2016-5773 เป็นช่องโหว่ use-after-free ของ garbage collector ของ PHP
เมื่อได้ช่องโหว่เช่นนี้แล้ว ทีมงานพยายามสร้างสร้างโค้ดที่ขึ้นไปรันบนเซิร์ฟเวอร์ของ Pornhub แต่เซิร์ฟเวอร์ก็ใช้มาตรการป้องกันอย่าง position-independent executable (PIE) และ ASLR ทีมงานสำรวจจนกระทั่งสามารถรันฟังก์ชั่น
zend_eval_string
ได้สำเร็จ และสั่งอ่านไฟล์ /etc/passwd
ออกมาได้
ทีมงานวิจัยทั้งหมดประกอบไปด้วย Dario Weißer, @_cutz, และ Ruslan Habalov
ทีมงานรายงานช่องโหว่นี้ไปยัง Pornhub ตั้งแต่วันที่ 30 พฤษภาคมที่ผ่านมา และทาง Pornhub แก้ไขภายในเวลาไม่กี่ชั่วโมง จากนั้นใช้เวลาสองสัปดาห์พิจารณาเงินรางวัล 20,000 ดอลลาร์ นอกจากนี้ทีมงานยังได้รางวัลอีก 2,000 ดอลลาร์จากช่องโหว่ของ PHP ทั้งสองอัน ทีมงานชื่นชม Pornhub ว่าตอบกลับอย่างรวดเร็วและสุภาพ และใส่ใจต่อความปลอดภัยอย่างจริงจัง
ที่มา: Ruslan Habalov - Evonide (July 23, 2016)
แปลโดย: lew - blognone (July 24, 2016)