โดยปกติ ePub คือชนิดไฟล์ที่เป็นไฟล์หนังสือ ซึ่งมาจากการประกอบไปด้วย XML, CSS, XHTML และอื่นๆ พูดง่ายๆคืออยู่ในลักษณะเว็บที่ถูกบีบอัดเข้ามาอยู่ในไฟล์เดียวนั่นเอง โดยการจะรันองค์ประกอบใดๆได้ขึ้นอยู่กับตัวอ่านไฟล์ ePub (reader) เอง

ทีนี้นาย @craig_arendt พบว่ามี reader หลายๆตัวมัน parse XML แบบไม่มีการกรองก่อน จึงได้ลองโจมตีแบบ XXE(XML External Entities) ดู ปรากฎว่ามี reader หลายๆตัวกระทำการอ่าน XML แล้วเกิดช่องโหว่ XXE ดังนี้

  • EpubCheck <= 4.0.1 (ePub Validation Java Library & tool)
  • Adobe Digital Editions <= 4.5.2 (book reader)
  • Amazon KDP (Kindle Publishing Online Service)
  • Apple Transporter
  • Google Play Book uploads **ของ Google ไม่สามารอ้างอิง External Entity ได้ แต่มีช่อง
    โหว่ในเรื่องการทำ Recursive Definition ด้วย XML แทน

ตอนนี้ Vendor แต่ละเจ้าได้ออก patch แก้ไขช่องโหว่นี้แล้วครับ

Source:: Signal Chaos Blog