ภัยคุกคามต่อห่วงโซ่อุปทาน
การพึ่งพากันกลายเป็นช่องทางโจมตีได้อย่างไร
ภัยคุกคามต่อห่วงโซ่อุปทาน เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ภัยคุกคามต่อห่วงโซ่อุปทาน
- บัญชีรายการวัสดุซอฟต์แวร์ (SBOM)
- การลงลายมือชื่อการพึ่งพาและสิ่งส่งมอบ
- การรักษาความปลอดภัยไปป์ไลน์ CI/CD