บริษัทความปลอดภัย Snyk Security ประกาศข้อมูลช่องโหว่ชื่อ Zip Slip เปิดโอกาสให้ไฟล์บีบอัดข้อมูลประเภท zip, tar, jar, war, cpio, apk, rar, 7z อาจกลายเป็นเครื่องมือแพร่สคริปต์ประสงค์ร้ายได้
แกนหลักของช่องโหว่ Zip Slip คือการระบุชื่อไฟล์เป็นพาธของไดเรคทอรีย้อนกลับ (เช่น ../../../../evil.sh) เพื่อให้แตกไฟล์แล้วนำสคริปต์ประสงค์ร้ายไปวางในไดเรคทอรีชั้นนอกสุด (เช่น /) และหาโอกาสรันสคริปต์นี้ในภายหลัง
ปกติแล้ว โปรแกรมบีบอัดข้อมูลยอดนิยมทั่วไปมักกรองพาธแบบนี้ให้อยู่แล้ว แต่ไลบรารีบีบอัดข้อมูลบางตัวอาจไม่ได้ป้องกันไว้ จึงกลายเป็นช่องโหว่ได้
ที่น่าสนใจคือแพลตฟอร์ม Java ไม่มีไลบรารีบีบอัดข้อมูลอย่างเป็นทางการมาให้ ทำให้นักพัฒนามักไปก็อปปี้โค้ดคลายการบีบอัดจาก StackOverflow มาใช้กัน และโค้ดเหล่านี้มักป้องกันช่องโหว่ลักษณะนี้ได้ไม่ดีพอ ทำให้ช่องโหว่แพร่หลายตามไปด้วย
Snyk ได้ติดต่อกับโครงการโอเพนซอร์สหลายรายให้แก้ช่องโหว่นี้แล้ว และไลบรารีหลายตัว (เช่น unzipper ของ npm, zip4j ของ Java, SharpCompress ของ .NET) ก็อุดช่องโหว่กันเรียบร้อยแล้ว ส่วนโครงการโอเพนซอร์สหลายๆ ตัวที่มีโค้ดคลายการบีบอัดที่ไม่ปลอดภัย ก็ทยอยแก้ปัญหาแล้วเช่นกัน ได้แก่ Apache Hadoop, Apache Ant, ElasticSearch เป็นต้น
สิ่งที่นักพัฒนาควรทำคือ ตรวจสอบว่าซอฟต์แวร์ของตัวเองมีโค้ดคลายการบีบอัดที่ไม่ปลอดภัยหรือไม่ (ตัวอย่างดูได้ตามที่มา) และตรวจสอบชื่อไลบรารีที่อาจไม่ปลอดภัยได้จาก Snyk GitHub
ที่มา - Snyk
Comments
ใช้ sharpcompress อยู่ครับ แต่แอพตัวเองที่ทำไม่มีการแตกไฟล์ออกมาเขียนภายนอกเลย (และไม่เปิดไฟล์ที่ไม่ใช่ไฟล์รูป) คิดว่าไม่น่าจะกระทบอะไร
ดีนะที่ใช้ .7z