← บทความทั้งหมด
คู่มือ

อัปเดตความปลอดภัย LIFF SDK ก่อนข้อจำกัดเวอร์ชันเก่าในเดือนพฤศจิกายน 2026

หาก LIFF หรือ LINE MINI App ของคุณใช้ LIFF SDK v2.20.0–v2.31.0 ให้ อัปเดตเป็น v2.31.1 หรือใหม่กว่าทันที LINE เปิดเผยช่องโหว่ XSS และมีแผนจำกัดการใช้เวอร์ชันที่ได้รับผลกระทบ ประมาณวันที่ 24 พฤศจิกายน 2026 ต้องตรวจ SDK ที่แอปจริงโหลด ไม่ใช่ดูเพียงเวอร์ชันที่ประกาศไว้ใน dependency วันที่ดังกล่าวเป็นกำหนดการโดยประมาณ ไม่ใช่เหตุผลให้เลื่อนการแก้ไขความปลอดภัย

ประเด็นสำคัญ

  • ช่วงเวอร์ชันที่ได้รับผลกระทบและเวอร์ชันขั้นต่ำที่แก้ไขแล้วมาจากประกาศความปลอดภัยของ LINE
  • CDN edge, CDN แบบระบุเวอร์ชัน และ npm ต้องตรวจคนละจุด
  • ทดสอบทางเข้าผ่านเบราว์เซอร์ภายนอกด้วย ไม่ใช่เฉพาะ LIFF URL
  • แผนย้อนกลับต้องไม่นำ SDK ที่มีช่องโหว่กลับมาใช้ ส่วน webhook รับข้อความเป็นอีกชั้นหนึ่งของระบบ

คำเตือนเรื่อง LIFF SDK ครอบคลุมอะไร

ประกาศวันที่ 20 ตุลาคมของ LINE อธิบายว่า ภายใต้เงื่อนไขบางอย่าง การเปิด LIFF หรือ LINE MINI App ในเบราว์เซอร์ภายนอกจาก URL ที่เป็นอันตรายอาจทำให้ JavaScript ถูกเรียกใช้บนโดเมนของแอป และอาจเปิดเผยข้อมูลยืนยันตัวตน เช่น access token รวมถึงข้อมูลที่แสดงบนหน้าจอ

ประกาศยังแยกวิธีเปิดแอปอย่างชัดเจน: การเปิด endpoint URL ในเบราว์เซอร์ภายใน LINE แทนการใช้ LIFF URL จะถูกนับเป็นเส้นทางเบราว์เซอร์ภายนอกและได้รับผลกระทบเช่นกัน การทดสอบเฉพาะทางเข้าที่ใช้เป็นประจำจึงยังไม่ครอบคลุมทั้งหมด

ข่าว LINE ปี 2026 ระบุแผนเริ่มข้อจำกัดไว้ประมาณวันที่ 24 พฤศจิกายน ส่วนประกาศความปลอดภัยระบุว่า เมื่อเริ่มจำกัดแล้ว แอปที่ใช้เวอร์ชันดังกล่าวอาจทำงานไม่ถูกต้องเมื่อเปิดในเบราว์เซอร์ภายนอก อย่าตีความเป็นเวลาหยุดระบบที่แน่นอน รหัสข้อผิดพลาดเดียวกันทุกกรณี หรือการหยุดทำงานของทุกการเชื่อมต่อ LINE

ตรวจ SDK ที่เผยแพร่จริง ไม่ใช่แค่ package.json

คู่มือพัฒนา LIFF อธิบายการติดตั้งผ่าน CDN และ npm แนะนำให้สำรวจแต่ละแอปที่เปิดใช้งานจริงดังนี้

