รายงานความปลอดภัย · เวอร์ชัน 4 · 1 พฤศจิกายน 2569

ข้อกล่าวอ้างที่ตรวจสอบได้

นี่ไม่ใช่หน้าการตลาดที่บอกว่า 'เราปลอดภัย' แต่เป็นชุดข้อกล่าวอ้างที่ตรวจสอบได้ (SR-N) ซึ่งแต่ละข้อคุณสามารถท้าทายได้ในโครงการ bug bounty ของเราเพื่อรับรางวัล

01 · การเข้าถึงเซิร์ฟเวอร์ของคุณ

การเข้าถึงเซิร์ฟเวอร์ของคุณ

SR-1รหัสผ่าน root ถูกใช้เพียงครั้งเดียวและไม่ถูกจัดเก็บที่ฝั่งเราตรวจสอบแล้ว+

รหัสผ่านจำเป็นเฉพาะเพื่อเปิดการเชื่อมต่อ SSH ครั้งแรกและติดตั้งผู้ใช้เชิงบริการเท่านั้น มันถูกส่งผ่านเป็นการยืนยันตัวตน SSH สำหรับการเชื่อมต่อของเรา — ไม่ใช่ในฐานะอาร์กิวเมนต์ของสคริปต์หรือตัวแปรสภาพแวดล้อม ฐานข้อมูลของเราไม่มีฟิลด์สำหรับมัน มันไม่เข้าไปในสภาพแวดล้อมการรันสคริปต์ และไม่ถูกเขียนลงในบันทึก (ข้อผิดพลาดการเชื่อมต่อมีเพียงที่อยู่และพอร์ตเท่านั้น ไม่มีรหัสผ่าน) ในหน่วยความจำ มันถูกล้าง (best-effort) หลังการใช้งาน — นั่นคือการป้องกันเชิงลึก ไม่ใช่การรับประกัน: Go อาจเก็บสำเนาของค่าไว้บน heap จนกว่าจะมีการเก็บขยะ (garbage collection)

ข้อแม้ตามตรง: มันยังคงเป็นรหัสผ่าน root บนเซิร์ฟเวอร์ของคุณ หลังการติดตั้ง เราปิดการล็อกอินด้วยรหัสผ่านและการล็อกอินแบบ root ผ่าน SSH แต่เราไม่เปลี่ยนตัวรหัสผ่านเอง — เปลี่ยนมันด้วยตัวคุณเองหากต้องการ 'เราไม่จัดเก็บมัน' เป็นความจริง แต่ 'มันเลิกเป็นความลับแล้ว' ไม่ใช่

SR-2หลังการติดตั้ง การล็อกอิน SSH ด้วยรหัสผ่านและแบบ root ถูกปิดใช้งานตรวจสอบแล้ว+

PasswordAuthentication no, PermitRootLogin no, SSH ถูกย้ายไปยังพอร์ตที่ไม่ใช่มาตรฐาน (12011 โดยค่าเริ่มต้น), เปิดใช้งาน fail2ban (แบนหนึ่งชั่วโมงหลังล้มเหลว 5 ครั้ง), ล็อกอินด้วยคีย์เท่านั้น คีย์สาธารณะถูกตรวจสอบอย่างเข้มงวดก่อนใช้งาน: การขึ้นบรรทัดใหม่ (ป้องกันการแอบใส่คีย์เพิ่มเข้าไปใน authorized_keys) และคีย์ที่มีไวยากรณ์ไม่ถูกต้องจะถูกปฏิเสธ

ป้องกันการล็อกตัวเองออก: พอร์ต 22 จะไม่ถูกปิดจนกว่าเคอร์เนลจะยืนยัน (ผ่าน ss) ว่าพอร์ต SSH ใหม่กำลังรับฟังอยู่จริง; การตั้งค่าถูกตรวจสอบด้วย sshd -t และกฎ sudo ด้วย visudo -cf ทั้งคู่จะถูกย้อนกลับหากเกิดข้อผิดพลาด

SR-3คีย์การจัดการถูกจัดเก็บในรูปแบบที่เข้ารหัสเท่านั้นตรวจสอบแล้ว+

แผงควบคุมไม่ได้ทำงานด้วยรหัสผ่านของคุณ แต่ด้วยคีย์แยกต่างหาก (ed25519) ที่มันสร้างขึ้นเอง ส่วนคีย์ส่วนตัวอยู่ในฐานข้อมูลโดยเข้ารหัสด้วย AES-256-GCM คีย์เข้ารหัส (KEK) ถูกจัดเก็บแยกจากฐานข้อมูล — ในตัวแปรสภาพแวดล้อมของเซิร์ฟเวอร์ — และในระบบโปรดักชันมันเป็นสิ่งบังคับ (ไม่มีค่าเริ่มต้นที่ไม่ปลอดภัย: หากไม่มี KEK ระบบย่อยการเข้ารหัสจะไม่เริ่มทำงานเลย) การเข้ารหัสเดียวกันนี้ปกป้องความลับหนัก ๆ ในฐานข้อมูล — รหัสผ่าน/โทเคน/JWT ของแอดมิน Marzban, คีย์ Reality, คีย์ของผู้ให้บริการชำระเงิน, แคชข้อมูลรับรองพร็อกซี, การตั้งค่าสำรองข้อมูล

การเข้ารหัสไม่เพียงซ่อนแต่ยังยืนยันความถูกต้องของข้อมูล (GCM auth tag): การแก้ไขฟิลด์ที่เข้ารหัสจะถูกตรวจพบตอนถอดรหัสและถูกปฏิเสธ ทุกฟิลด์ถูกเข้ารหัสด้วย nonce สุ่มค่าใหม่ ค่า KEK ไม่เคยไปถึงบันทึก — มีเพียง id สั้น ๆ ของมันเท่านั้น

