Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบเครือข่าย >> อินเทอร์เน็ต

Heartbleed: เข้าใจช่องโหว่และผลกระทบ

ปกติผมสงสัยมากเกี่ยวกับความปลอดภัยซอฟต์แวร์ ผมคิดว่าหนึ่งในวัตถุประสงค์หลักของอุตสาหกรรมซอฟต์แวร์ที่เกี่ยวข้องคือการข่มขู่คนให้ซื้อผลิตภัณฑ์ความปลอดภัย เพื่อให้พวกเขารู้สึกปลอดภัยอย่างเหมาะสม ตัวอย่างที่ดีที่สุดคือมุมมองขัดแย้งเกี่ยวกับสถานการณ์มัลแวร์ Windows ก่อนการสิ้นสุด Windows XP ด้วยรายงานหนึ่งของ Microsoft แสดงว่าเวอร์ชันใหม่ของ OS ปลอดภัยกว่า และอีกหนึ่งจากบริษัท anti-malware ที่อ้างตรงข้าม นี่ทำให้ผมมองเรื่องล่าสุดของ openSSL ดินสอ (stink eye)

ผู้ใช้หลายคน (มากกว่าหนึ่ง) ขอให้ผมขยายเกี่ยวกับเรื่องนี้ ตามแนวทางค่อนข้างเย็นชาของผม จริงๆ นี่ไม่ใช่ Windows นี่คือ Linux นี่คือ Web นี่คือสิ่งอื่นที่แตกต่างกันสิ้นเชิง นี่ควรน่าสนใจ

Heartbleed ในเปลือกถั่ว

โดยปกติ Heartbleed คือบั๊กในส่วนขยาย Heartbeat ของ OpenSSL ซึ่งทำให้ Heartbeat requester สามารถรับ payload 随意 (arbitrary) จากหน่วยความจำของไลบรารี OpenSSL บนระบบเป้าหมาย กล่าวคือ แทนที่จะคืนแค่ข้อมูลที่จำเป็นสำหรับการสื่อสารโปรโตคอล TLS โฮสต์ที่ถูก poll คืนมากกว่านั้น นี่หมายความว่าเข้าถึงหน่วยความจำที่ไม่ได้ตั้งใจส่งให้ requester ได้

และแค่นั้นแหละ ตอนนี้ปัญหาคือ สิ่งนี้ส่งผลต่อจำนวนมากของบริการและเว็บไซต์ที่โฮสต์บนเว็บ มีฐานลูกค้ามาก นี่คือที่ที่ Heartbleed กลายเป็นมากกว่าแค่บั๊กอีกตัว

ทำไมสิ่งนี้ถึงแย่

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

สิ่งที่สำคัญคือ วิธีที่ปัญหานี้เกิดขึ้น บั๊ก Heartbeat ถูกก่อให้เกิดโดยปัญหาหลักสองประการ หนึ่ง bad input validation (การตรวจสอบอินพุตที่แย่) ซึ่งเป็น unholy grail ของการเขียนโปรแกรม เมื่อนักพัฒนาลืม initialize ตัวแปร ตรวจสอบ boundaries หรือ return values เหตุผลหลักที่คนใน cubicles ไม่ไว้วางใจ แต่อย่างไรก็ตาม มันเกิดขึ้นแม้กับคนที่ดีที่สุด ไม่มีอะไรทำได้เมื่อคุณไปเกินขอบเขต Hello World!

ปัญหาที่สอง คือ นักพัฒนา openSSL ใช้การ implement เองของ free และ malloc สอง routine ที่ใช้จับและปล่อยชุดหน่วยความจำแบบไดนามิก นี่หมายความว่าพวกเขาคิดว่าพวกเขารู้ดีกว่าทุกคน

ดังนั้น ใช่ เมื่อคุณแยกปัญหาออกมาแบบนั้น มันน่ารำคาญ คล้ายอุบัติการณ์ Chernobyl สายของปัญหาเล็กๆ ที่สะสมเป็นหนึ่งช่อของ digital intercourse

สิ่งที่คุณสามารถทำได้ - มุมมองที่ถูกต้อง

มีอะไรให้คุณทำน้อยมาก จริงๆ ปัญหาส่วนใหญ่อยู่ฝั่งเซิร์ฟเวอร์ (server side) จริง มันยังส่งผลต่อเครื่องทุกเครื่องที่ใช้ไลบรารี openSSL ที่เปราะบาง แต่ถามตัวเองดูว่า อุปกรณ์ของคุณสื่อสารโดยตรงกับโฮสต์อื่นๆ ใช้ TLS บ่อยแค่ไหน นอกจากการดึงข้อมูลจากเว็บ อาจจะเชื่อมต่อ game server และแบบนั้น

อย่างไรก็ตาม สำหรับเว็บไซต์ใหญ่ ผมคิดส่วนตัวว่า แม้พวกเขาอาจถูก bleed ปริมาณトラフィック (traffic) มากมายจนต้องใช้ computing power มากเพื่อประมวลผลข้อมูลทั้งหมด และเนื้อหาในหน่วยความจำอาจ疏 (sparse) เกินกว่าจะสร้างมุมมองที่สอดคล้องกัน

