ทำไม“ AcceptEnv *” จึงไม่ปลอดภัย?


12

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

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

เหตุใดจึงถือว่าไม่ปลอดภัย ฉันขอตัวอย่างได้ไหม

คำตอบ:


11

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

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

ลองดูที่http://www.dankalia.com/tutor/01005/0100501004.htmและค้นหา "LD_PRELOAD Exploit" ขออภัยหน้านี้ไม่มีลิงค์เชื่อมโยง

ดูเพิ่มเติมที่คำถาม StackOverflow " เคล็ดลับ LD_PRELOAD คืออะไร "

การตั้งค่าตัวแปรสภาพแวดล้อมหลังจากการเชื่อมต่อเป็นปกติ แต่เมื่อตัวแปรเหล่านั้นถูกตีความโดย ssh daemon ตามที่กำหนดโดย AcceptEnv สิ่งต่าง ๆ อาจเกิดขึ้น


1
มันแตกต่างอย่างไรเมื่อพวกเขาตั้งค่าตัวแปรด้วยตนเองหลังจากที่เข้าสู่ระบบ?
Joseph Garvin

1
@JosephGarvin บางระบบมีการ จำกัด เปลือกหอยหรือเพียง แต่ช่วยให้คำสั่งเดียวที่เฉพาะเจาะจงเช่นว่า "พวกเขา" ไม่สามารถ จากนั้นข้อกังวลคือการจัดหาวิธีการที่มาตรการรักษาความปลอดภัยดังกล่าวสามารถข้ามได้
ชาร์ลส์ดัฟฟี่

0

อย่ายอมรับตัวแปรสภาพแวดล้อม:

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


1
คุณกำลังแพร่กระจายความกลัว IMO หากคุณกังวลว่าทำไมพวกเขาถึงเข้าถึง SSH ได้? และ btw คุณไม่สามารถหยุดพวกเขาจากการตั้งค่าตัวแปรสภาพแวดล้อมเมื่อพวกเขาอยู่ในเปลือกหรือแม้กระทั่งฟังก์ชั่น การหาช่องโหว่นั้นเป็นเรื่องของการเข้าถึงเชลล์โดยไม่ได้รับอนุญาตผ่านสิ่งต่าง ๆ เช่น nginx ไม่ใช่การเข้าถึงเชลล์ที่ได้รับอนุญาต
Jordon Bedwell

อย่างไรก็ตามคุณยอมรับอย่างน้อยหนึ่ง env ตัวแปรชื่อ TERM อาจมีความต้องการที่ถูกต้องในการยอมรับตัวแปรอื่น ๆ เช่น PRINTER, EDITOR, PAGER, ...
ibre5041

@JordonBedwell ไม่ได้ทุกการเชื่อมต่อ SSH จะได้รับอนุญาตให้เข้าถึงเปลือก ฉันมีหลายระบบที่มีบัญชีที่มีการตรวจสอบความถูกต้องเพียงอย่างเดียวกับคีย์ SSH ที่อนุญาตให้เรียกใช้คำสั่งเดียวที่เจาะจงเท่านั้น (ด้วยข้อมูลประจำตัวของเจ้าของคีย์นั้นและรายละเอียดอื่น ๆ
Charles Duffy

... ที่กล่าวว่าฉันเห็นด้วยว่าในปี 2560 ShellShock ล้นเหลืออยู่มากที่นี่ ด้วยการใช้งานในปัจจุบันการสร้างฟังก์ชั่นที่ส่งออกต้องควบคุมไม่เพียง แต่ค่าของตัวแปรสภาพแวดล้อมแต่ยังชื่อของมัน(และกระบวนการในการประเมินฟังก์ชั่นการส่งออกในระหว่างการเริ่มต้นเชลล์ไม่ได้มีแนวโน้มที่จะโจมตี
Charles Duffy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.