เกี่ยวกับ capability token: โทเคนการสมัครสมาชิก /sub เป็น bearer secret สำหรับการค้นหาเราเก็บเพียง SHA-256 ของมันเท่านั้น ส่วนสำเนาที่จำเป็นสำหรับการแสดงลิงก์ที่ออกไปแล้วอีกครั้งจะถูกเก็บเป็น ciphertext แบบ AES-GCM ระเบียนแบบ plaintext ที่เก่ากว่าจะถูกย้ายไปยังรูปแบบใหม่แบบ fail-closed ก่อนที่เซิร์ฟเวอร์ HTTP จะเริ่มทำงาน ตัวระบุ URL ของ payment-webhook ถูกเก็บแบบไม่เข้ารหัส แต่ตัวมันเองไม่ได้ยืนยันความถูกต้องของเหตุการณ์: ความถูกต้องถูกตรวจสอบแยกต่างหากด้วยลายเซ็น HMAC

ความลับของคีย์ Partner API ย้อนกลับไม่ได้: คีย์เต็มจะแสดงเพียงครั้งเดียวตอนออกคีย์ และสิ่งที่เหลืออยู่ในฐานข้อมูลคือ SHA-256 ของส่วนที่เป็นความลับ โทเคน access และ refresh ของ AI ที่เชื่อมต่อก็ไม่ได้ถูกเก็บเป็น plaintext เช่นกัน การเชื่อมต่อถูกจำกัดตามระดับการเข้าถึงที่เลือก และเจ้าของบัญชีสามารถเพิกถอนได้

SR-4คีย์ส่วนตัวไม่ถูกรวมอยู่ในการตอบกลับปกติ และจะให้ออกไปเฉพาะเมื่อส่งออกอย่างชัดแจ้งเท่านั้นตรวจสอบแล้ว+

คีย์ถูกถอดรหัสเฉพาะบนเซิร์ฟเวอร์ ในหน่วยความจำเท่านั้น; API ทั่วไปไม่เคยส่งคืนมัน วิธีเดียวที่จะได้มันมาคือฟังก์ชันส่งออกที่ตั้งใจ ('เอาคีย์ของคุณ') ซึ่งได้รับการปกป้องด้วยการลงชื่อเข้าใช้บวกกับรหัสอีเมลแบบใช้ครั้งเดียว (รหัสถูกเก็บเป็นแฮช HMAC เท่านั้น เปรียบเทียบแบบ constant time, TTL 10 นาที, 5 ครั้ง) ดังนั้นคีย์สามารถถูกดึงออกมาได้อย่างตั้งใจ แต่ไม่สามารถ 'รั่วไหล' ผ่านคำขอปกติได้

SR-5เมื่อเซิร์ฟเวอร์ถูกลบ คีย์จะถูกล้างออกจากระเบียนของมันแบบซิงโครนัสตรวจสอบแล้ว+

ก่อนที่สถานะของเซิร์ฟเวอร์จะเปลี่ยนและก่อนการดำเนินการเครือข่ายเบื้องหลังใด ๆ ฟิลด์ที่เก็บคีย์การจัดการจะถูกตั้งเป็นศูนย์แบบซิงโครนัส หากฐานข้อมูลไม่ยืนยันการล้าง การดำเนินการจะส่งคืนข้อผิดพลาดและสามารถลองใหม่ได้ การลบยังคงเป็นแบบ 'soft': แถวและข้อมูลเชิงบริการที่ไม่เป็นความลับจะถูกเก็บไว้ นี่ไม่ได้หมายถึงการลบข้อมูลสำรองที่สร้างไว้แล้วออกทางกายภาพ — วงจรชีวิตของมันถูกกำกับด้วยนโยบายการเก็บรักษาข้อมูลสำรอง

SR-16API ของพาร์ทเนอร์ที่ผ่านการตรวจสอบจะจำกัดขอบเขตการเข้าถึงไว้ที่เจ้าของทรัพยากรตรวจสอบแล้ว+

ในเส้นทางของแผงควบคุม partner_id ได้มาจากเซสชันที่มีลายเซ็น ส่วนใน Partner API ได้มาจากคีย์ API ที่ผ่านการตรวจสอบหรือการเชื่อมต่อ OAuth ของ AI ตัวระบุเจ้าของไม่ได้นำมาจากพาธ พารามิเตอร์ query หรือเนื้อหา (body) ของคำขอ คีย์ API ยังถูกจำกัดเพิ่มเติมด้วย scope ระยะเวลาใช้งาน และแพ็กเกจ สำหรับ AI ที่เชื่อมต่อ ชุดสิทธิ์จะถูกคำนวณจากระดับที่เจ้าของเลือกในทุกคำขอ

ก่อนที่จะส่งคืนหรือเปลี่ยนแปลงอะไร ระบบจะตรวจสอบซ้ำว่าเซิร์ฟเวอร์ คลัสเตอร์ inbound เส้นทาง ผู้ใช้ VPN หรือการชำระเงินนั้นเป็นของบัญชีนี้ คำสั่งค้นฐานข้อมูลถูกจำกัดขอบเขตด้วย partner_id และคีย์เฉพาะกับคีย์นอกแบบผสมจะปฏิเสธการเชื่อมโยงข้ามพาร์ทเนอร์ที่ไม่ถูกต้อง เมทริกซ์การอนุญาตในชุดทดสอบกำหนดให้ต้องมีสถานการณ์ IDOR อย่างชัดเจนสำหรับทุก endpoint ที่มีตัวระบุทรัพยากร

