บางคนจะโต้แย้งว่าการมีเครื่องมือพัฒนาบนเครื่องผลิตจะทำให้ชีวิตของผู้โจมตีง่ายขึ้น อย่างไรก็ตามนี่เป็น roadbump ขนาดเล็กสำหรับผู้โจมตีที่มีข้อโต้แย้งอื่น ๆ ที่คุณสามารถค้นหาหรือต่อต้านการติดตั้งเครื่องมือพัฒนาจะมีน้ำหนักมากกว่า
หากผู้โจมตีสามารถเจาะระบบจนพวกเขาสามารถเรียกใช้เครื่องมือใด ๆ ที่มีอยู่บนเซิร์ฟเวอร์แล้วคุณมีการละเมิดความปลอดภัยที่ร้ายแรงแล้ว หากไม่มีเครื่องมือในการพัฒนามีหลายวิธีในการเขียนข้อมูลไบนารีลงในไฟล์จากนั้นเรียกใช้ chmod บนไฟล์นั้น ผู้โจมตีที่ต้องการใช้งาน build แบบกำหนดเองบนระบบ ณ จุดนี้ก็สามารถสร้างได้บนเครื่องของตนเองและถ่ายโอนไปยังเซิร์ฟเวอร์
มีสิ่งที่เกี่ยวข้องอื่น ๆ อีกมากมายที่ต้องระวัง หากชิ้นส่วนของซอฟต์แวร์ที่ติดตั้งมีข้อผิดพลาดด้านความปลอดภัยมีอยู่สองสามวิธีที่อาจถูกเปิดเผยต่อผู้โจมตี:
- แพคเกจอาจมี suid หรือ sgid ที่ปฏิบัติการได้
- แพ็คเกจอาจเป็นการเริ่มบริการบนระบบ
- แพ็กเกจสามารถติดตั้งสคริปต์ที่ถูกเรียกใช้โดยอัตโนมัติภายใต้สถานการณ์บางอย่าง (รวมถึงงาน cron แต่สคริปต์อาจถูกเรียกใช้โดยเหตุการณ์อื่น ๆ เช่นเมื่อสถานะของอินเทอร์เฟซเครือข่ายเปลี่ยนแปลงหรือเมื่อผู้ใช้ล็อกอิน)
- แพคเกจสามารถติดตั้ง inodes อุปกรณ์
ฉันไม่คาดหวังว่าเครื่องมือในการพัฒนาจะต้องตรงกับข้อใดข้อหนึ่งข้างต้นและนี่ไม่ใช่แพ็คเกจที่มีความเสี่ยงสูง
หากคุณมีเวิร์กโฟลว์ที่คุณจะใช้ประโยชน์จากเครื่องมือในการพัฒนาคุณต้องตัดสินใจว่าเป็นเวิร์กโฟลว์ที่เหมาะสมหรือไม่และหากเป็นเช่นนั้นคุณควรติดตั้งเครื่องมือสำหรับการพัฒนา
หากคุณพบว่าคุณไม่ต้องการเครื่องมือเหล่านั้นบนเซิร์ฟเวอร์คุณควรงดการติดตั้งด้วยเหตุผลหลายประการ:
- ประหยัดเนื้อที่ดิสก์ทั้งบนเซิร์ฟเวอร์และสำรองข้อมูล
- ซอฟต์แวร์ที่ติดตั้งน้อยทำให้ง่ายต่อการติดตามการพึ่งพาของคุณ
- หากคุณไม่ต้องการแพ็กเกจจะไม่มีจุดรับความเสี่ยงด้านความปลอดภัยเพิ่มเติมจากการติดตั้งแม้ว่าความเสี่ยงด้านความปลอดภัยนั้นจะเล็กน้อย
หากคุณตัดสินใจว่าด้วยเหตุผลด้านความปลอดภัยคุณจะไม่อนุญาตให้ผู้ใช้ที่ไม่มีสิทธิ์ถูกวางเอ็กซีคิวต์ของตนเองบนเซิร์ฟเวอร์ดังนั้นสิ่งที่คุณควรหลีกเลี่ยงไม่ใช่เครื่องมือในการพัฒนา อาจยังคงมีการใช้สำหรับเครื่องมือในการพัฒนาแม้ภายใต้สถานการณ์เหล่านั้น แต่ก็ไม่น่าเป็นไปได้