วิธีติดตั้งสิ่งที่ตรวจการอัปเดตและหลักฐาน
CDN edgeสคริปต์ที่หน้าใช้งานจริงโหลดrelease notes ระบุการอัปเดตอัตโนมัติ แต่ยังควรยืนยันเวอร์ชันที่โหลดจริง
CDN แบบระบุเวอร์ชันเวอร์ชันใน URL ของสคริปต์ที่ deploy แล้วเปลี่ยนเวอร์ชันที่ได้รับผลกระทบเป็นรุ่นที่แก้ไขแล้ว และตรวจหน้าจริง
แพ็กเกจ npmเวอร์ชัน @line/liff ที่ resolve ได้, lockfile และ bundleอัปเดต dependency, build และ deploy ใหม่ แล้วตรวจเวอร์ชันขณะทำงาน

Release notes แยกวิธีอัปเดตเหล่านี้ไว้ v2.31.1 คือเวอร์ชันขั้นต่ำที่แก้ไขแล้ว ไม่ได้หมายความว่าเป็นเวอร์ชันล่าสุด หากเลือกเวอร์ชันใหม่กว่า ควรอ่านบันทึกของรุ่นนั้นก่อน

บันทึกผู้รับผิดชอบ URL จริง วิธีติดตั้ง เวอร์ชันที่ resolve ได้ รหัส build และเวลาตรวจสอบ ข้อมูลเหล่านี้เป็นข้อเสนอสำหรับการจัดการภายใน ไม่ใช่ฟิลด์ใหม่ของ LINE API อย่าลืมหน้า landing page ที่ไม่ค่อยถูกใช้และแพ็กเกจ frontend ที่ใช้ร่วมกัน

หลังโหลด SDK แล้ว ใช้เมธอดตรวจสภาพแวดล้อมที่ LINE ระบุไว้เพื่อวินิจฉัยเบื้องต้นได้:

console.log(liff.getVersion());
console.log(liff.isInClient());

ใช้ในบริบทการตรวจสอบที่ควบคุมได้ และอย่าบันทึก access token, ID token หรือ URL เข้าสู่ระบบแบบเต็ม การเห็นเวอร์ชันช่วยยืนยันว่าโหลดอะไร แต่ไม่ใช่การประเมินความปลอดภัยทั้งหมด

แยกการตรวจ deploy ออกจากแผนย้อนกลับ

รายการต่อไปนี้เป็นการตรวจที่แนะนำ ไม่ใช่ผลทดสอบที่ดำเนินการแล้ว:

  1. แก้ที่แหล่ง dependency จริง เปลี่ยนการอ้างอิงสคริปต์แบบคงที่ หรือแพ็กเกจ npm พร้อม lockfile การแก้ไฟล์ประกาศเพียงอย่างเดียวไม่เปลี่ยน bundle บน production
  2. เผยแพร่แล้วตรวจไฟล์จริง ถ้าแอปใช้ cache หรือ service worker ให้ตรวจว่าผู้ใช้ที่กลับมาอีกครั้งได้รับโค้ดที่แก้ไขแล้วด้วย อย่าตรวจเฉพาะหน้าพัฒนาบนเครื่อง
  3. ทดสอบเส้นทางเข้าปกติ ครอบคลุม LIFF URL, เบราว์เซอร์ภายนอกที่รองรับ และ endpoint URL ที่แอปเปิดให้ใช้ในเบราว์เซอร์ภายใน LINE ใช้ลิงก์ทดสอบปกติ ไม่ใช้ข้อมูลโจมตี
  4. ตรวจขั้นตอนใช้งาน ทดสอบ initialization, การกลับจาก login, การเปลี่ยนหน้า และฟังก์ชัน LIFF ที่ใช้งานจริง สำหรับการแชร์ ดูรายการตรวจ custom action button เพิ่มเติม การเปิดหน้าได้ยังไม่พิสูจน์ว่าการแชร์ทำงาน
  5. ตรวจการเปลี่ยนค่าคอนโซลแยกต่างหาก หากการปล่อยรุ่นนี้เปลี่ยนการตั้งค่า MINI App ด้วย ให้ดูคู่มือการตรวจซ้ำและควบคุมการเผยแพร่ การ deploy JavaScript กับการอนุมัติค่าคอนโซลเป็นหลักฐานคนละอย่าง
  6. เตรียมรุ่นย้อนกลับที่มีการแก้ไขแล้ว เก็บ artifact ที่ผ่านการทดสอบและมีอัปเดตความปลอดภัย อย่ากลับไปใช้ SDK ที่ได้รับผลกระทบเพื่อกู้ฟีเจอร์หนึ่ง หากจำเป็นให้ลดฟังก์ชันหรือแสดงหน้าบำรุงรักษาที่ควบคุมได้