ข้อแม้ตามตรง: สิ่งนี้ถูกตรวจสอบด้วยการออดิตโค้ดตลอดเส้นทางคำขอ ไม่ใช่ด้วยการทดสอบเจาะระบบแบบสาธารณะ — ดังนั้น SR-16 เช่นเดียวกับข้ออื่น ๆ เปิดให้หักล้างได้ในโครงการ bug bounty

พูดตามตรงเรื่องการเข้าถึงของแผงควบคุม — มันคือสิทธิ์แอดมินเต็มรูปแบบ ไม่ใช่แบบ 'จำกัด'หมายเหตุตามตรง+

เพื่อกำหนดค่าทุกอย่างโดยอัตโนมัติ (ติดตั้ง Xray+Reality, ใช้การตั้งค่า, อ่านเมตริก) แผงควบคุมถือสิทธิ์การดูแลระบบเต็มรูปแบบบนเซิร์ฟเวอร์ (เทียบเท่า root ผ่านผู้ใช้เชิงบริการที่มี sudo แบบไม่ต้องใช้รหัสผ่าน) นี่จำเป็นสำหรับการจัดการ และเราไม่เรียกมันว่า 'จำกัด'

สิ่งที่ลดความเสี่ยง: ความลับถูกส่งไปยังเซิร์ฟเวอร์ผ่าน stdin ของโปรเซสเท่านั้น (ไม่ใช่ในฐานะอาร์กิวเมนต์คำสั่ง — จึงไม่ปรากฏในรายการโปรเซส); หลังการติดตั้งครั้งแรก ทุกการเชื่อมต่อเพื่อจัดการจะตรวจสอบ host key ที่ปักหมุด (pinned) ของเซิร์ฟเวอร์ — การสลับเซิร์ฟเวอร์ 'ตรงกลาง' จะถูกปฏิเสธ สิ่งที่คุณควบคุม: การเข้าถึงตั้งอยู่บนคีย์ที่คุณสามารถเพิกถอนได้ทุกเมื่อ — ด้วยการลบเซิร์ฟเวอร์ (คีย์จะถูกตั้งเป็นศูนย์) หรือเพียงลบ VPS ที่ผู้ให้บริการโฮสต์ของคุณ (จากนั้นทุกอย่างจะหายไป)

02 · ข้อมูลและความเป็นส่วนตัวของคุณ

ข้อมูลและความเป็นส่วนตัวของคุณ

SR-6ผู้ใช้ VPN อยู่บนเซิร์ฟเวอร์ของคุณ; เราถือเมทาดาทาเชิงบริการขั้นต่ำตรวจสอบแล้ว+

บัญชี VPN เอง (VLESS/Reality) ถูกสร้างและอยู่ใน Marzban บนเซิร์ฟเวอร์มาสเตอร์ของคุณ ที่ส่วนกลางเราเก็บเพียงสิ่งที่จำเป็นสำหรับการออกลิงก์สมัครสมาชิก: โทเคนสมัครสมาชิกแบบสุ่มและสแนปช็อตข้อมูลรับรองพร็อกซีที่เข้ารหัส (แคช; แหล่งข้อมูลจริงคือ Marzban ของคุณ) เราไม่มีประวัติทราฟฟิก IP หรือการเข้าเว็บของผู้ใช้

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

ข้อมูลบริการเหล่านี้เราเก็บไว้เพียงเท่าที่จำเป็นและล้างทิ้งโดยอัตโนมัติ: อีเมลจะถูกลบออกจากคิวการส่งทันทีหลังการส่ง เนื้อหาของเหตุการณ์การชำระเงินหลังการประมวลผล และเหตุการณ์ที่รอการลองใหม่ภายในช่วงเวลา 90 วัน คุณสามารถลบบัญชีพร้อมข้อมูลทั้งหมดได้ด้วยตนเองในส่วน “การตั้งค่าขั้นสูง” โดยยืนยันด้วยรหัสจากอีเมลของคุณ (ดูรายละเอียดที่ความเสี่ยงข้อ 7) เราเปิดเผยเรื่องนี้อย่างตรงไปตรงมา แทนที่จะซ่อนไว้เบื้องหลังถ้อยคำคลุมเครือ

SR-7เราไม่เก็บบันทึกทราฟฟิกหรือการเข้าเว็บของคุณ และเซิร์ฟเวอร์ไม่ได้เก็บบันทึกการเข้าเว็บใด ๆตรวจสอบแล้ว+

แพลตฟอร์ม CreateYourVPN ไม่รับหรือจัดเก็บข้อมูลว่าคุณหรือผู้ใช้ของคุณเข้าเว็บไซต์ใดบ้าง สคีมา metrics-ingest เป็นแบบปิด: ในทางกายภาพมันไม่มีฟิลด์สำหรับ IP โดเมน หรือการเข้าเว็บ — มีเพียงค่ารวม (จำนวนออนไลน์ที่ไม่ซ้ำ, จำนวนไบต์รวม, CPU/RAM/โหลด) แต่ละโหนดยืนยันตัวตนด้วยโทเคน HMAC ที่ผูกกับ id ของตัวเองและเขียนเมตริกได้เฉพาะสำหรับตัวเองเท่านั้น ตัวจัดสมดุลบนโหนด (HAProxy) ทำงานเป็นเราเตอร์ TCP ตาม SNI และไม่ถอดรหัสทราฟฟิก บนตัวเซิร์ฟเวอร์เอง system journal ถูกเก็บไว้ไม่เกินประมาณหนึ่งชั่วโมงและไม่ถูกส่งต่อไปยัง syslog

