การแก้ไขสำหรับคีย์เซิร์ฟเวอร์ Firebase Cloud Messaging (FCM) ที่เปิดเผย
ข้อมูลนี้มีไว้สำหรับนักพัฒนาแอปซึ่งมีคีย์เซิร์ฟเวอร์ Firebase Cloud Messaging (FCM) ที่เปิดเผย
สิ่งที่จะเกิดขึ้น
แอปของคุณอย่างน้อย 1 แอปมีคีย์เซิร์ฟเวอร์ FCM ที่เปิดเผย ผู้โจมตีที่เป็นอันตรายอาจใช้คีย์ที่เปิดเผยเพื่อส่งข้อความ Push ถึงผู้ใช้ทุกคนในแอปที่มีช่องโหว่ของคุณ โดยผู้โจมตีจะควบคุมเนื้อหาของการแจ้งเตือนดังกล่าว และเนื้อหาเหล่านี้อาจเป็นได้ทั้งข้อความที่ไม่เหมาะสมไปจนถึงรูปภาพที่โจ่งแจ้งหรือรบกวนใจ โปรดอ่านขั้นตอนโดยละเอียดด้านล่างเพื่อแก้ปัญหาที่เกิดขึ้นในแอป ดูตําแหน่งในแอปที่มีการเปิดเผยคีย์เซิร์ฟเวอร์ FCM ได้ในการแจ้งเตือนของ Play Console สําหรับแอป
ต้องดำเนินการ
-
อัปเดตแอปและคีย์ FCM ที่เปิดเผยโดยใช้ขั้นตอนที่ไฮไลต์ไว้ด้านล่างนี้
- หากคุณเปิดใช้ FCM API เดิมไว้สำหรับแอป และไม่ได้ใช้เพื่อส่งข้อความ Push ให้ปิดใช้ FCM API เดิม
- หากคุณเปิดใช้ FCM API เดิมไว้และใช้เพื่อส่งข้อความ Push ให้เลือกทำขั้นตอนใดขั้นตอนหนึ่งจาก 2 ขั้นตอนต่อไปนี้
- (แนะนำ) ย้ายข้อมูลไปใช้ FCM v1 API และปิดใช้ FCM API เดิม
- ดูแลรักษาความปลอดภัยในการใช้ FCM API เดิมโดยทำดังนี้
- ในกรณีที่คุณใช้คีย์ที่เปิดเผยสำหรับ FCM API เท่านั้น
- สร้างคีย์ใหม่จากคอนโซล Firebase > การตั้งค่าโปรเจ็กต์ > Cloud Messaging โดยคลิก "เพิ่มคีย์เซิร์ฟเวอร์" ใช้คีย์เซิร์ฟเวอร์ใหม่นี้เพื่อส่งข้อความ FCM จากสภาพแวดล้อมของเซิร์ฟเวอร์ที่ปลอดภัย ตรวจดูว่าคุณใช้คีย์นี้จากสภาพแวดล้อมของเซิร์ฟเวอร์ที่ปลอดภัยเท่านั้นและไม่ได้รวมคีย์ไว้ในโค้ดของไคลเอ็นต์ (แอป ไบนารี)
- เมื่อคุณย้ายข้อมูลไปส่งข้อความ FCM โดยใช้คีย์เซิร์ฟเวอร์ที่สร้างขึ้นใหม่แล้ว ให้ลบคีย์เซิร์ฟเวอร์ที่เปิดเผยออกจากคอนโซล GCP ดูตำแหน่งในแอปที่มีการเปิดเผยคีย์เซิร์ฟเวอร์ FCM ได้ในอีเมลการแจ้งเตือนของ Google Play ขั้นตอน ค. อธิบายว่าคุณจะหาคีย์ที่เปิดเผยจากตำแหน่งเหล่านี้ได้อย่างไร
- หากคุณกำลังใช้คีย์ที่เปิดเผยสำหรับ API อื่นๆ ซึ่งรวมถึง FCM ให้ทำดังนี้
- ย้ายข้อมูลไปใช้ FCM v1 API และปิดใช้ FCM API เดิม
- เพื่อปกป้องการใช้งาน API อื่นๆ ในอนาคต ให้พิจารณาย้ายข้อมูลจากการใช้คีย์ที่เปิดเผยสำหรับ API อื่นๆ และลบคีย์ที่เปิดเผยออกจากคอนโซล GCP ในที่สุด
- ในกรณีที่คุณใช้คีย์ที่เปิดเผยสำหรับ FCM API เท่านั้น
- เมื่อทำตามขั้นตอนใดขั้นตอนหนึ่งข้างต้นแล้ว ให้ลบคีย์เซิร์ฟเวอร์ FCM ที่เปิดเผยออกจากโค้ดของแอป ดูตำแหน่งในแอปที่มีการเปิดเผยคีย์เซิร์ฟเวอร์ FCM ได้ในอีเมลการแจ้งเตือนของ Google Play หากต้องการหาคีย์ที่เปิดเผย ให้ตรวจสอบโค้ดของแอปในตำแหน่งที่มีช่องโหว่ คีย์อาจฝังเป็นสตริงอยู่ในตำแหน่งดังกล่าวหรือโหลดอยู่ในตำแหน่งนั้นจากทรัพยากร XML ของแอป หากเป็นกรณีหลัง ให้ตรวจสอบไฟล์
res/values/strings.xml
ของแอปเพื่อหาคีย์ที่เปิดเผย โปรดทราบว่า- หากคุณทำตามขั้นตอนข้างต้นแต่ไม่ได้ลบคีย์ที่เปิดเผยออกจากแอป ก็จะยังได้รับการแจ้งเตือนเกี่ยวกับช่องโหว่ทางอีเมล/Google Play Console
- หากลบคีย์ที่เปิดเผยออกจากแอปแต่ไม่ได้ทำตามขั้นตอนข้างต้น ก็ถือว่าคุณไม่ได้แก้ปัญหาจริงๆ เนื่องจากผู้โจมตีสามารถค้นหาคีย์จากแอปเวอร์ชันเก่าแล้วนำมาใช้โจมตีแอปของคุณได้
2. ส่ง APK ที่อัปเดตแล้ว
วิธีส่ง App Bundle หรือ APK ที่อัปเดตแล้ว
- ไปที่ Play Console
- เลือกแอป
- ไปที่ App Bundle Explorer
- เลือกเวอร์ชันแอปของ APK/App Bundle ที่ไม่เป็นไปตามนโยบายจากเมนูแบบเลื่อนลงที่ด้านขวาบน แล้วจดบันทึกไว้ว่ารายการดังกล่าวอยู่ในรุ่นใด
- ไปยังแทร็กที่มีปัญหาด้านนโยบาย ซึ่งจะเป็นหนึ่งใน 4 หน้าต่อไปนี้ ได้แก่ การทดสอบภายใน การทดสอบแบบปิด การทดสอบแบบเปิด หรือเวอร์ชันที่ใช้งานจริง
- ที่บริเวณด้านขวาบนของหน้า ให้คลิกสร้างรุ่นใหม่ (คุณอาจต้องคลิก "จัดการแทร็ก" ก่อน)
- หากรุ่นที่มี APK ที่ละเมิดนโยบายอยู่ในสถานะฉบับร่าง ให้ทิ้งรุ่นดังกล่าว
- เพิ่ม App Bundle หรือ APK เวอร์ชันที่เป็นไปตามนโยบาย
- ตรวจสอบว่า App Bundle หรือ APK เวอร์ชันที่ไม่เป็นไปตามนโยบายอยู่ในส่วนไม่รวมอยู่ด้วยของรุ่นนี้ ดูคำแนะนำเพิ่มเติมได้ที่ส่วน "ไม่รวมอยู่ด้วย (App Bundle และ APK)" ในบทความช่วยเหลือนี้ของ Play Console
- หากต้องการบันทึกการเปลี่ยนแปลงรุ่น ให้เลือกบันทึก
- เมื่อเตรียมรุ่นเรียบร้อยแล้ว ให้เลือกตรวจสอบรุ่น
หากมีการเผยแพร่ APK ที่ไม่เป็นไปตามนโยบายในหลายๆ แทร็ก ให้ทำตามขั้นตอนที่ 5-9 อีกครั้งในแต่ละแทร็ก
แอปของคุณจะได้รับการตรวจสอบอีกครั้งเมื่อมีการส่งใหม่ ขั้นตอนนี้อาจใช้เวลาหลายชั่วโมง หากแอปผ่านการตรวจสอบและเผยแพร่เรียบร้อยแล้ว คุณก็ไม่ต้องดำเนินการใดๆ เพิ่มเติม หากแอปไม่ผ่านการตรวจสอบ จะไม่มีการเผยแพร่แอปเวอร์ชันใหม่และคุณจะได้รับการแจ้งเตือนทางอีเมล
เราพร้อมช่วยเหลือคุณ
หากมีคำถามทางเทคนิคเกี่ยวกับช่องโหว่ คุณโพสต์ถามได้ที่ Stack Overflow โดยใช้แท็ก "android-security" หากต้องการคำชี้แจงเกี่ยวกับขั้นตอนที่ต้องดำเนินการเพื่อแก้ไขปัญหานี้ โปรดติดต่อทีมสนับสนุนนักพัฒนาแอป