นี่ไม่ใช่ความเสี่ยงด้านความปลอดภัยเลยเนื่องจากคุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมสำหรับสภาพแวดล้อมปัจจุบันของคุณเท่านั้น (เช่นเซสชัน Bash ปัจจุบัน) และโดยใช้export
คำสั่งสภาพแวดล้อมลูกของมัน (สคริปต์ที่คุณเรียกใช้, เปลือกย่อย ฯลฯ ) เป็นไปไม่ได้ที่จะเพิ่มตัวแปรสภาพแวดล้อมที่สร้างหรือแก้ไขในสภาพแวดล้อมหลัก ซึ่งรวมถึงเป็นไปไม่ได้ที่ผู้ใช้ทั่วไปจะทำการเปลี่ยนแปลงทั่วทั้งระบบแน่นอน
ดังนั้นสภาพแวดล้อมเดียวที่จะได้รับผลกระทบหากคุณเรียกใช้export LD_LIBRARY_PATH=...
คือเชลล์ปัจจุบันของคุณและเชลล์ย่อยใด ๆ ที่คุณอาจวางไข่ในภายหลัง สมมติว่าคุณเปลี่ยนเส้นทางการค้นหาเพื่อรวมไลบรารีที่ติดไวรัสไว้ที่จุดเริ่มต้นเช่นด้วยลำดับความสำคัญสูงสุด จากนั้นคุณรันโปรแกรมปฏิบัติการที่โหลดหนึ่งใน libs ที่ติดไวรัสโดยที่ไม่รู้ตัว เกิดอะไรขึ้น?
คุณมีรหัสที่เป็นอันตราย (จากไลบรารีที่ติดไวรัส) ที่ทำงานภายใต้บัญชีผู้ใช้ของคุณเองด้วยสิทธิ์ที่ไม่ใช่ผู้ดูแลระบบปกติ นี่อาจฟังดูไม่ดี แต่จริงๆแล้ว ... แล้วอะไรนะ? มันทำงานด้วยสิทธิ์ผู้ใช้ปกติซึ่งหมายความว่ามันไม่สามารถส่งผลกระทบต่อระบบทั้งหมดอีกครั้ง อย่างไรก็ตามการรันโปรแกรมปฏิบัติการด้วยรหัสที่เป็นอันตรายโดยตรงนั้นทำได้ง่ายกว่าการแก้ไขพา ธ การค้นหาไลบรารีและรอให้โปรแกรมปฏิบัติการปกติโหลดขึ้นมา
สรุป:ผู้ใช้ทั่วไปสามารถแก้ไขเส้นทางการค้นหาไลบรารีของตนเองเท่านั้นซึ่งหมายความว่าพวกเขาสามารถโหลดไลบรารีเหล่านั้นด้วยตนเองภายใต้บัญชีผู้ใช้ปกติด้วยสิทธิ์ที่ไม่ใช่ระบบทั่ว ๆ ไป ที่กล่าวมามันไม่ต่างอะไรกับการบังคับให้โหลดไลบรารี่ที่ติดไวรัสหรือรันการปฏิบัติการที่ติดไวรัสโดยตรง คุณจะไม่ได้อะไรเลยหากตัวแปรสภาพแวดล้อมนั้นไม่สามารถถูกแทนที่ได้โดยผู้ใช้
PS:นอกจากนี้ยังมี executables ที่มีชุดธงsetuidหรือsetgidซึ่งหมายความว่าพวกเขาจะไม่ทำงานในฐานะผู้ใช้ / กลุ่มของผู้ที่รันพวกเขา แต่เป็นคนที่เป็นเจ้าของมัน ตัวอย่างเช่นsudo
ไฟล์ที่รันได้จะเป็นเจ้าของโดยรูทและมีชุดแฟล็ก setuidซึ่งหมายความว่ามันจะทำงานเป็นรูทเสมอเมื่อถูกเรียกใช้งาน เพื่อเหตุผลด้านความปลอดภัย$LD_LIBRARY_PATH
ตัวแปรจะถูกละเว้นโดยไฟล์เรียกทำงานที่มีหนึ่งในชุดแฟล็กsetuid / setgidเพื่อให้แน่ใจว่าผู้ใช้ทั่วไปไม่สามารถทำการปฏิบัติการที่รันด้วยสิทธิพิเศษรูทเพื่อโหลดไลบรารีโดยพลการ
(ขอบคุณ @Rinzwind ที่ชี้เรื่องนี้ออก!)