นอกเหนือจากระดับแพลตฟอร์มแล้ว เซิร์ฟเวอร์ก็ไม่ได้เก็บบันทึกการเข้าเว็บเช่นกัน: การบันทึกการเข้าถึงของ Xray ถูกบังคับปิดในทุกครั้งที่ push การตั้งค่า (แพลตฟอร์มตั้งค่า log.access เป็น none) ดังนั้น edge proxy จึงไม่บันทึกว่าผู้ใช้เชื่อมต่อไปยังที่อยู่ใด สิ่งนี้ถูกบังคับใช้ในโค้ดและปล่อยใช้งานทั่วทั้งฟลีตแล้ว

SR-8การวิเคราะห์เว็บคือ Google Analytics; ไม่มีตัวติดตามอื่นตรวจสอบแล้ว+

เพื่อทำความเข้าใจว่าเว็บไซต์และแผงควบคุมถูกใช้งานอย่างไร เราใช้ Google Analytics (แบนเนอร์ cookie เตือนเรื่องการเก็บ cookie และสถิติ; รายละเอียดอยู่ในนโยบายความเป็นส่วนตัว) บนหน้าขอความยินยอม OAuth การวิเคราะห์ถูกบังคับไม่ให้โหลด: URL มีตัวระบุอายุสั้นของคำขอเชื่อมต่อ AI ซึ่งห้ามส่งต่อให้บุคคลที่สาม ไม่มีตัวติดตามจากบุคคลที่สามอื่น: ไม่มี Sentry, PostHog, Mixpanel หรือ ad pixel แบ็กเอนด์ไม่มีเทเลเมทรีจากบุคคลที่สาม และหน้าร้านสำหรับผู้ใช้ปลายทางไม่ถูกครอบคลุมด้วยการวิเคราะห์

ข้อแม้: GA รับ IP ของคุณ (ที่ฝั่ง Google) และที่อยู่ของหน้าแผงควบคุมที่ถูกเปิดดู; URL ของแผงควบคุมมีเพียงตัวระบุคลัสเตอร์เท่านั้น ไม่ใช่อีเมล

SR-9การชำระเงินเป็นแบบภายนอก — เราไม่ได้รับหมายเลขบัตรเต็มตรวจสอบแล้ว+

การชำระเงินและข้อมูลบัตรทั้งหมดถูกจัดการที่ฝั่งผู้ให้บริการที่เชื่อมต่อไว้ (lava.top) เรารับเพียงเหตุการณ์ webhook ที่ผ่านการตรวจสอบแล้วเท่านั้น: ความถูกต้องของเหตุการณ์ถูกยืนยันด้วยวิธีที่ผู้ให้บริการรายนั้นรองรับ ก่อนที่จะมีการเปลี่ยนแปลงยอดคงเหลือหรือสิทธิ์การเข้าถึง เราไม่ได้รับหมายเลขบัตรเต็ม (PAN) หรือ CVV การส่งเหตุการณ์เดิมซ้ำไม่ทำให้เกิดการให้สิทธิ์ซ้ำซ้อน: เหตุการณ์ถูกกำจัดความซ้ำ

ข้อแม้: ผู้ให้บริการอาจรวมเมทาดาทาของบัตร (แบรนด์และเลข 4 ตัวสุดท้าย) และชื่อกับอีเมลของผู้ชำระเงินไว้ในเนื้อหา (body) ของ webhook เนื้อหาต้นฉบับจำเป็นสำหรับ worker จนกว่าการประมวลผลจะเสร็จสมบูรณ์; หลังการประมวลผลสำเร็จ มันจะถูกลบพร้อมกับข้อมูลอีเมล เหตุการณ์ที่รอการลองใหม่หรือการตรวจทานด้วยมือจะเก็บเนื้อหาต้นฉบับไว้เพียงจนกว่าจะสิ้นสุดช่วงเวลาการเก็บรักษา (90 วันที่ไม่มีกิจกรรม) หลังจากนั้นเมทาดาทาของบัตรและอีเมลของผู้ชำระเงินจะถูกลบโดยอัตโนมัติ 'ไม่มีหมายเลขบัตรเต็ม' เป็นความจริง แต่นั่นเป็นคุณสมบัติของผู้ให้บริการ (เราไม่ได้กรองเนื้อหาเอง); ส่วน 'เราไม่เห็นอะไรเกี่ยวกับบัตรเลย' ไม่ใช่

สิ่งที่เราจัดเก็บเกี่ยวกับคุณ (พาร์ทเนอร์) อย่างตรงไปตรงมาหมายเหตุตามตรง+

สำหรับบัญชี เราจัดเก็บอีเมล เวลาที่ลงชื่อเข้าใช้ล่าสุด โหมดอินเทอร์เฟซ และการตั้งค่า สำหรับการเรียกเก็บเงิน — ยอดคงเหลือและ Telegram หากระบุไว้สำหรับการเติมเงิน เพื่อปกป้องบัญชี เซสชันที่ใช้งานอยู่จะมีเวลาที่สร้างและเวลาที่มีกิจกรรมล่าสุด ที่อยู่ IP และ user-agent ประวัติการพยายามลงชื่อเข้าใช้ทั้งที่สำเร็จและไม่สำเร็จ พร้อมลักษณะทางเทคนิคเดียวกันนี้ จะถูกเก็บไว้ 90 วัน

