แทรกตัวแปรสภาพแวดล้อมเข้าไปในกระบวนการสร้าง

แทรกตัวแปรสภาพแวดล้อมเข้าสู่กระบวนการสร้างอย่างปลอดภัย

การแทรกตัวแปรสภาพแวดล้อมเข้าไปในกระบวนการสร้างคือ... standard การปฏิบัติในยุคสมัยใหม่ CI/CD pipelineทีมต่างๆ ใช้วิธีการแทรกตัวแปรสภาพแวดล้อมเข้าไปในกระบวนการสร้าง เพื่อส่งผ่านข้อมูลลับ โทเค็น และการกำหนดค่ารันไทม์เข้าไปในบิลด์โดยไม่ต้องเขียนค่าแบบตายตัว ในแง่ผิวเผิน วิธีนี้ดูเหมือนจะเป็นรูปแบบที่เรียบง่ายและปลอดภัย

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

เพราะเมื่อทีมต่างๆ แทรกตัวแปรสภาพแวดล้อมเข้าไปในกระบวนการสร้างแล้ว ค่าเหล่านั้นจะไม่ถูกแยกออกจากกันอีกต่อไป แต่จะสามารถเข้าถึงได้จากทุกสิ่งที่ทำงานอยู่ภายในนั้น pipelineสคริปต์การสร้าง, เครื่องมือ CLI, การกระทำของบุคคลที่สาม และแม้แต่ส่วนประกอบต่างๆ สามารถอ่านไฟล์เหล่านี้ได้

นี่แหละคือจุดที่ทุกอย่างเริ่มพังทลาย

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

การแทรกตัวแปรสภาพแวดล้อมเข้าไปในกระบวนการสร้างหมายความว่าอย่างไร

โดยหลักการแล้ว การแทรกตัวแปรสภาพแวดล้อมหมายถึงการส่งค่าเข้าไปในตัวแปรเหล่านั้น pipeline ในระหว่างการทำงาน เพื่อให้งานต่างๆ สามารถเข้าถึงข้อมูลเหล่านั้นได้ในระหว่างการดำเนินการ 

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

ค่าเหล่านี้โดยทั่วไปประกอบด้วยคีย์ API, ข้อมูลประจำตัวฐานข้อมูล, โทเค็น หรือการกำหนดค่าเฉพาะสภาพแวดล้อม แทนที่จะจัดเก็บค่าเหล่านี้โดยตรงในโค้ด CI/CD ระบบจะโหลดข้อมูลเหล่านั้นแบบไดนามิกเมื่อเริ่มการสร้าง

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

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

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

จุดที่ตัวแปรสภาพแวดล้อมรั่วไหลในกระบวนการสร้างโปรแกรม

การรั่วไหลของข้อมูลส่วนใหญ่ไม่ได้เกิดขึ้นเพราะมีคนเปิดเผยความลับโดยเจตนา แต่เกิดขึ้นเพราะ... pipelineตัวแปร s มีพฤติกรรมที่นักพัฒนาซอฟต์แวร์คาดไม่ถึงอย่างเต็มที่

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

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

การกระทำแต่ละอย่างดูไม่น่าสงสัยเมื่อพิจารณาแยกกัน แต่เมื่อรวมกันแล้วจะสร้างช่องโหว่หลายช่องทาง

ความลับอาจจบลงที่:

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

เมื่อความลับปรากฏในบันทึกแล้ว มักจะไม่ถูกจำกัดอยู่แค่ในบันทึกเท่านั้น บันทึกจะถูกคัดลอก จัดเก็บ และเก็บรักษาไว้ในหลายระบบ ณ จุดนั้น การรั่วไหลของข้อมูลจะขยายวงกว้างออกไปไกลเกินกว่าที่เดิมจะรับรู้ได้ pipeline.

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

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

ถึงแม้จะมีความเสี่ยงเหล่านี้ ทีมต่างๆ ก็ยังพึ่งพาการฉีดตัวแปรสภาพแวดล้อมอย่างมาก และก็มีเหตุผลที่ดีด้วย

มันเปิดใช้งาน pipelineเพื่อให้มีความยืดหยุ่น เวิร์กโฟลว์เดียวสามารถปรับให้เข้ากับสภาพแวดล้อมต่างๆ ยืนยันตัวตนกับบริการหลายอย่าง และเปลี่ยนแปลงพฤติกรรมแบบไดนามิกโดยไม่ต้องแก้ไขโค้ด

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

ด้วยเหตุนี้ การแทรกตัวแปรสภาพแวดล้อมจึงเปลี่ยนจากรายละเอียดการกำหนดค่าไปเป็นปัญหาด้านความปลอดภัย

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

ความเสี่ยงเหล่านี้ไม่ใช่เรื่องสมมติ แต่ปรากฏให้เห็นในความเป็นจริง pipelineทุกวัน

ข้อมูลลับรั่วไหลเข้าไปในไฟล์บันทึก

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

เมื่อค่าเหล่านั้นถูกเปิดเผยออกมา ก็จะแพร่กระจายไปทั่วระบบอย่างรวดเร็ว

การเข้าถึงที่มากเกินไป

