Cyber Security Academy · บทเรียน

ภัยคุกคามต่อห่วงโซ่อุปทาน

การพึ่งพากันกลายเป็นช่องทางโจมตีได้อย่างไร

บทเรียน 1 จาก 413 ขั้นตอน

ภัยคุกคามต่อห่วงโซ่อุปทาน เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

การโจมตีห่วงโซ่อุปทานคืออะไร

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

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

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

ภูเขาน้ำแข็งของส่วนพึ่งพา

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

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

# npm: full resolved dependency tree
npm ls --all

# Python: pinned transitive closure
pip freeze

# count transitive nodes
npm ls --all --parseable | wc -l

การแอบอ้างชื่อด้วยการสะกดผิดและความสับสน

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

  • การแอบอ้างชื่อด้วยการสะกดผิด — reqeusts แทนที่จะเป็น requests
  • การแอบอ้างชื่อด้วยการเติมคำ — python-requests เลียนแบบชื่อจริง
  • ความสับสนของส่วนพึ่งพา — เผยแพร่แพ็กเกจสาธารณะที่ใช้ชื่อเดียวกับแพ็กเกจส่วนตัวภายในของคุณ ทำให้ตัวแก้ไขส่วนพึ่งพาที่กำหนดค่าผิดดึงรุ่นของผู้โจมตีมาใช้

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

การยึดบัญชีและสิทธิ์ของผู้ดูแลแพ็กเกจ

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

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

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

สคริปต์ติดตั้งที่เป็นอันตราย

ระบบนิเวศจำนวนมากเรียกใช้โค้ด ระหว่างการติดตั้ง ก่อนที่แอปพลิเคชันของคุณจะเริ่มทำงานเสียอีก คำสั่ง npm install สามารถเรียกใช้ฮุก postinstall ซึ่งขโมยตัวแปรสภาพแวดล้อมหรือคีย์ SSH ได้

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

# npm: block lifecycle scripts during install
npm ci --ignore-scripts

# inspect what a package would run
npm view <package> scripts

# pnpm equivalent
pnpm install --ignore-scripts

เครื่องมือสร้างที่ถูกเจาะ

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

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

  • ปฏิบัติต่อโครงสร้างพื้นฐานการสร้างเสมือนเป็นระบบใช้งานจริง และเสริมความปลอดภัยอย่างครบถ้วน
  • ใช้ตัวเรียกใช้งานการสร้างแบบชั่วคราวและสร้างซ้ำได้
  • แยกคีย์ลงนามออกจากโฮสต์การสร้าง

ไฟล์ล็อกและค่าแฮชตรวจสอบความถูกต้อง

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

ช่องข้อมูลความถูกต้องจะจัดเก็บค่าแฮช หากไฟล์บีบอัดที่ดาวน์โหลดมาไม่ตรงกัน การติดตั้งจะล้มเหลว

# package-lock.json integrity entry
# "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
# "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA=="

# CI must install from lock, never re-resolve
npm ci
yarn install --frozen-lockfile

การสแกนช่องโหว่ของส่วนพึ่งพา

รุ่นที่มีช่องโหว่ที่ทราบแล้ว (ติดตามในรูปแบบ CVE) เป็นจุดอ่อนของห่วงโซ่อุปทานที่พบได้บ่อยที่สุด เครื่องมือ การวิเคราะห์องค์ประกอบซอฟต์แวร์ (SCA) จะเปรียบเทียบส่วนพึ่งพาที่แก้ไขแล้วของคุณกับฐานข้อมูลช่องโหว่

เรียกใช้การสแกนในระบบผสานรวมอย่างต่อเนื่อง และทำให้การสร้างล้มเหลวเมื่อพบประเด็นร้ายแรง:

# npm built-in audit
npm audit --audit-level=high

# OSV scanner across ecosystems
osv-scanner --lockfile=package-lock.json

# Trivy for filesystem and images
trivy fs --severity HIGH,CRITICAL .

การตรึงเวอร์ชันและการรวมส่วนพึ่งพาไว้ภายใน

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

  • ตรึงเวอร์ชันให้เป็นรุ่นที่เจาะจง และตรวจสอบการอัปเกรดอย่างรอบคอบ
  • ตรึงด้วยค่าไดเจสต์สำหรับอิมเมจคอนเทนเนอร์ แทนการใช้แท็กที่เปลี่ยนแปลงได้ เช่น latest
  • รวมไว้ภายในสำหรับส่วนพึ่งพาที่สำคัญในคลังโค้ดหรือมิเรอร์ของคุณเอง เพื่อไม่ให้การลบจากต้นทางทำให้ระบบเสียหายหรือถูกปนเปื้อน
# pin a container image by immutable digest
FROM python:3.12-slim@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613f

การเฝ้าติดตามอย่างต่อเนื่องและแหล่งที่มา

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

  • สร้าง SBOM สำหรับทุกรุ่นเผยแพร่ (ในบทเรียนถัดไป)
  • บันทึก แหล่งที่มาของการสร้าง เพื่อให้พิสูจน์ได้ว่าอาร์ติแฟกต์ถูกสร้างขึ้นอย่างไร
  • สมัครรับประกาศแจ้งเตือน เพื่อให้ CVE ที่เพิ่งเปิดเผยกระตุ้นการประเมินซ้ำของการสร้างที่ส่งมอบไปแล้ว

การสร้างแบบจำลองภัยคุกคามของสายงาน

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

ในแต่ละขั้นตอน ให้ถามว่า: ใครเขียนข้อมูลลงที่นี่ได้ การถูกเจาะจะเปิดโอกาสให้บุคคลนั้นทำอะไร และฉันจะตรวจจับได้อย่างไร วิธีนี้จะสร้างรายการมาตรการควบคุมที่จัดลำดับความสำคัญแล้ว แทนที่จะเป็นรายการตรวจสอบทั่วไป

ตรวจสอบความเข้าใจ: ความสับสนของส่วนพึ่งพา

ทดสอบความเข้าใจเกี่ยวกับประเภทการโจมตีห่วงโซ่อุปทานที่พบได้บ่อย

ทบทวน: ภัยคุกคามจากห่วงโซ่อุปทาน

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

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

ถัดไป คุณจะจัดทำบัญชีรายการสิ่งที่ซอฟต์แวร์มีอยู่จริงอย่างละเอียดด้วย SBOM

เริ่มต้นได้ฟรี

เรียนรู้ Cyber Security Academy ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
76
บทเรียน
303

คำถามที่พบบ่อย

บทเรียน “ภัยคุกคามต่อห่วงโซ่อุปทาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ภัยคุกคามต่อห่วงโซ่อุปทาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ภัยคุกคามต่อห่วงโซ่อุปทาน”

การพึ่งพากันกลายเป็นช่องทางโจมตีได้อย่างไร คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ภัยคุกคามต่อห่วงโซ่อุปทาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม

ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ภัยคุกคามต่อห่วงโซ่อุปทาน
  2. บัญชีรายการวัสดุซอฟต์แวร์ (SBOM)
  3. การลงลายมือชื่อการพึ่งพาและสิ่งส่งมอบ
  4. การรักษาความปลอดภัยไปป์ไลน์ CI/CD
← กลับไปที่ Cyber Security Academy