Alexander Klink และ Timothy Morgan นักวิจัยด้านความมั่นคงปลอดภัยออกมาเปิดเผยถึงช่องโหว่บนภาษา Java และ Python ซึ่งช่วยให้แฮ็คเกอร์สามารถบายพาส Firewall ไม่ว่าจะเป็น Cisco หรือ Palo Alto Networks ได้ผ่านทางการแทรกคำสั่งแปลกปลอมเข้าไปยังคำร้องขอเชื่อมต่อ FTP ได้

ช่องโหว่ Protocol Injection บน FTP URL
ช่องโหว่นี้มีสาเหตุมาจากการจัดการลิงค์ FTP ของ Python (ผ่านทางไลบรารี่ urllib2 บน Python 2 และไลบรารี่ urllib บน Python 3) และ Java (ผ่านทาง XML eXternal Entity: XXE) ซึ่งไม่มีการตรวจสอบ Syntax ของพารามิเตอร์ Username ที่ดีพอ เมื่อแฮ็คเกอร์แทรกตัวอักษรสำหรับขึ้นบรรทัดใหม่ (CR และ LF) เข้าไปยังส่วน Username บน FTP URL จะทำให้โค้ด Java และ Python นึกว่าบางส่วนของ URL เป็นคำสั่งใหม่ แล้วดำเนินการตามคำสั่งนั้น Klink เรียกช่องโหว่ที่เกิดขึ้นนี้ว่า “Protocol Injection”
สัปดาห์ที่ผ่านมา Klink ได้สาธิตการโจมตีด้วยการส่งอีเมล (อย่างไม่มีสิทธิ์) โดยใช้โปรโตคอล SMTP ผ่านทางการเชื่อมต่อ FTP ถึงแม้ว่าการเชื่อมต่อ FTP จะล้มเหลว แต่อีเมลยังคงสามารถส่งออกไปได้เนื่องจาก FTP Server ไม่ได้ทำการตรวจสอบ Carriage Return (CR) และ Line Feed (LF) บนพารามิเตอร์ Username ดังที่แสดงให้เห็นในรูปด้านล่าง
ดูรายละเอียดการสาธิตได้ที่: https://shiftordie.de/blog/2017/02/18/smtp-over-xxe/
ใช้บายพาสอุปกรณ์ Firewall ได้
อย่างไรก็ตาม 2 วันหลังจากนั้น Timothy Morgan นักวิจัยด้านความมั่นคงปลอดภัยอีกท่านจาก Blindspot Security ก็ออกมาให้ข้อมูลเพิ่มเติมเกี่ยวกับช่องโหว่ดังกล่าว โดยแสดงให้เห็นว่า ช่องโหว่การจัดการ FTP URL นี้สามารถนำไปใช้บายพาสอุปกรณ์ Firewall ได้
Morgan ระบุว่าช่องโหว่ FTP Protocol Injection สามารถนำไปใช้ร่วมกับ Classic Mode FTP เพื่อหลอก Firewall ให้ยอมรับการเชื่อมต่อ TCP จากเว็บ ไปยังระบบที่มีช่องโหว่โดยใช้พอร์ตหมายเลขสูงๆ ตั้งแต่ 1024 – 65535 ได้
Classic Mode FTP เป็นกลไกการปฏิสัมพันธ์ระหว่าง FTP Client และ FTP Server แบบเก่าซึ่งถูกพิสูจน์แล้วว่าไม่มีความมั่นคงปลอดภัย ปัจจุบันนี้การเชื่อม FTP จะใช้ Passive Mode FTP ที่มีความมั่นคงปลอดภัยสูงกว่า อย่างไรก็ตาม Firewall ส่วนใหญ่ที่ใช้งานกันอยู่ในขณะนี้ยังคงรองรับการเชื่อมต่อแบบ Classic Mode FTP ส่งผลให้แฮ็คเกอร์สามารถใช้ประโยชน์จากช่องโหว่ FTP Protocol Injection เพื่อเริ่มการเชื่อมต่อแบบ Classic Mode FTP แล้วบายพาส Firewall ไปยังเป้าหมายที่อยู่ด้านหลังได้ทันที
Firewall จาก Cisco และ Palo Alto Networks ก็ไม่รอด
Morgan ระบุว่า เขาประสบความสำเร็จในการทดสอบโจมตีอุปกรณ์ Firewall ที่ใช้ระบบปฏิบัติการ Linux รวมไปถึง Firewall ชื่อดังอย่าง Cisco ASA และ Palo Alto Networks ด้วย และเขาเชื่อว่า Firewall ยี่ห้ออื่นๆ ในตลาดส่วนใหญ่ก็น่าจะถูกบายพาสโดยใช้ช่องโหว่นี้ได้ด้วยเช่นกัน
Morgan เคยรายงานเรื่องช่องโหว่ FTP Protocol Injection นี้ไปยังทีม Python เมื่อเดือนมกราคม 2016 และ Oracle เดือนพฤศจิกายน 2016 แต่ทั้งสองบริษัทกลับไม่ได้ออกแพทช์เพื่อแก้ไขช่องโหว่แต่อย่างใด ถึงแม้ว่า Morgan จะพร้อม PoC การบายพาส Firewall แต่เขาจะยังไม่เปิดเผยออกสู่สาธารณะจนกว่าทางทีม Python และ Oracle จะทำการอัปเดตแพทช์
ระหว่างนี้ Morgan แนะนำให้ผู้ใช้ยกเลิกการใช้ Java ทั้งบนเครื่องและบนเบราเซอร์ รวมไปถึงยกเลิกการใช้ Classic Mode FTP บนอุปกรณ์ Firewall และหันไปใช้ Passive Mode FTP แทน
ที่มา: http://thehackernews.com/2017/02/python-java-ftp-protocol-injection.html และ https://www.bleepingcomputer.com/news/security/java-and-python-contain-security-flaws-that-allow-attackers-to-bypass-firewalls/