สรุปสั้น

Admin API คือ ช่องทางที่แอปของบุคคลที่สามใช้อ่านและแก้ข้อมูลร้านค้าบน Shopify ทั้งสินค้า คำสั่งซื้อ และข้อมูลลูกค้า โดยยืนยันตัวตนด้วย access token ของแอป ถ้า token หลุด ใครก็ใช้ token นั้นเรียก API ได้ Shopify จึงเปลี่ยนฟีเจอร์ IP allowlist ที่เปิดตัวเมื่อ 27 ตุลาคม 2569 ให้กลายเป็นข้อบังคับสำหรับแอปสาธารณะทุกแอปที่เรียก Admin API นักพัฒนาต้องเปิดใช้ภายในวันที่ 20 พฤศจิกายน 2569 เวลา 23:59 น. ตามเวลาฝั่งตะวันออกของสหรัฐฯ ส่วนแอปที่ใช้ bulk operation มีเส้นตายเร็วกว่า คือ 12 พฤศจิกายนเวลาเดียวกัน เมื่อเปิดใช้ Shopify จะตรวจที่อยู่ต้นทางของทุกคำขอ GraphQL และ REST Admin API ที่ใช้ token ของแอป คำขอจากนอกที่อยู่หรือเครือข่ายที่อนุมัติจะได้ HTTP 403 และ Shopify จะปฏิเสธคำขอที่ยืนยันที่อยู่ต้นทางไม่ได้ด้วย

มาตรการนี้ทำให้ token ที่ถูกขโมยใช้ไม่ได้ถ้าผู้โจมตีอยู่นอกเครือข่ายของแอป แต่ไม่ได้กันผู้โจมตีที่เข้ามาอยู่ในเครือข่ายที่อนุมัติแล้ว นักพัฒนาจึงยังต้องดูแล credential ให้ดี แอปที่พลาดเส้นตายจะถูกถอดจาก Shopify App Store และบล็อกการติดตั้งใหม่ นักพัฒนาควรตั้งค่าใน Dev Dashboard และทดสอบกับทราฟฟิกจริงก่อนเปิดบังคับใช้

รายละเอียดข่าว

เว็บไซต์ Cyber Security News รายงานเมื่อวันที่ 6 พฤศจิกายน 2569 ว่าแอปที่ติดตั้งอยู่แล้วจะทำงานต่อได้ถึงวันที่ 1 เมษายน 2570 หลังจากนั้นคำขอ Admin API จะล้มเหลว แต่ bulk query และ mutation จะถูกตัดเร็วกว่านั้นตั้งแต่ 12 พฤศจิกายน ร้านค้าจะเริ่มเห็นคำเตือนในหน้าผู้ดูแลตั้งแต่ 15 มกราคม นอกจากนี้แอปสาธารณะต้องย้ายไปใช้ offline token แบบหมดอายุภายใน 1 มกราคม 2570 ซึ่งเพิ่มการจำกัดเวลาควบคู่กับการจำกัดเครือข่าย

ข้อจำกัดของข้อมูล คือ ประกาศทางการของ Shopify ระบุวันที่ 12 พฤศจิกายนในคำแนะนำโดยละเอียดสำหรับ bulk operation แต่ในส่วนสรุปเขียนเป็น 11 พฤศจิกายน นักพัฒนาที่ใช้ bulk operation จึงควรถือวันที่เร็วกว่าเป็นเส้นตายเพื่อความปลอดภัย ประกาศไม่ได้อ้างเหตุ token รั่วเฉพาะครั้งใดเป็นเหตุผลของมาตรการ

รายละเอียดมาตรการ

ตรวจที่มาของคำขอ ไม่ใช่แค่ token — เดิม token ที่ถูกต้องเพียงพอให้เรียก Admin API ได้จากที่ใดก็ได้ เมื่อเปิด allowlist Shopify จะตรวจ IP ต้นทางของทุกคำขอที่ใช้ token ของแอป ผู้ที่ขโมย token ไปใช้จากเครื่องของตัวเองจึงได้ HTTP 403

