ความปลอดภัย

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

จุดตั้งต้น

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

  • แพ็กเกจถูกเซ็น (ECDSA P-256)

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

    ถ้าเซ็นแค่ค่าแฮช ไฟล์บีบอัด เก่า ที่มีลายเซ็นถูกต้องก็ถูกนำมาแสดงเป็นเวอร์ชันใหม่ได้ ลายเซ็นจะผ่านการตรวจ และผู้ใช้จะติดตั้งเครื่องมือที่รู้กันอยู่แล้วว่ามีช่องโหว่ในฐานะ “การอัปเดต”

  • กุญแจส่วนตัวไม่ได้อยู่บนเซิร์ฟเวอร์

    เซิร์ฟเวอร์ทำหน้าที่ตรวจสอบอย่างเดียว การเซ็นเกิดขึ้นบนเครื่องของผู้เผยแพร่เอง ด้วยเครื่องมือแยกอีกตัวหนึ่ง

    ถ้ากุญแจอยู่บนเซิร์ฟเวอร์ ใครที่ยึดเซิร์ฟเวอร์ได้ก็แก้แพ็กเกจแล้วเซ็นใหม่ได้ และนั่นทำให้การเซ็นทั้งหมดไร้ความหมาย

  • ฝั่งผู้ใช้ตรวจซ้ำอีกชั้น

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

    การเซ็นมีอยู่ก็เพราะเซิร์ฟเวอร์เชื่อลอย ๆ ไม่ได้ การดึงรายชื่อที่เชื่อถือได้มาจากเซิร์ฟเวอร์ตัวเดียวกันจึงเท่ากับยกเลิกข้อสมมติเดิมอย่างเงียบ ๆ

  • บันทึกการตรวจสอบที่ลบไม่ได้

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

    คำถามว่า “เครื่องมือนี้มาอยู่ตรงนี้ได้อย่างไร” มักถูกถามหลังจากนั้นหลายเดือน ในวันนั้น บันทึกที่ลบได้ก็คือบันทึกที่ไม่เคยมีอยู่จริง

  • หลักสี่ตา เปิดใช้ได้ถ้าต้องการ

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

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

  • การแตกไฟล์บีบอัดเองก็เป็นช่องทางโจมตี

    ไฟล์บีบอัดที่อัปโหลดเข้ามาถูกตรวจทั้งการเขียนออกนอกเส้นทาง (zip-slip) และระเบิดการคลายบีบอัด อีกทั้งขนาดหลังแตกไฟล์ก็ถูกจำกัดไว้

    การแตกไฟล์บีบอัดดูเหมือนไม่มีอันตราย แต่ไฟล์ที่ถูกสร้างมาอย่างจงใจสามารถเขียนไฟล์ออกนอกโฟลเดอร์ปลายทาง หรือถมพื้นที่ดิสก์ของเซิร์ฟเวอร์จนเต็มได้

  • เข้าสู่ระบบโดยไม่ใช้รหัสผ่าน

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

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

  • คุณเห็นได้ว่ากำลังติดตั้งอะไร

    โฟลเดอร์ติดตั้งมาพร้อมรายการส่วนประกอบที่เครื่องอ่านได้ (SBOM แบบ CycloneDX) และสคริปต์ย้ายโครงสร้างสำหรับฐานข้อมูลทั้งสองแบบ

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

สิ่งที่เราปกป้องให้ไม่ได้

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

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

การแจ้งช่องโหว่ด้านความปลอดภัย

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

security@ypcad.com