นี่คือการเดาของผม ไม่ใช่วิทยานิพนธ์คณิตศาสตร์ ดังนั้นอยู่ห่างจาก vitriol และอื่นๆ คิดดูสิ้น Google ตัวอย่าง มีฟาร์มคอมพิวเตอร์ใหญ่หลายหมื่นเซิร์ฟเวอร์ ให้บริการเกี่ยวกับเว็บ แต่ละตัว serve คำขอหลายร้อยต่อวินาที ดังนั้นแม้คุณจะ heartbeat ทรัพยากรเหล่านี้ ต้องการเซิร์ฟเวอร์ของคุณเองหลายตัวเพื่อรับข้อมูลทั้งหมด เพิ่มเติม หากมีคนทำงานหนักเพื่อขโมย SSL stuff พวกเขาอาจไม่ต้องการ DoS ทรัพยากรเหล่านี้ สาม แม้ credentials ทั้งหมดอาจถูกขโมย การ嗅探 (sniffing) traffic บน switched network อย่างมีความหมาย ไม่ใช่เรื่องง่าย

ผมไม่ได้หมายความนี้เพื่อทำให้คุณเงียบลง นั่นไม่ใช่จุดประสงค์ คุณแค่ต้องตรวจสอบปัญหาอย่างมีเหตุผล ดังนั้น ใช่ ในทฤษฎีและอาจในทางปฏิบัติ ข้อมูล SSL บางส่วนอาจถูก洩漏 (leaked) เป็นการป้องกัน บางเว็บไซต์แนะนำให้คุณเปลี่ยนรหัสผ่าน พิจารณานี้ มันไม่ใช่การปฏิบัติที่แย่ เพิ่มเติม two-factor authentication และการใช้รหัสผ่านที่ต่างกันบนเว็บไซต์ต่างๆ ก็เป็นความคิดที่ดี

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

ในฐานะ end user

ตอนนี้ หากคุณต้องการเป็น good trooper แล้วมีบางสิ่งที่คุณทำได้ ตรวจสอบว่าเว็บไซต์ยอดนิยมของคุณยังใช้เวอร์ชันที่แย่หรือไม่ หากใช่ รายงาน ขยายขั้นตอน ขอแก้ไข นั่นคือสิ่งที่คุณทำได้จากฝั่งผู้ใช้

รหัสผ่าน ใช่ เราพูดถึงก่อนหน้านี้ แค่จำไว้ว่าบั๊กเลิศนี้มีอยู่ตั้งแต่ต้นปี 2012 มากกว่าสองปีแล้ว คุณไม่ได้รู้จักมันตลอดเวลานี้ ซึ่งอาจหมายความว่าปัญหาไม่ได้มี manifestation ที่แพร่หลายและ clandestine และหากมี ระหว่างสองปีก่อนและตอนนี้ ข้อมูลอาจถูก洩漏 ดังนั้นคุณควรวางสิ่งต่างๆ ให้อยู่ในมุมมองที่ถูกต้อง

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

คอมโพล็อต (Conspiracy)

โดยธรรมชาติ มีคอมโพล็อตการเฝ้าระวัง NSA ใหม่ ซึ่งอ้างว่าสถานบันทึกสามตัวอักษร (three-letter agency) รู้จักบั๊กนี้มาปีแล้ว หากคุณถามผม นี่เป็นเรื่องสงสัย เพราะบริษัทสองแห่งที่ต่างกัน รวมถึงวิศวกรของ Google และบริษัท Finnish (คือ ไม่ใช่ American) Codenomicon รายงานบั๊กเกือบพร้อมกัน นี่หมายความว่ามีสิ่งใหม่เกิดขึ้น

ดังนั้น หากคุณกังวลเกี่ยวกับ NSA นี่คือวิธีแก้ คุณคุ้นเคยกับ Michael Mann ไหม เขาเป็นผู้กำกับ Miami Vice เช็ค Heat เช็ค และหนังเก๋าอื่นๆ มาก รวมถึง Manhunter เวอร์ชันที่ดีกว่ามากของ Hannibal Lecter มากกว่า Red Dragon และเพลงประกอบคือ Heartbeat ยังมีในตอนของ Miami Vice มาก หากคุณฟังเพลง คุณจะเข้าใจได้ชัดเจน

Heartbeat, heartbeat, listen to my hearbeat, oh-oh

บทสรุป

นี่อาจเป็นครั้งแรกที่คุณจะได้ยิน Dedoimedo พูดว่ามีปัญหาความปลอดภัยจริงที่คนควรจัดการอย่างจริงจัง แทนที่จะเป็น scaremongering ตามปกติ ใช่ การรั่วไหลของหน่วยความจำจาก Heartbleed ไม่ใช่แค่ malware nonsense ทุกวัน ทonesa มันยังเป็นปัญหาที่จะต้องได้รับการแก้ไขโดยบริษัทและผู้ให้บริการเป็นหลัก บทบาทของคุณในเกมนี้เล็ก สิ่งสำคัญคือ อย่าตื่นตระหนกและมีเหตุผล

แค่จำไว้ เมื่อโครงสร้างพื้นฐานอินเทอร์เน็ตเจ็บปวด ให้พิงหลังและดู มันไม่เกิดทุกวัน และเป็นการเปลี่ยนแปลงที่ refreshing จาก bullcrap ปกติ "PC ของคุณอาจเสี่ยง" ในกรณีนี้ มันใหญ่กว่าคุณ ดังนั้น ผ่อนคลาย

ขอบคุณครับ