ไม่มีประวัติการคลิกโดยรวมในแผงควบคุม แต่มีบันทึกเฉพาะวัตถุประสงค์แยกต่างหาก: คำขอ Partner API — ไม่เกิน 500 รายการล่าสุดและประมาณ 25 ชั่วโมง เหตุการณ์โครงสร้างพื้นฐานและผลการวินิจฉัย — ไม่เกิน 7 วัน การดำเนินการของ AI ที่เชื่อมต่อ — เก็บไว้พร้อมกับบัญชี ก่อนบันทึกการดำเนินการของ AI รหัสผ่าน โทเคน คีย์ และลิงก์การสมัครสมาชิกจะถูกลบออก และอีเมลของผู้ใช้จะถูกมาสก์

03 · การเสริมความแข็งแกร่งของเซิร์ฟเวอร์

การเสริมความแข็งแกร่งของเซิร์ฟเวอร์

SR-10ไฟร์วอลล์ปฏิเสธทุกอย่างยกเว้นสิ่งที่จำเป็นตรวจสอบแล้ว+

ไฟร์วอลล์ปฏิเสธการเชื่อมต่อขาเข้าโดยค่าเริ่มต้น เปิดออกด้านนอก: 443 (VPN, Xray+Reality), SSH บนพอร์ตที่ไม่ใช่มาตรฐาน (12011 โดยค่าเริ่มต้น) และ — บนเซิร์ฟเวอร์มาสเตอร์ — พอร์ตแผงแอดมิน Marzban เฉพาะสำหรับ IP ของ control-plane เท่านั้น พอร์ต 80 ถูกเปิดแยกต่างหากเฉพาะในโหมด Let's Encrypt สำหรับ HTTP-01 พอร์ต 22 ถูกปิดหลังจากย้าย SSH แล้ว

พอร์ตการจัดการของโหนดเปิดเฉพาะให้กับ IP ของเซิร์ฟเวอร์มาสเตอร์เท่านั้น ไม่ได้เปิดออกด้านนอก (หากการผูกนี้ล้มเหลวจะยกเลิกการติดตั้ง) หากไฟร์วอลล์ไม่ทำงาน การติดตั้งจะล้มเหลว ICMP echo ถูกจำกัดเฉพาะสำหรับ IPv4; เราไม่รับปากว่าเซิร์ฟเวอร์ 'มองไม่เห็น' และ ICMP ของ IPv6 ถูกคงไว้เพื่อให้ IPv6 ทำงานได้อย่างถูกต้อง

SR-11การอัปเดตความปลอดภัยอัตโนมัติตรวจสอบแล้ว+

Unattended upgrades ติดตั้งการอัปเดตแพ็กเกจความปลอดภัยโดยอัตโนมัติ ข้อแม้: การรีบูตอัตโนมัติถูกปิดใช้งานโดยตั้งใจ (เพื่อไม่ให้เคอร์เนลที่ยังไม่ได้ตรวจสอบรีบูตด้วยตัวเอง) — ซึ่งหมายความว่าการแก้ไขที่ต้องรีบูต (เคอร์เนล บางครั้ง OpenSSH) จะมีผลหลังการรีบูตด้วยมือหรือตามกำหนดการเท่านั้น 'การแพตช์อัตโนมัติ' เป็นจริงสำหรับ userland ไม่ใช่สำหรับสิ่งที่ต้องรีบูต

พูดตามตรงเรื่อง 'การมองไม่เห็น' — เราไม่กล่าวอ้างเช่นนั้นหมายเหตุตามตรง+

เราไม่กล่าวอ้างว่าเซิร์ฟเวอร์ 'มองไม่เห็น' หรือ 'สแกนไม่ได้' พอร์ต 443 เปิดอยู่และตอบสนองการเชื่อมต่อ TCP เหมือนเว็บเซิร์ฟเวอร์ทั่วไป คุณสมบัติ 'เมื่อเชื่อมต่อไม่ถูกต้องมันดูเหมือนเว็บไซต์ธรรมดาที่ไม่เกี่ยวข้อง' มาจากโปรโตคอล Reality ภายใน Xray — องค์ประกอบแยกต่างหากที่เราไม่ทำให้เป็นคำพูดเด็ดขาด

04 · แพลตฟอร์ม (แผงควบคุม)

แพลตฟอร์ม (แผงควบคุม)

SR-12การลงชื่อเข้าใช้บัญชี CreateYourVPN ของคุณโดยไม่ใช้รหัสผ่านตรวจสอบแล้ว+

การลงชื่อเข้าใช้ของพาร์ทเนอร์ใช้รหัส 6 หลักแบบใช้ครั้งเดียวที่ส่งไปยังอีเมล ไม่มีรหัสผ่านบัญชี สิ่งนี้ไม่ใช้กับข้อมูลรับรองภายในของส่วนประกอบที่ถูกจัดการ เช่น รหัสผ่านแอดมินของเซิร์ฟเวอร์ที่ถูกสร้างขึ้น รหัสถูกสร้างโดยตัวสร้างเชิงการเข้ารหัส; จัดเก็บเพียงแฮช HMAC ของมันเท่านั้น และการเปรียบเทียบเป็นแบบ constant-time เมื่อสำเร็จรหัสจะถูกลบทันที และหลังพยายามผิด 5 ครั้งมันจะถูกยกเลิกก่อนเวลา ขีดจำกัดอัตราการออกรหัสถูกนับทั้งตามที่อยู่เต็มและตามกล่องจดหมายจริง: การเปลี่ยน IP การใส่จุดใน Gmail และ plus-tag ไม่ทำให้ได้ขีดจำกัดแยกต่างหาก

SR-13สามารถตรวจสอบและเพิกถอนเซสชันได้ทันทีตรวจสอบแล้ว+