รองรับทั้ง IP คงที่และเครือข่ายที่เปลี่ยนไปมา — แอปที่มีโครงสร้างคงที่ระบุ IP สาธารณะหรือช่วง IP ได้ แอปที่ IP เปลี่ยนบ่อย เช่น รันบนคลาวด์แบบ serverless อนุมัติเครือข่ายของผู้ให้บริการโฮสติ้งด้วยหมายเลข ASN ได้สูงสุด 10 รายการ และจำกัดประเทศได้สูงสุด 10 ประเทศ กฎแบบเครือข่ายกว้างกว่าการระบุ IP เดี่ยว จึงป้องกันได้น้อยกว่า เพราะผู้โจมตีที่เช่าเครื่องในคลาวด์เดียวกันจะผ่านเงื่อนไขได้

ต้องเลือกแบบใดแบบหนึ่ง — แอปต้องเลือกระหว่างรายการ IP กับรายการเครือข่าย การบันทึกแบบหนึ่งจะแทนที่อีกแบบ Shopify แนะนำให้ทดสอบกฎกับทราฟฟิกล่าสุดก่อน ดูว่าคำขอที่ถูกต้องจะถูกบล็อกหรือไม่ แล้วยืนยันว่าคำขอจากภายนอกล้มเหลวจริง

ผลกระทบ

กลุ่มที่ได้รับผลโดยตรง คือ นักพัฒนาแอปสาธารณะบน Shopify ซึ่งต้องปรับโครงสร้างให้รู้ว่าคำขอ API ออกจาก IP หรือเครือข่ายใด ภายในเวลาไม่ถึงสามสัปดาห์ แอปที่ใช้ bulk operation มีเวลาน้อยกว่านั้น แอปที่พลาดจะเสียช่องทางขายใน App Store ทันที และในที่สุดจะใช้งานไม่ได้ ซึ่งกระทบร้านค้าที่พึ่งแอปนั้นด้วย

ในด้านความปลอดภัย มาตรการนี้ลดผลของเหตุที่ token ของแอปรั่ว ซึ่งเคยทำให้ผู้โจมตีเข้าถึงข้อมูลลูกค้าของร้านค้าจำนวนมากผ่านแอปตัวเดียว อย่างไรก็ดี allowlist แบบ ASN ของผู้ให้บริการคลาวด์รายใหญ่ยังเปิดช่องกว้าง และผู้โจมตีที่เจาะเซิร์ฟเวอร์ของแอปได้ก็อยู่ในเครือข่ายที่อนุมัติแล้ว การดูแล token และการหมุน token ยังจำเป็น

คำแนะนำ

  • นักพัฒนาแอปที่ใช้ bulk operation — ทำทันที: เปิด IP allowlist ให้เสร็จก่อน 11-12 พฤศจิกายน 2569 โดยถือวันที่เร็วกว่าเป็นเส้นตาย
  • นักพัฒนาแอปสาธารณะ: ทำบัญชี IP ขาออกของทุกส่วนที่เรียก Admin API รวมถึง worker และ cron job ตั้งค่าใน Settings ของ Dev Dashboard ทดสอบกับทราฟฟิกล่าสุด แล้วเปิดบังคับใช้ก่อน 20 พฤศจิกายน
  • นักพัฒนาแอปสาธารณะ: เลือกระบุ IP หรือช่วง IP แทน ASN เมื่อทำได้ เช่น ส่งทราฟฟิกออกผ่าน NAT gateway ที่มี IP คงที่ เพื่อให้กฎแคบที่สุด
  • นักพัฒนาแอปสาธารณะ: วางแผนย้ายไปใช้ offline token แบบหมดอายุก่อน 1 มกราคม 2570 และเก็บ token ไว้ใน secrets manager ไม่ใช่ในโค้ดหรือไฟล์คอนฟิก
  • ร้านค้าบน Shopify: ตรวจรายการแอปที่ติดตั้ง ถอนแอปที่ไม่ใช้แล้ว และเตรียมหาทางเลือกสำหรับแอปที่ผู้พัฒนาอาจไม่ปรับตามเส้นตาย

แหล่งอ้างอิง