รายงานการบุกรุกพื้นที่เก็บข้อมูล git และฐานผู้ใช้ของโปรเจ็กต์ PHP

ผลลัพธ์แรกของการวิเคราะห์เหตุการณ์ที่เกี่ยวข้องกับการระบุการกระทำที่เป็นอันตรายสองรายการในพื้นที่เก็บข้อมูล Git ของโครงการ PHP ที่เปิดใช้งานแบ็คดอร์เมื่อส่งคำขอด้วยส่วนหัว User Agent ที่ออกแบบมาเป็นพิเศษ ได้รับการเผยแพร่แล้ว ในระหว่างการศึกษาร่องรอยของกิจกรรมของผู้โจมตีสรุปได้ว่าเซิร์ฟเวอร์ git.php.net ซึ่งเป็นที่ตั้งของที่เก็บ git นั้นไม่ได้ถูกแฮ็ก แต่ฐานข้อมูลที่มีบัญชีของผู้พัฒนาโครงการถูกบุกรุก .

เป็นไปได้ว่าผู้โจมตีสามารถดาวน์โหลดฐานข้อมูลผู้ใช้ที่จัดเก็บไว้ใน DBMS บนเซิร์ฟเวอร์ master.php.net ได้ เนื้อหาของ master.php.net ได้ถูกย้ายไปยังเซิร์ฟเวอร์ main.php.net ใหม่ที่ติดตั้งตั้งแต่ต้นแล้ว รหัสผ่านนักพัฒนาทั้งหมดที่ใช้ในการเข้าถึงโครงสร้างพื้นฐาน php.net ได้รับการรีเซ็ต และกระบวนการเปลี่ยนแปลงได้เริ่มต้นผ่านแบบฟอร์มการกู้คืนรหัสผ่านพิเศษ พื้นที่เก็บข้อมูล git.php.net และ svn.php.net ยังคงเป็นแบบอ่านอย่างเดียว (การพัฒนาถูกย้ายไปที่ GitHub)

หลังจากการค้นพบการคอมมิตที่เป็นอันตรายครั้งแรกที่ทำผ่านบัญชีของ Rasmus Lerdorf ผู้ก่อตั้ง PHP ก็สันนิษฐานว่าบัญชีของเขาถูกแฮ็ก และ Nikita Popov หนึ่งในนักพัฒนา PHP ที่สำคัญ ได้ย้อนกลับการเปลี่ยนแปลงและบล็อกสิทธิ์ในการคอมมิตสำหรับ บัญชีที่มีปัญหา หลังจากนั้นไม่นาน ก็ตระหนักได้ว่าการบล็อกไม่สมเหตุสมผล เนื่องจากหากไม่มีการตรวจสอบยืนยันการคอมมิตโดยใช้ลายเซ็นดิจิทัล ผู้เข้าร่วมที่มีสิทธิ์เข้าถึงพื้นที่เก็บข้อมูล php-src ก็สามารถทำการเปลี่ยนแปลงได้โดยการแทนที่ชื่อผู้เขียนสมมติ

จากนั้นผู้โจมตีก็ส่งการกระทำที่เป็นอันตรายในนามของ Nikita เอง โดยการวิเคราะห์บันทึกของบริการ Gitolite ซึ่งใช้ในการจัดระเบียบการเข้าถึงพื้นที่เก็บข้อมูล มีการพยายามระบุผู้เข้าร่วมที่ทำการเปลี่ยนแปลงจริงๆ แม้จะมีการรวมการบัญชีสำหรับการกระทำทั้งหมด แต่ไม่มีรายการในบันทึกสำหรับการเปลี่ยนแปลงที่เป็นอันตรายสองครั้ง เห็นได้ชัดว่ามีการประนีประนอมในโครงสร้างพื้นฐาน เนื่องจากมีการเพิ่มการคอมมิตโดยตรง โดยข้ามการเชื่อมต่อผ่าน gitolite