โทเคนเซสชันอยู่ใน cookie แบบ HttpOnly และ Secure (JS อ่านไม่ได้) ตรวจสอบที่แบ็กเอนด์ (ไม่ใช่แค่ที่ edge) การหมดเวลาเมื่อไม่มีการใช้งานและการออกจากระบบอัตโนมัติเมื่อไม่มีกิจกรรมถูกทำที่ฝั่งไคลเอนต์ ไม่ใช่ที่เซิร์ฟเวอร์ โทเคนถูกลงลายเซ็นด้วย HS256; ในการตรวจสอบเราปฏิเสธอัลกอริทึมอื่นใดอย่างเข้มงวด (รวมถึง 'none') — การโจมตีแบบสลับอัลกอริทึมคลาสสิกจะไม่ผ่าน โทเคนของหน้าร้านและโทเคนของแผงพาร์ทเนอร์ถูกแยกด้วย audience: โทเคนของผู้ใช้ปลายทางไม่สามารถไปถึง API ของพาร์ทเนอร์ได้ในเชิงเทคนิค (และในทางกลับกัน) พาร์ทเนอร์ที่ถูกลบจะถูกปฏิเสธแม้จะมีโทเคนที่ยังใช้ได้

ทุกเซสชันของพาร์ทเนอร์มีตัวระบุฝั่งเซิร์ฟเวอร์ที่คงที่ ซึ่งยังคงเดิมเมื่อมีการต่ออายุโทเคน การออกจากระบบตามปกติจะเพิกถอนเซสชันปัจจุบันทั้งหมด ไม่ใช่เพียงโทเคนที่ออกให้ครั้งเดียว ในส่วน “เซสชันของบัญชี” จะเห็นอุปกรณ์ ที่อยู่ IP เวลาเข้าสู่ระบบ และกิจกรรมล่าสุด และสามารถปิดเซสชันใดก็ได้แยกกัน คำสั่ง “ออกจากระบบทุกที่” จะสิ้นสุดทุกเซสชันและยกเลิกการเชื่อมต่อ AI ที่เชื่อมต่อไว้

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

SR-14โทเคนเซสชันและความลับภายในไม่สามารถเข้าถึงได้จาก JavaScript ฝั่งไคลเอนต์ตรวจสอบแล้ว+

ไม่มีโทเคนเซสชันใน local storage ของเบราว์เซอร์ มีเพียงการตั้งค่าอินเทอร์เฟซ ชั้นเซิร์ฟเวอร์ของ Next.js เป็นผู้วางโทเคนไว้ใน cookie แบบ HttpOnly เบราว์เซอร์ไม่ได้รับที่อยู่ภายในของแบ็กเอนด์ และเข้าถึงแบ็กเอนด์ผ่าน Server Actions CORS ไม่อนุญาตให้ origin อื่นอ่านการตอบสนองของ API ที่มีข้อมูลที่ได้รับอนุญาต

มีข้อยกเว้นที่ตั้งใจไว้ซึ่งเจ้าของเป็นผู้ควบคุมเอง: การส่งออกคีย์ SSH ส่วนตัวหลังกรอกรหัสจากอีเมล (SR-4) และคีย์ Partner API ใหม่ ซึ่งความลับเต็มจะแสดงในเบราว์เซอร์เพียงครั้งเดียวตอนสร้าง หลังจากนั้นจะกู้คืนจากฐานข้อมูลไม่ได้ — ในฐานข้อมูลเหลือเพียงแฮช โดเมน API สาธารณะเข้าถึงได้จากอินเทอร์เน็ตตามที่ออกแบบไว้ แต่หากไม่มีเซสชันที่ใช้ได้ คีย์ API หรือโทเคน OAuth ก็จะไม่ส่งคืนข้อมูลที่ได้รับการป้องกัน

SR-15โดเมนสาธารณะของแพลตฟอร์มใช้ HTTPS พร้อมส่วนหัวความปลอดภัยที่เข้มงวดตรวจสอบแล้ว+

โฮสต์สาธารณะของ CreateYourVPN ให้บริการผ่าน HTTPS พร้อม HSTS (max-age สองปี, includeSubDomains) ทุกเว็บฟรอนต์เอนด์ที่เราโฮสต์ — เว็บไซต์ของแพลตฟอร์ม แผงควบคุมพาร์ตเนอร์ และหน้าร้านของพาร์ตเนอร์ ไม่ว่าจะอยู่บนซับโดเมนของเราหรือบนโดเมนของพาร์ตเนอร์เอง — รวมถึงโดเมน API ล้วนส่งชุดเฮดเดอร์ความปลอดภัยชุดเดียวกัน: Content-Security-Policy (บน API เป็น default-src 'none'; บนฟรอนต์เอนด์จะห้ามการฝังใน iframe และล็อก base-uri กับ form-action), X-Content-Type-Options: nosniff, X-Frame-Options และ Referrer-Policy ที่รัดกุม (no-referrer บน API; strict-origin-when-cross-origin บนฟรอนต์เอนด์ ซึ่งยังส่ง Permissions-Policy แบบจำกัดด้วย)

ทั้งหมดนี้ทำงานอยู่บนโปรดักชันของทุกโฮสต์ดังกล่าว และตรวจสอบได้อย่างเป็นอิสระ — ด้วยเครื่องมือตรวจเฮดเดอร์ HTTP ใดก็ได้ หรือบริการอย่าง SSL Labs

การเชื่อมต่อ AI คือสิทธิ์การเข้าถึงแยกต่างหากที่เพิกถอนได้ ไม่ใช่การส่งมอบเซสชันของบัญชีหมายเหตุตามตรง+