หากสงสัยว่าข้อมูลเคยถูกเปิดเผย ให้เก็บหลักฐานที่ปกปิดข้อมูลอ่อนไหวแล้วและประสานผู้รับผิดชอบความปลอดภัย การอัปเดต SDK แก้ปัญหา dependency นี้ แต่ไม่ได้พิสูจน์ว่า session หรือข้อมูลก่อนหน้านั้นได้รับผลกระทบหรือไม่

ตรวจการรับข้อความ LINE แยกจากหน้า MINI App

อินเทอร์เฟซที่ไม่เป็นทางการของ UnifyPort เชื่อมบัญชีรับส่งข้อความ LINE ทั่วไปผ่านขั้นตอนอนุญาต LINE เอกสารระบุว่า QR URL และ PIN ถูกส่งผ่าน webhook แบบอะซิงโครนัส ซึ่งไม่ใช่การเริ่มต้นหน้า LIFF และไม่อัปเดต SDK ของแอปคุณ

สำหรับระบบเดิม ให้ทดสอบการรับ message.received ที่รองรับแยกจาก frontend ของ MINI App กล่องข้อความที่ทำงานได้ไม่ได้พิสูจน์ว่า frontend ถูกแก้ไขแล้ว และหน้า LIFF ที่ล้มเหลวก็ไม่ได้ยืนยันว่า webhook เสีย UnifyPort ไม่สามารถยกเลิกข้อจำกัด SDK ของ LINE หรือซ่อม bundle ที่มีช่องโหว่ได้

คำถามที่พบบ่อย

รอถึง 24 พฤศจิกายนค่อยอัปเดตได้ไหม?

LINE ขอให้อัปเดตทันที ช่วงประมาณ 24 พฤศจิกายนคือกำหนดเริ่มข้อจำกัด ไม่ใช่ช่วงรอที่ปลอดภัยหรือเส้นตายที่รับประกันเวลาชัดเจน

เปลี่ยนเวอร์ชัน npm อย่างเดียวพอไหม?

ไม่พอ ต้องตรวจ dependency ที่ resolve ได้ จากนั้น build และ deploy ใหม่ แล้วตรวจเวอร์ชันที่หน้าใช้งานจริงโหลด

ถ้าเปิดใน LINE จะไม่เกี่ยวกับช่องโหว่นี้ใช่ไหม?

ไม่ใช่ LINE ระบุว่าการเปิด endpoint URL ในเบราว์เซอร์ภายในแอปนับเป็นเส้นทางภายนอก ต้องตรวจทั้ง URL ทางเข้าและบริบทการทำงาน

Messaging API webhook ต้องเปลี่ยน SDK ด้วยหรือไม่?

ประกาศนี้เกี่ยวกับ LIFF SDK ใน LIFF และ MINI App ให้ตรวจ dependency ของ frontend ที่ได้รับผลกระทบ ไม่ควรสรุปว่าต้องย้าย webhook อีกระบบจากประกาศนี้

ขั้นตอนถัดไปและแหล่งข้อมูล

เริ่มจากประกาศความปลอดภัยของ LINE สำรวจทางเข้า LIFF ทุกจุดบน production และแนบหลักฐานเวอร์ชันที่โหลดจริงในการตรวจปล่อยรุ่น

ตรวจสอบแหล่งข้อมูลทางการเมื่อ 2026-11-08:

UnifyPort API

เปลี่ยนการเชื่อมต่อข้อความให้เป็น pipeline ผลิตภัณฑ์ที่เสถียร

เริ่มจากการส่งผ่าน API เดียว แล้วส่งข้อความขาเข้าทั้งหมดกลับสู่ระบบธุรกิจของคุณด้วย event มาตรฐาน