หลาย pipelineการเปิดเผยตัวแปรทั้งหมดให้กับทุกงานนั้นก่อให้เกิดความเสี่ยงที่ไม่จำเป็น

หากขั้นตอนใดขั้นตอนหนึ่งถูกบุกรุก ระบบอาจเข้าถึงข้อมูลประจำตัวที่ไม่จำเป็นต้องใช้ได้

การพึ่งพาและการกระทำในทางที่ผิด

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

หากตัวใดตัวหนึ่งมีพฤติกรรมที่เป็นอันตราย มันสามารถเข้าถึงตัวแปรที่ถูกแทรกเข้าไปได้อย่างเงียบๆ

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

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

ความลับสำรองในโค้ด

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

เมื่อเวลาผ่านไป ค่าเหล่านี้จะ... commitถูกนำไปใช้งานหรือประจำการ ทำให้เกิดการสัมผัสในระยะยาว

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

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

ทำไมหลายคน CI/CD เครื่องมือรักษาความปลอดภัย ตรวจจับการรั่วไหลของตัวแปรสภาพแวดล้อม

เครื่องมือรักษาความปลอดภัยส่วนใหญ่จะเน้นการสแกนโค้ดหรือส่วนประกอบต่างๆ หลังจากที่การสร้างเสร็จสมบูรณ์แล้ว

อย่างไรก็ตาม การรั่วไหลของตัวแปรสภาพแวดล้อมเกิดขึ้นระหว่างการดำเนินการ

A pipeline สามารถแทรกข้อมูลลับได้อย่างถูกต้อง แต่ก็ยังสามารถเปิดเผยข้อมูลเหล่านั้นผ่านบันทึกหรือพฤติกรรมขณะทำงานได้ กว่าที่โปรแกรมสแกนจะตรวจพบปัญหา ข้อมูลลับอาจถูกเปิดเผยไปแล้วก็ได้

สิ่งนี้ทำให้เกิดช่องว่างระหว่างการตรวจจับและการป้องกัน

ทีมต่างๆ จำเป็นต้องมีระบบควบคุมที่ทำงานได้ในขณะที่... pipeline กำลังดำเนินการ ไม่ใช่หลังจากที่ดำเนินการเสร็จสิ้นแล้ว

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

เราแนะนำวิธีการรักษาความปลอดภัยในการฉีดตัวแปรสภาพแวดล้อมอย่างไร

ในทางปฏิบัติ การป้องกันที่มีประสิทธิภาพนั้นขึ้นอยู่กับหลักการพื้นฐานไม่กี่ข้อที่สอดคล้องกัน

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

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

แนวทางนี้เปลี่ยนระบบรักษาความปลอดภัยจากการตรวจจับเชิงรับไปเป็นการควบคุมเชิงรุก

Xygeni ช่วยปกป้องคุณได้อย่างไร CI/CD การฉีดลับ

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

แทนที่จะพึ่งพาการสแกนหลังการสร้างเพียงอย่างเดียว Xygeni วิเคราะห์ว่า... pipelineโปรแกรมเหล่านี้ใช้ตัวแปรสภาพแวดล้อมขณะทำงาน ซึ่งรวมถึงวิธีการที่ข้อมูลลับเคลื่อนย้ายระหว่างงานต่างๆ วิธีที่ขั้นตอนการสร้างเข้าถึงข้อมูลลับเหล่านั้น และวิธีที่ส่วนประกอบต่างๆ โต้ตอบกับสภาพแวดล้อมการทำงาน

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

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

เนื่องจากเหตุการณ์นี้เกิดขึ้นภายใน CI/CD เมื่อเวิร์กโฟลว์เสร็จสมบูรณ์ นักพัฒนาไม่จำเป็นต้องเปลี่ยนวิธีการทำงาน ความปลอดภัยจะกลายเป็นส่วนหนึ่งของเวิร์กโฟลว์ pipelineไม่ใช่ขั้นตอนแยกต่างหาก

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

ข้อสรุป

การแทรกตัวแปรสภาพแวดล้อมเข้าไปในกระบวนการสร้างนั้นมีความสำคัญอย่างยิ่งสำหรับระบบสมัยใหม่ CI/CD กระบวนการทำงาน อย่างไรก็ตาม หากไม่มีการควบคุมที่เหมาะสม การปฏิบัติเช่นนี้อาจเปิดเผยความลับได้ในหลายขั้นตอนของการดำเนินการ

อย่างไรก็ตาม มันยังก่อให้เกิดความเสี่ยงอีกชั้นหนึ่งซึ่งมักถูกมองข้ามไป

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

ในสภาพแวดล้อม DevOps สมัยใหม่ การป้องกันการรั่วไหลระหว่างกระบวนการสร้างมีความสำคัญมากกว่าการตรวจจับการรั่วไหลหลังจากนั้นมาก

sca-tools-software-composition-analysis-tools
จัดลำดับความสำคัญ แก้ไข และรักษาความปลอดภัยความเสี่ยงด้านซอฟต์แวร์ของคุณ
สมัครบัญชีฟรีได้เลย
ไม่ต้องใช้บัตรเครดิต

รักษาความปลอดภัยให้กับการพัฒนาและส่งมอบซอฟต์แวร์ของคุณ

ด้วยชุดผลิตภัณฑ์ Xygeni