แอป AI เชื่อมต่อผ่าน OAuth และไม่ได้รับ cookie ของแผงควบคุมของคุณ ในหน้าขอความยินยอม คุณเลือกหนึ่งในสามระดับ: ดูอย่างเดียว; ดูและตั้งค่า; ลบและให้สิทธิ์เข้าถึง เซิร์ฟเวอร์ตรวจสอบสิทธิ์ทุกครั้งที่มีการเรียก การลบที่สำคัญต้องใช้รหัสแบบใช้ครั้งเดียวจากอีเมลเพิ่มเติม และสามารถเพิกถอนการเชื่อมต่อทั้งหมดได้ในส่วน “AI ที่เชื่อมต่อ”

ทุกการเรียกใช้เครื่องมือจะถูกบันทึกลงในบันทึกที่เจ้าของมองเห็นได้ พร้อมผลลัพธ์และสำเนาอาร์กิวเมนต์ที่ปลอดภัย รหัสผ่าน โทเคน คีย์ API คีย์ส่วนตัว และลิงก์การสมัครสมาชิกจะถูกตัดออกก่อนบันทึก และอีเมลของผู้ใช้จะถูกมาสก์ อย่างไรก็ตาม แอป AI ที่เลือกยังคงเป็นบริการของบุคคลที่สาม: ข้อมูลที่คุณตั้งใจมอบหมายให้แอปอ่านหรือเปลี่ยนแปลงจะถูกประมวลผลตามกฎของผู้ให้บริการแอปนั้นด้วย

พูดตามตรงเรื่องความเสี่ยง (สิ่งที่เราไม่รับปาก)

พูดตามตรงเรื่องความเสี่ยง (สิ่งที่เราไม่รับปาก)

ด้านล่างนี้คือข้อจำกัดที่ยังคงมีอยู่ในสถาปัตยกรรมปัจจุบันและควรนำมาพิจารณาเมื่อประเมินความปลอดภัย

01การจัดเก็บกุญแจแบบรวมศูนย์ — ภายใต้การป้องกันหลายชั้น

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

อะไรที่ปกป้องมัน: ความลับสำคัญถูกเก็บไว้ในฐานข้อมูลในรูปของข้อความที่เข้ารหัสเท่านั้น; กุญแจเข้ารหัส (KEK) ถูกเก็บแยกจากฐานข้อมูล; กุญแจสำหรับจัดการเซิร์ฟเวอร์ไม่ถูกรวมอยู่ในการตอบกลับปกติที่ส่งไปยังเบราว์เซอร์ และจะถูกลบเป็นศูนย์เมื่อลบเซิร์ฟเวอร์ ส่วนโทเคนการสมัครสมาชิกมีอีกชั้นหนึ่งเสริม — การค้นหาด้วยแฮช (hash lookup) ร่วมกับ AES-GCM — ดังนั้นแม้แต่การดัมป์ฐานข้อมูลโดยไม่มี KEK ก็ไม่มีลิงก์ /sub ที่ใช้งานได้อยู่เลย

เพดานตามความเป็นจริง: การเข้ารหัสป้องกันการโจรกรรมตัวฐานข้อมูลเองได้อย่างเชื่อถือได้ — ไม่ว่าจะเป็นข้อมูลสำรอง เรพลิกา หรือดัมป์ แต่มันไม่ได้ขจัดความเสี่ยงของการถูกเจาะระบบโฮสต์ของแอปพลิเคชันอย่างสมบูรณ์ ซึ่งเป็นที่ที่กระบวนการเข้าถึงได้ทั้ง KEK และฐานข้อมูล ปัจจุบันยังไม่ได้ใช้ KMS/HSM โดยเฉพาะ ด้วยเหตุนี้จุดโฟกัสหลักของการป้องกันคือการแยกโฮสต์ การอัปเดตอัตโนมัติ และพื้นผิวสาธารณะที่น้อยที่สุด

02การเชื่อมต่อ SSH ครั้งแรกอาศัยความไว้วางใจเมื่อติดต่อครั้งแรก

เมื่อเพิ่ม VPS เป็นครั้งแรก แพลตฟอร์มยังไม่รู้จัก SSH host key ของเซิร์ฟเวอร์นั้น และไม่ได้รับลายนิ้วมือผ่านช่องทางที่เชื่อถือได้ซึ่งเป็นอิสระ ดังนั้นการเชื่อมต่อครั้งแรกด้วยรหัสผ่าน root ที่กรอกไว้จึงใช้แบบจำลอง trust on first use: ผู้โจมตีแบบแอคทีฟที่อยู่บนเส้นทางเครือข่ายในขณะนั้นอาจปลอมตัวเป็นเซิร์ฟเวอร์ได้ในทางทฤษฎี เราไม่ได้กล่าวว่าความเสี่ยงนี้เป็นศูนย์

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

ข้อจำกัดนี้ปิดได้อย่างสมบูรณ์ด้วยการตรวจสอบลายนิ้วมือแรกอย่างเป็นอิสระเท่านั้น เช่น ผ่าน API ของผู้ให้บริการ VPS หรือการยืนยันจากเจ้าของ ปัจจุบันยังไม่มีการตรวจสอบเช่นนั้น ข้อนี้จึงยังคงเป็นความเสี่ยงที่เปิดอยู่

03การเข้าถึงเซิร์ฟเวอร์ทางกายภาพอยู่ที่ผู้ให้บริการ VPS ของคุณ

นี่เป็นคุณสมบัติของเซิร์ฟเวอร์เช่าทุกเครื่อง ไม่ใช่เฉพาะของเรา: สแนปช็อต โหมด rescue และสิ่งทำนองนั้นผู้ให้บริการเข้าถึงได้ และไม่มีซอฟต์แวร์ใดป้องกันได้ ในทางกลับกัน การเลือกผู้ให้บริการที่น่าเชื่อถืออยู่ในมือคุณ และเซิร์ฟเวอร์เป็นของคุณทั้งหมด — คุณสามารถเปลี่ยนผู้ให้บริการหรือลบเครื่องได้ทุกเมื่อ