เซิร์ฟเวอร์ git.php.net ถูกปิดใช้งานทันที และพื้นที่เก็บข้อมูลหลักถูกโอนไปยัง GitHub ด้วยความเร่งรีบ มันถูกลืมไปว่าในการเข้าถึงพื้นที่เก็บข้อมูล นอกเหนือจาก SSH ที่ใช้ gitolite แล้ว ยังมีอินพุตอื่นที่อนุญาตให้คุณส่งคอมมิตผ่าน HTTPS ในกรณีนี้ git-http-backend ถูกใช้เพื่อโต้ตอบกับ Git และดำเนินการตรวจสอบสิทธิ์โดยใช้เซิร์ฟเวอร์ Apache2 HTTP ซึ่งตรวจสอบข้อมูลรับรองโดยการเข้าถึงฐานข้อมูลที่โฮสต์ใน DBMS บนเซิร์ฟเวอร์ master.php.net อนุญาตให้เข้าสู่ระบบไม่เพียง แต่ด้วยกุญแจเท่านั้น แต่ยังใช้รหัสผ่านปกติด้วย การวิเคราะห์บันทึกเซิร์ฟเวอร์ http ยืนยันว่ามีการเพิ่มการเปลี่ยนแปลงที่เป็นอันตรายผ่าน HTTPS

เมื่อศึกษาบันทึกพบว่าผู้โจมตีไม่ได้เชื่อมต่อในครั้งแรก แต่เริ่มแรกพยายามค้นหาชื่อบัญชี แต่หลังจากระบุได้ก็เข้าสู่ระบบในครั้งแรกนั่นคือ พวกเขารู้รหัสผ่านของ Rasmus และ Nikita ล่วงหน้า แต่ไม่ทราบข้อมูลเข้าสู่ระบบของพวกเขา หากผู้โจมตีสามารถเข้าถึง DBMS ได้ ก็ไม่มีความชัดเจนว่าเหตุใดพวกเขาจึงไม่ใช้การเข้าสู่ระบบที่ถูกต้องตามที่ระบุไว้ในทันที ความคลาดเคลื่อนนี้ยังไม่ได้รับคำอธิบายที่เชื่อถือได้ การแฮ็ก master.php.net ถือเป็นสถานการณ์ที่เป็นไปได้มากที่สุด เนื่องจากเซิร์ฟเวอร์นี้ใช้โค้ดเก่ามากและระบบปฏิบัติการที่ล้าสมัย ซึ่งไม่ได้รับการอัปเดตมาเป็นเวลานานและมีช่องโหว่ที่ไม่ได้รับการอัปเดต

การดำเนินการรวมถึงการติดตั้งสภาพแวดล้อมเซิร์ฟเวอร์ master.php.net ใหม่และการถ่ายโอนสคริปต์ไปยัง PHP 8 เวอร์ชันใหม่ รหัสสำหรับการทำงานกับ DBMS ได้รับการแก้ไขเพื่อใช้แบบสอบถามแบบกำหนดพารามิเตอร์ที่ทำให้การแทนที่รหัส SQL มีความซับซ้อน อัลกอริธึม bcrypt ใช้เพื่อจัดเก็บแฮชรหัสผ่านในฐานข้อมูล (ก่อนหน้านี้ รหัสผ่านถูกจัดเก็บโดยใช้แฮช MD5 ที่ไม่น่าเชื่อถือ) รหัสผ่านที่มีอยู่จะถูกรีเซ็ต และคุณจะได้รับแจ้งให้ตั้งรหัสผ่านใหม่ผ่านแบบฟอร์มการกู้คืนรหัสผ่าน เนื่องจากการเข้าถึงพื้นที่เก็บข้อมูล git.php.net และ svn.php.net ผ่าน HTTPS เชื่อมโยงกับแฮช MD5 จึงตัดสินใจปล่อยให้ git.php.net และ svn.php.net อยู่ในโหมดอ่านอย่างเดียว และยังย้ายทั้งหมดด้วย ส่วนที่เหลือสำหรับพวกเขาคือที่เก็บส่วนขยาย PECL บน GitHub ซึ่งคล้ายกับที่เก็บ PHP หลัก

ที่มา: opennet.ru

เพิ่มความคิดเห็น