1 คะแนน โดย GN⁺ 2025-10-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เมื่อไม่นานมานี้ บริการ Google Safe Browsing ทำให้ทุกเว็บไซต์ที่เกี่ยวข้องกับ Immich ได้รับคำเตือนว่าเป็นอันตราย
  • โดเมน immich.cloud ทั้งหมดได้รับผลกระทบ ทำให้แทบไม่สามารถเข้าถึงได้ในเบราว์เซอร์ส่วนใหญ่
  • สาเหตุมาจาก URL สำหรับการดีพลอยภายใน เช่น สภาพแวดล้อม Preview ถูกครอว์ลอัตโนมัติและถูกจัดเป็น การตรวจจับผิดพลาด
  • ทีมกู้คืนได้ชั่วคราวผ่านการยื่นอุทธรณ์ใน Google Search Console แต่ปัญหาก็เกิดซ้ำทุกครั้งที่มีการสร้าง Preview ใหม่
  • ด้วยลักษณะของบริการแบบ โอเพนซอร์ส·โฮสต์เอง นี่จึงเป็นปัญหาเชิงโครงสร้าง และมีแผนจะแยกสภาพแวดล้อม Preview ไปยังโดเมนต่างหากในอนาคต

เหตุการณ์ที่ Google ทำเครื่องหมายเว็บไซต์ Immich ว่าเป็นเว็บไซต์อันตราย

20 ตุลาคม 2025
By Jason Rasmussen

ภาพรวม

  • เมื่อต้นเดือนนี้ เว็บไซต์ทั้งหมดภายใต้ *.immich.cloud ถูกจัดประเภทว่าเป็นเว็บไซต์อันตราย และผู้ใช้ได้เห็นหน้าคำเตือนความปลอดภัยในเบราว์เซอร์ (ที่เรียกกันว่า "red-screen-of-death")
  • ไม่มีใครในทีมเข้าใจอย่างชัดเจนว่าฟีเจอร์ของเบราว์เซอร์นี้ทำงานอย่างไร แต่ตอนนี้ความรู้นี้ได้ถูกเพิ่มเข้าไปในรายการ 'cursed knowledge' แล้ว

เบื้องหลัง

  • Google ให้บริการ Safe Browsing ฟรี โดยมีเป้าหมายเพื่อตรวจสอบว่าเป็นมัลแวร์ ซอฟต์แวร์ไม่พึงประสงค์ หรือการหลอกลวงเชิงวิศวกรรมสังคมหรือไม่
  • เบราว์เซอร์หลักอย่าง Chrome และ Firefox เชื่อมต่อกับบริการนี้
  • วิธีที่บริการใช้ตัดสินความเสี่ยงจริง ๆ ยังไม่ชัดเจน
  • เมื่อเว็บไซต์ถูกจัดเป็นอันตราย จะเกิดปัญหาที่ผู้ใช้ส่วนใหญ่ไม่สามารถใช้งานเว็บไซต์ได้
  • มีเพียงผู้ใช้ส่วนน้อยมากเท่านั้นที่ยังเข้าไปได้ผ่านลิงก์ 'ดูรายละเอียด' และ 'ไปยังเว็บไซต์ที่ไม่ปลอดภัย'

การรับรู้ว่าถูกทำเครื่องหมาย (Flagged)

  • เมื่อต้นเดือนนี้ หลายเว็บไซต์ในโดเมน immich.cloud ถูกแสดงว่า "อันตราย" และมีผู้ใช้ร้องเรียนว่าอินสแตนซ์ Immich ที่พวกเขาดีพลอยเองก็ถูกทำเครื่องหมายด้วย
  • เว็บไซต์ภายในทั้งหมดที่ทีมใช้งานอยู่ รวมถึงสภาพแวดล้อม Preview ก็ขึ้นคำเตือนเช่นกัน
  • ความไม่สะดวกคือจำเป็นต้องผ่านขั้นตอนการดู "เว็บไซต์ที่ปลอดภัย" ทุกครั้ง