04ช่องโหว่ที่ยังไม่ทราบ (0-day) มีอยู่เสมอ

ไม่มีใครรับประกันการป้องกันได้อย่างสมบูรณ์ — ช่องโหว่ใหม่ ๆ ปรากฏขึ้นในซอฟต์แวร์ทุกชนิด สิ่งที่เราทำ: การอัปเดตความปลอดภัยจะถูกติดตั้งโดยอัตโนมัติ และการแก้ไขที่ต้องรีบูต (เคอร์เนล บางครั้งคือ OpenSSH) จะมีผลหลังการรีบูต ไม่ว่าจะเป็นแบบทำเองหรือตามกำหนดเวลา (ดู SR-11)

05อีเมล: ของคุณเราเก็บ ส่วนที่อยู่ของผู้ใช้คุณไม่เก็บ

ที่อยู่ของคุณจำเป็นสำหรับการเข้าสู่ระบบและถูกเก็บไว้ตราบที่บัญชียังอยู่ ที่อยู่ของผู้ใช้ปลายทางไม่ถูกเก็บเป็นข้อมูลโปรไฟล์ ข้อยกเว้นคือที่อยู่ของผู้ชำระเงินภายในเหตุการณ์การชำระเงินที่ยังไม่ได้ประมวลผลหรือกำลังรอการตรวจสอบ ตามที่อธิบายไว้ใน SR-6 และ SR-9 ในบันทึกการดำเนินการของ AI อีเมลของผู้ใช้จะถูกเก็บในรูปแบบที่ถูกมาสก์เท่านั้น

06การเข้าสู่ระบบใช้รหัสทางอีเมล — ยังไม่มี 2FA แยกต่างหาก

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

07บันทึกบริการแต่ละประเภทมีระยะเวลาการเก็บรักษาต่างกัน

อีเมลของผู้ใช้ปลายทางจะถูกลบออกจากคิวหลังส่งข้อความ และเนื้อหาดิบของเหตุการณ์การชำระเงินที่สำเร็จจะถูกลบหลังประมวลผล บันทึก Partner API ถูกจำกัดไว้ที่ 500 แถวล่าสุดและระยะเวลาประมาณ 25 ชั่วโมง เหตุการณ์โครงสร้างพื้นฐานและผลการวินิจฉัยถูกเก็บไว้ไม่เกิน 7 วัน

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

ข้อยกเว้นแยกต่างหากคือบันทึกการดำเนินการของ AI ที่เชื่อมต่อ: บันทึกนี้จำเป็นสำหรับตรวจสอบการดำเนินการที่ทำในนามของเจ้าของ และถูกเก็บไว้พร้อมกับบัญชี ความลับจะถูกลบและอีเมลจะถูกมาสก์ก่อนบันทึก แต่ปัจจุบันบันทึกนี้ยังไม่มี TTL แบบสั้นแยกต่างหาก

คุณสามารถลบบัญชีได้ด้วยตนเองในส่วน “การตั้งค่าขั้นสูง”: ทันทีและทั้งหมด พร้อมกับบันทึกทั้งหมดที่กล่าวถึงข้างต้น รวมถึงบันทึกการดำเนินการของ AI ข้อมูลที่ลบแล้วจะยังคงอยู่ในข้อมูลสำรองของฐานข้อมูลจนกว่าจะถูกเขียนทับ ไม่เกิน 30 วัน บทสนทนากับฝ่ายสนับสนุนจะถูกเก็บแยกจากบัญชี และจะถูกลบเมื่อมีการร้องขอ

08การสำรองข้อมูลของผู้ใช้จะส่งข้อมูลออกไปนอกเซิร์ฟเวอร์ของคุณ

หากคุณเปิดใช้การส่งออกข้อมูลสำรองไปยัง Google Drive หรือ S3 ข้อมูลของผู้ใช้จะออกจากเซิร์ฟเวอร์ของคุณ และการปกป้องข้อมูลนั้นก็จะขึ้นอยู่กับคลาวด์ของคุณแล้ว — รายงานฉบับนี้ไม่ได้ครอบคลุมส่วนนี้แยกต่างหาก นี่คือทางเลือกที่คุณตัดสินใจเอง: ฟีเจอร์นี้คุณเป็นผู้เปิดใช้เอง

อย่าเชื่อเราลอย ๆ

จะตรวจสอบสิ่งนี้อย่างไร

ทุกข้อกล่าวอ้างด้านบนคือการเดิมพันแบบสาธารณะ เราขอเชิญคุณค้นหาจุดที่เราผิดหรือพูดเกินจริง:

แทร็ก A

แทร็ก A — ช่องโหว่แบบคลาสสิก (RCE, การข้ามการอนุญาตสิทธิ์, IDOR, การรั่วไหล และอื่น ๆ)

แทร็ก B

แทร็ก B — การหักล้างรายงานนี้: พิสูจน์ว่า SR-N ข้อใดเป็นเท็จ รับรางวัล และเราจะเผยแพร่การแก้ไขต่อสาธารณะ

เจออะไรบางอย่างไหม?

เขียนหาเราพร้อม proof of concept ที่ทำซ้ำได้ เราตอบกลับภายใน 72 ชั่วโมงและคัดกรองภายในองค์กร

security@createyourvpn.comเงียบ 90 วัน · safe harborรางวัลจะเข้าสู่ยอดเงินคงเหลือในบัญชี CreateYourVPN ของคุณ — เป็นช่องทางจ่ายเพียงทางเดียว