- เมื่อไม่นานมานี้ บริการ 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 ของ Previewhttps://pr-<num>.preview.internal.immich.cloud/ -
ทุกครั้งที่มีการสร้างสภาพแวดล้อม Preview ใหม่ โดเมน
immich.cloudจะถูกจัดว่าเป็นอันตรายอีกครั้ง -
คาดว่า Google ครอว์ล GitHub แล้วพบ URL ใหม่ จากนั้นจึงสำรวจและจัดว่าเป็นอันตราย
-
มาตรการรับมือปัจจุบันคือกำลังวางแผนแยกสภาพแวดล้อม Preview ไปยังโดเมนเฉพาะต่างหาก (
immich.build)
ปัญหาที่ใหญ่กว่า
- ระบบ Google Safe Browsing ดูเหมือนจะถูกออกแบบโดยไม่ได้คำนึงถึงลักษณะเฉพาะของซอฟต์แวร์แบบ โอเพนซอร์สและโฮสต์เอง
- นอกจาก Immich แล้ว ยังมีอีกหลายโปรเจกต์ยอดนิยมที่เจอปัญหาคล้ายกัน
- Google สามารถบล็อกโดเมนใดก็ได้ตามดุลยพินิจ และในทางปฏิบัติก็แทบไม่มีวิธีรับมืออื่น นอกจากส่งคำขอรีวิวไปยัง Google อย่างต่อเนื่อง
Cheers,
ทีม Immich
1 ความคิดเห็น
ความคิดเห็นจาก 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/
จากหลายลิงก์ใต้โพสต์นี้ ดูเหมือนจริง ๆ แล้วมีอยู่สองปัญหา
ข้อแรกถ้ารู้เรื่อง 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 ก็ยังทำอะไรตามใจไม่ได้
เพื่อนของฉันซึ่งเป็นลูกค้าด้วย เคยใช้โฮสติ้งสาย 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