การรับมือผ่าน Google Search Console

  • เมื่อคำเตือนไม่ถูกยกเลิกแม้ผ่านไปหลายวัน ทีมจึงตัดสินใจใช้ Google Search Console ซึ่งเป็นช่องทางรับมืออย่างเป็นทางการ

  • บริการนี้จำเป็นต้องมีการสร้างบัญชี Google ใช้งาน Search Console และส่งคำขอรีวิวเว็บไซต์ที่ถูกทำเครื่องหมาย

  • Search Console ให้คำอธิบายบางส่วนเกี่ยวกับสาเหตุของการถูกจัดว่าอันตราย

    • "Google ตรวจพบเนื้อหาที่เป็นอันตรายในบางหน้าของเว็บไซต์ของคุณ"
    • "หน้าเหล่านี้มีความเสี่ยง เช่น ชักจูงให้ติดตั้งซอฟต์แวร์ไม่พึงประสงค์ หรือเปิดเผยข้อมูลส่วนบุคคล"
  • เมื่อตรวจสอบรายการ URL ทั้งหมดที่ถูกชี้ว่าเป็นปัญหา พบว่าทั้งหมดเป็น URL ที่เกี่ยวข้องกับสภาพแวดล้อม Preview

  • สิ่งที่น่าตกใจที่สุดคือ แม้จะมีเพียงซับโดเมนเดียวที่ถูกทำเครื่องหมาย ก็อาจทำให้ทั้งโดเมนถูกตัดสินว่าไม่ดีไปด้วย

ผลกระทบ

  • สภาพแวดล้อม Preview และบริการภายในทั้งหมด (zitadel, outline, grafana, victoria metrics เป็นต้น) ได้รับผลกระทบทั้งหมด
  • Production tile server (tiles.immich.cloud) ก็อยู่ในขอบเขตที่ได้รับผลกระทบด้วย
  • อย่างไรก็ตาม tile server ถูกเรียกผ่าน JavaScript และไม่มีส่วนติดต่อผู้ใช้โดยตรง จึงยืนยันได้ว่ายังทำงานตามปกติ

ความพยายาม "แก้ไข" ปัญหา

  • ใน Google Search Console จำเป็นต้องใช้ฟีเจอร์ Request Review เพื่อยื่นอุทธรณ์และอธิบายวิธีการแก้ไข
  • หากเพียงขอรีวิวโดยไม่ได้แก้ปัญหาจริง ระยะเวลาการตรวจสอบจะยาวนานขึ้น

