เกี่ยวกับการอัปเดตที่คุณเขียน:
ขอบคุณสำหรับการตอบกลับ ฉันเข้าใจแล้วว่าพอร์ตที่เปิดจริงหมายถึงมีโปรแกรมที่สามารถใช้ประโยชน์จากการฟังพอร์ตนั้นได้ แต่ทำไมมันยากที่จะเขียนซอฟต์แวร์ที่ไม่สามารถใช้ประโยชน์ได้? ในการทำอันตรายใด ๆ กับคอมพิวเตอร์โปรแกรมจะไม่อนุญาตให้อัพโหลดหนึ่งไฟล์ขึ้นไปและจากนั้นหนึ่งในไฟล์เหล่านั้นจะต้องถูกเรียกใช้งาน ดูเหมือนว่าจะยากอย่างไม่น่าเชื่อที่จะให้โดยไม่ได้ตั้งใจ
มันยากมากที่จะเขียนซอฟต์แวร์ที่ไม่สามารถใช้ประโยชน์ได้!
ฉันได้อ่านหนังสือการสร้างซอฟต์แวร์รักษาความปลอดภัยและสิ่งหนึ่งที่กล่าวถึงคือการใช้ประโยชน์จากสแตกล้น มีข้อเท็จจริงที่น่ากลัวสองประการในนั้น:
- สำหรับโปรแกรมที่มี bug overflow stack ที่ใช้ประโยชน์ได้นั้นง่ายมากโดยเฉพาะอย่างยิ่งเมื่อเขียนโปรแกรมเป็นภาษาซีในภาษาการเขียนโปรแกรม C ฟังก์ชั่นจำนวนมากไม่ปลอดภัยโดยค่าเริ่มต้นและโปรแกรมเมอร์ต้องการทราบเพื่อหลีกเลี่ยงหน้าที่เสี่ยง หรือต้องดำเนินการพิเศษเพื่อความปลอดภัย
- ช่องโหว่ที่แฮ็คเกอร์ต้องการใช้นั้นสั้น - สั้นมาก น้อยกว่าครึ่งหน้าของภาษาแอสเซมบลีซึ่งแปลเป็น 100 หรือมากกว่า (เดา) ไบต์ของรหัสเครื่อง รหัสช่องโหว่นี้เพียงพอที่จะให้เชลล์แฮ็กเกอร์ (พร้อมรับคำสั่ง) เข้าถึงเครื่องของคุณ ไม่ต้องมีการอัปโหลดและเรียกใช้ไฟล์ขนาดใหญ่เพียงแค่โค้ดชิ้นเล็ก ๆ ที่สามารถแทรกลงในกลางข้อมูลที่ถูกต้อง
ดังนั้นหากแฮ็กเกอร์สามารถค้นหาโปรแกรมที่ (a) มีข้อผิดพลาดล้นสแต็กที่ (b) ใช้ประโยชน์ได้บนเครือข่ายและ (c) มี 100 ไบต์ไบต์คู่ในบัฟเฟอร์ของมันคอมพิวเตอร์ของคุณจะถูก pwned โชคดีที่ความรู้เกี่ยวกับข้อบกพร่องสแต็คล้นเป็นความรู้ทั่วไปพอสมควร แต่พวกเขายังคงปรากฏขึ้น 5 ปีที่แล้วและนานกว่านี้เป็นปัญหาที่พบบ่อยมากขึ้น
กลับไปที่คำถามดั้งเดิมของคุณคุณควรหลีกเลี่ยงพอร์ตที่เปิดอยู่เพื่อหลีกเลี่ยงอุบัติเหตุที่มีข้อบกพร่องที่สามารถใช้ประโยชน์ได้ในโปรแกรม ตอนนี้คุณมีเหตุผลที่สอง: เชลล์ระยะไกลที่แฮ็กเกอร์จะใช้เป็นพอร์ตเปิดอื่น หากคุณมีไฟร์วอลล์ที่บล็อกทุกอย่างยกเว้นที่คุณอนุญาตเป็นพิเศษคุณจะบล็อกเปลือกระยะไกลนั้น (แม้ว่าแฮกเกอร์จะยังสามารถทำสิ่งที่น่ารังเกียจอื่น ๆ ในคอมพิวเตอร์ของคุณได้ดังนั้นอย่านิ่งนอนใจ!)