คำขอกู้คืนเว็บไซต์อันตราย


  • เนื่องจากทีมเห็นว่าแทบไม่มีปัญหาที่ต้องแก้ไขจริง จึงส่งคำอธิบายตอบกลับดังนี้

    • Immich เป็นแอปพลิเคชันสำหรับโฮสต์เอง และทีม Immich (https://immich.app/) เป็นผู้ดูแลและดำเนินงานโดเมนดังกล่าวโดยตรงทั้งหมด
    • เว็บไซต์ที่ถูกทำเครื่องหมายทั้งหมดเป็นเพียงสภาพแวดล้อมที่ทีมดีพลอยเองอย่างเป็นทางการ และไม่ได้ปลอมตัวเป็นผู้อื่น
  • ภายใน 1–2 วัน โดเมนก็กลับมาได้รับการจัดว่าเป็นปกติ และสามารถเข้าถึงได้อีกครั้ง

ความพยายามลดปัญหา

  • เมื่อเพิ่มเลเบล preview ให้กับ GitHub Pull Request ระบบจะสร้างสภาพแวดล้อม Immich Preview โดยอัตโนมัติ และทันทีที่สร้างเสร็จจะมีคอมเมนต์ยืนยันพร้อม URL ของ Preview

    https://pr-<num>.preview.internal.immich.cloud/
    
  • ทุกครั้งที่มีการสร้างสภาพแวดล้อม Preview ใหม่ โดเมน immich.cloud จะถูกจัดว่าเป็นอันตรายอีกครั้ง

  • คาดว่า Google ครอว์ล GitHub แล้วพบ URL ใหม่ จากนั้นจึงสำรวจและจัดว่าเป็นอันตราย

  • มาตรการรับมือปัจจุบันคือกำลังวางแผนแยกสภาพแวดล้อม Preview ไปยังโดเมนเฉพาะต่างหาก (immich.build)

ปัญหาที่ใหญ่กว่า

  • ระบบ Google Safe Browsing ดูเหมือนจะถูกออกแบบโดยไม่ได้คำนึงถึงลักษณะเฉพาะของซอฟต์แวร์แบบ โอเพนซอร์สและโฮสต์เอง
  • นอกจาก Immich แล้ว ยังมีอีกหลายโปรเจกต์ยอดนิยมที่เจอปัญหาคล้ายกัน
  • Google สามารถบล็อกโดเมนใดก็ได้ตามดุลยพินิจ และในทางปฏิบัติก็แทบไม่มีวิธีรับมืออื่น นอกจากส่งคำขอรีวิวไปยัง Google อย่างต่อเนื่อง

Cheers,
ทีม Immich

1 ความคิดเห็น

 
GN⁺ 2025-10-23
ความคิดเห็นจาก Hacker News
  • ถ้าคุณวางแผนจะโฮสต์คอนเทนต์ของผู้ใช้ไว้บนซับโดเมน คุณควรลงทะเบียนเว็บไซต์ไว้ใน Public Suffix List https://publicsuffix.org/list/
    แบบนี้ซับโดเมนที่ปนเปื้อนจะไม่ส่งผลกระทบต่อทั้งเว็บไซต์

    • ถ้าโฮสต์คอนเทนต์ที่ผู้ใช้สร้างขึ้น ก็ควรอยู่ใน PSL อยู่แล้ว ซึ่งในหมู่นักพัฒนาเว็บถือเป็นความรู้โดยนัยแบบหนึ่ง
      แต่ถ้าไม่เคยเจอมาก่อนก็ยากจะรู้เรื่องแบบนี้ อย่างกรณีของ Immich คนส่วนใหญ่จึงมักไม่รู้จนกว่าจะเจอเข้ากับตัว

    • ในอดีตเบราว์เซอร์เคยใช้อัลกอริทึมที่บล็อกการตั้งค่าคุกกี้แบบกว้าง ๆ เฉพาะกรณีที่โดเมนไม่มีจุดเท่านั้น (เช่น .com, .org)
      แต่กับโดเมนหลายชั้นอย่าง .co.uk มันทำให้คุกกี้รั่วไหลไปยังทุกโดเมนย่อยที่ลงทะเบียนไว้ข้างใต้
      เพราะนโยบายการลงทะเบียนของแต่ละ top-level domain ต่างกัน จึงไม่มีวิธีแก้ในเชิงพัฒนาที่ครอบจักรวาล สุดท้ายเลยต้องมาดูแลลิสต์แบบ manual อย่าง Public Suffix List
      พอเห็นว่าตัวเบราว์เซอร์เองมีข้อจำกัดแต่กำเนิดแบบนี้แล้ว เว็บก็ให้ความรู้สึกเหมือนรถยนต์ที่ประกอบด้วยเทปกาว https://publicsuffix.org/learn/

    • จากหลายลิงก์ใต้โพสต์นี้ ดูเหมือนจริง ๆ แล้วมีอยู่สองปัญหา

  1. กรณีแบบ Immich ที่เอาคอนเทนต์ผู้ใช้ขึ้นบนโดเมนของตัวเองแล้วต้องลงทะเบียน public suffix list
  2. กรณีที่ผู้ใช้โฮสต์โปรเจกต์โอเพนซอร์สอย่าง immich, jellyfin ไว้บนโดเมนของตัวเองแล้วถูกเข้าใจผิดว่าเป็นฟิชชิง
    ข้อแรกถ้ารู้เรื่อง PSL ก็ถือว่าค่อนข้างแก้ง่าย แต่ข้อสองนี่ปวดหัวกว่า โดยเฉพาะเมื่อชื่อโดเมนมีชื่อซอฟต์แวร์รวมอยู่ด้วย
  • ปัญหาไม่ใช่ตัวคอนเทนต์ของผู้ใช้ แต่คือฉันโฮสต์ release build ของ Immich ลงบนเซิร์ฟเวอร์ของตัวเองโดยตรง แล้ว Google กลับบล็อกทั้งโดเมนของฉัน

  • ไม่ใช่เพราะ Immich โฮสต์คอนเทนต์ผู้ใช้จริง ๆ แต่เป็นเพราะปัญหานี้เกิดบนซับโดเมนสำหรับ PR preview
    ฉันคิดว่านี่เป็นบั๊กฝั่งโค้ดของ Google ชัด ๆ

  • แนะนำให้ลองอ่านทั้งลิสต์ ‘Cursed Knowledge’ ของทีม Immich https://immich.app/cursed-knowledge

    • บางอย่างในลิสต์กลับดูเหมือนเป็นการออกแบบด้านความปลอดภัยที่สมเหตุสมผล
      เช่น ‘โทรศัพท์บางรุ่นจะลบข้อมูล GPS อัตโนมัติเมื่อแอปที่ไม่มีสิทธิ์ตำแหน่งอ่านภาพ’
      อันนี้กลับดูเป็นพฤติกรรมที่เป็นธรรมชาติและน่าพึงประสงค์มากกว่า

    • คงดีถ้าความรู้ทำนองนี้สามารถแชร์กันเป็นไฟล์มาตรฐานอย่าง CURSED.md ในแต่ละโปรเจกต์ได้
      ทุกคนจะได้เรียนรู้ความรู้ภาคสนามที่สะสมมาจริง

    • ‘พารามิเตอร์ของ Postgres query จำกัดที่ 65,000 ตัว’
      ตลกดีที่แม้ขนาดนั้นยังไม่พอ

  • มีอย่างหนึ่งที่ฉันสงสัยทุกครั้งเวลาเห็นข้อความเตือนแบบนี้
    มันตีตราตรง ๆ ว่าเป็น ‘คนโกง’ หรือ ‘ผู้โจมตี’ แล้วแบบนี้ไม่เข้าข่ายหมิ่นประมาทหรือ
    คำเตือนเรื่องไฟล์รันที่ไม่ยืนยันของ Microsoft ก็เหมือนกัน
    เมื่อก่อนยังใช้แนวว่า ‘เราไม่รู้ว่ามันปลอดภัยไหม’ แต่เดี๋ยวนี้กลับแสดงแบบฟันธงว่า ‘คุณคือผู้โจมตี’

    • คำว่า ‘คนโกง’ ไม่ได้ถูกใช้ในข้อความเตือนจริง ๆ แต่ใช้ถ้อยคำอย่าง ‘อาจมีผู้โจมตีอยู่ในเว็บไซต์’ หรือ ‘might’
      ซึ่งครอบคลุมถึงกรณีที่แฮ็กเกอร์บุคคลที่สามเจาะเข้ามาด้วย
      ไม่ได้ชี้ว่าเจ้าของเว็บไซต์คือผู้โจมตี
      ฝ่ายกฎหมายคงตรวจถ้อยคำพวกนี้อย่างระมัดระวังมาก

    • ฉันไม่ใช่ทนาย แต่ก็ไม่คิดว่าเคยมีกรณีที่ข้อความเตือนแบบนี้ไปถึงศาล
      อย่างไรก็ดูเหมือนอาจเข้าข่ายหมิ่นประมาทได้

  • มันอาจไม่ใช่ปัญหาใหญ่มากก็ได้ แต่ฉันสงสัยว่าในที่อย่าง Immich ใครก็ตามส่ง PR แล้วติดแท็ก preview ก็จะถูกโฮสต์ที่ https://pr-<num>.preview.internal.immich.cloud โดยอัตโนมัติใช่ไหม
    สรุปคือใคร ๆ ก็อัปโหลดอะไรก็ได้อย่างอิสระงั้นหรือ

    • บน GitHub คนที่เพิ่ม label ได้ถูกจำกัดไว้แค่ผู้ร่วมพัฒนา จึงไม่ได้เปิดหมดเสียทีเดียว
      แต่ถึงอย่างนั้น ถ้าผู้ร่วมพัฒนาส่ง PR ปกติไว้ก่อน แล้วพอได้สิทธิ์ติด label เมื่อไรจะอัปอะไรขึ้นไปก็ได้ แบบนั้นก็ยังมีความเสี่ยง

    • ฟังดูเหมือนไอเดียทำฟิชชิงแบบไม่ต้องเสียเงินจริง ๆ

  • มันน่าเหลือเชื่อที่บริษัทเดียวจะมีอิทธิพลถึงขั้นกำหนดได้ว่าเราจะเข้าถึงเว็บไซต์ไหนได้บ้าง
    แค่จำกัดการรันแอปก็ยังไม่พอ ตอนนี้ไปถึงระดับนี้แล้ว

    • นี่เป็นผลต่อเนื่องจากการที่สภาคองเกรสสหรัฐทำงานอย่างไร้ประสิทธิภาพมาเป็นเวลานาน จนก่อให้เกิดปัญหาหลายอย่าง

    • น่าแปลกที่แม้แต่ผู้ใช้ที่เกลียดโฆษณา ก็ยังถูกทำให้รู้สึกว่าบริษัทใหญ่แบบนี้ ‘เท่’ ได้
      ไม่มีใครอยากได้โฆษณา แต่มันคือช่องทางทำเงินของบริษัท
      ฉันไม่เข้าใจว่า Google ทำอย่างไรถึงทำให้ภาพลักษณ์บริษัทที่ไร้จริยธรรมแบบนี้ถูกห่อให้ดู ‘เจ๋ง’ ได้

  • รู้สึกว่าอินเทอร์เน็ตแบบเปิดได้จบลงแล้ว
    ตอนนี้ทุกอย่างถูกยึดครองโดยผู้ผูกขาด
    ฉันมีแอป iOS อยู่บนสโตร์มา 3 ปี แล้วจู่ ๆ Apple ก็เรียกหาไลเซนส์ใหม่ที่ไม่มีอยู่จริง พร้อมบอกว่าถ้าไม่มีจะถอดแอปลง
    ทั้งที่ตลอด 3 ปีนั้นไม่มีอะไรเปลี่ยนเลย
    ตอนนี้เริ่มเบื่อขึ้นเรื่อย ๆ ว่าแม้แต่ self-host ก็ยังทำอะไรตามใจไม่ได้

    • ถ้าคุณอธิบายรายละเอียดเรื่องแอป iOS กับข้อกำหนดของ Apple ได้ จะเป็นประโยชน์มากจริง ๆ
  • เพื่อนของฉันซึ่งเป็นลูกค้าด้วย เคยใช้โฮสติ้งสาย WordPress กับรีไดเร็กต์แบบง่าย ๆ
    วันหนึ่งโฮสต์กลับไปติดแบล็กลิสต์ ‘เว็บไซต์อันตราย’
    แม้จะเอารีไดเร็กต์ออกแล้ว โดเมนของเขาก็ยังปนเปื้อนอยู่ และ Google ก็ไม่รับอีเมลจากโดเมนนั้นเลย
    สุดท้ายแม้จะขอให้ทบทวนจนพ้นแบล็กลิสต์ได้ แต่ผลเรื่องอีเมลถูกบล็อกกลับคงอยู่ถาวร
    ท้ายที่สุดเขาต้องไปจดโดเมนใหม่ ซึ่งพฤติกรรมของ Google แบบนี้กลับยิ่งสร้างแรงจูงใจให้คนทำบัญชีใช้ครั้งเดียวทิ้งต่อไป

    • ฟังเรื่องแบบนี้แล้วน่ากลัวมาก
      แค่คิดว่าฉันอาจโดนเอาโดเมนที่ใช้งานดีมาตลอด 25 ปีไปใส่แบล็กลิสต์ผิด ๆ จนแม้อีเมลก็ใช้ไม่ได้ ก็สยองแล้ว
  • ข้อสรุปของฉันคือควรแยกโดเมนตามการใช้งาน
    แม้ข้อเสียคือทั่วโลกมี TLD หลายตัวที่ทำให้ดูเหมือนบริการทางการ แต่กรณีนี้ยิ่งทำให้ฉันเชื่อแบบนั้นมากขึ้น
    ตัวอย่างเช่น
    www.contoso.com (สาธารณะ)
    www.contoso.blog (สาธารณะ, มีคอมเมนต์จากผู้ใช้)
    contoso.net (ภายใน)
    staging.contoso.dev (ปลายทางสำหรับพัฒนา/zero-trust)
    raging-lemur-a012afb4.contoso.build (สำหรับ snapshot)

    • แต่พอแยกโดเมนแบบนี้ จากมุมผู้ใช้กลับยิ่งเสี่ยงถูกมองว่าเป็นฟิชชิงมากขึ้น
      เมื่อก่อนฉันเคยได้รับอีเมลจาก ‘githubnext.com’ และเพราะในหัวฉัน GitHub = github.com เลยคิดทันทีว่าเป็นฟิชชิงหรือสแปม
      แต่สุดท้ายมันเป็นบริการจริง

    • เป็นแนวทางที่ดี

  • ตอนนี้ฉันเองก็เจอปัญหาเดียวกันกับโดเมนของฉัน
    Google มองว่าอินสแตนซ์ Immich ของครอบครัวเราเป็นเว็บไซต์อันตราย ทำให้ทุกบริการอื่นที่อยู่บนโดเมนเดียวกันเข้าไม่ได้ใน Chrome ไปด้วย
    จริงอยู่ที่ยังข้ามคำเตือนได้ แต่พอเป็นอัลบั้มรูปที่ส่งให้แม่ยายใช้งาน ก็เท่ากับใช้ไม่ได้เลย

  • ฉันเองก็เจอแบบเดียวกันตอนต้นปีนี้ตอน self-host Umami Analytics
    https://news.ycombinator.com/item?id=42779544#42783321
    ตอนฉันยื่นคัดค้านผ่าน Google Search Console แล้วเอ่ยถึง ‘การดำเนินการทางกฎหมาย’ ถึงได้ยกธงออกให้

    • อยากรู้ว่าคุณใช้ข้อความแบบไหนในการคัดค้าน
      ฉันเองก็เจอปัญหาเดียวกันนี้มาหลายปีแล้ว
      https://news.ycombinator.com/item?id=45678095