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

หลักฐานของแนวคิดยกระดับ WordPress ใช้ตัวแปร ชื่อเซิร์ฟเวอร์ เพื่อรับชื่อโฮสต์ของเซิร์ฟเวอร์เพื่อสร้างส่วนหัว จาก / ย้อนกลับเส้นทาง รหัสผ่านขาออกรีเซ็ตอีเมล

เว็บเซิร์ฟเวอร์หลักเช่น Apache ตั้งค่าตัวแปร SERVER_NAME ตามค่าเริ่มต้นโดยใช้ชื่อโฮสต์ที่ไคลเอ็นต์ให้มา (ในส่วนหัว HTTP_HOST):

Https://httpd.apache.org/docs/2.4/mod/core.html#usecanonicalname

เนื่องจากสามารถแก้ไข SERVER_NAME ผู้โจมตีจึงสามารถกำหนดค่าได้ในโดเมนที่ต้องการเช่น:

Attackers-mxserver.com

ซึ่งจะให้การกำหนดค่า $ from_email แก่ WordPress

[ป้องกันอีเมล]

ดังนั้นจึงทำให้อีเมลขาออกพร้อมเส้นทาง Return / Return-Path บนที่อยู่ที่ประสงค์ร้ายนั้น

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

หลังจากรายงานปัญหาไปยังทีมรักษาความปลอดภัย WordPress ในเดือนกรกฎาคม 2016 และผ่านทาง เว็บไซต์เว็บ HackerOne, Golunski ไม่เห็นความคืบหน้าและตัดสินใจ ประกาศ รายละเอียดช่องโหว่ให้ประชาชนทราบ

ในขณะที่ยังไม่มีการแก้ไขอย่างเป็นทางการ Aaron Campbell ผู้ดูแลระบบความปลอดภัยของ WordPress กล่าวว่าปัญหานี้ไม่ร้ายแรงเท่าที่ควร

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

« เพื่อให้ปัญหามีผลกระทบต่อความปลอดภัยเซิร์ฟเวอร์ต้องอนุญาตให้ส่วนหัวที่ผู้ใช้จัดหามาแทนที่ได้ $ _SERVER ['SERVER_NAME']“ แคมป์เบลล์กล่าว "เราถือว่าการกำหนดค่าเซิร์ฟเวอร์ไม่เพียงพอ (เช่น" display_errors "หากมีผลกับเซิร์ฟเวอร์ที่ใช้งานจริง) ซึ่งอยู่นอกเหนือการควบคุมของเรา"

แคมป์เบลได้ทดสอบเซิร์ฟเวอร์ Apache และ nginx ส่วนตัวของเขาและไม่มีเซิร์ฟเวอร์ใดได้รับอนุญาตสำหรับสิ่งนี้ นอกจากจะมีเซิร์ฟเวอร์ที่กำหนดค่าไม่ถูกต้องแล้ว Campbell ยังกล่าวอีกว่าควรดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้:

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

« หากเซิร์ฟเวอร์ของคุณมีช่องโหว่และคุณไม่มีความสามารถในการแก้ไขการกำหนดค่าเซิร์ฟเวอร์คุณยังไม่ต้องทำการเปลี่ยนแปลงใด ๆ กับไฟล์ WordPress เพื่อบรรเทาปัญหา“ แคมป์เบลล์กล่าว "PHP แบบนี้ในปลั๊กอินจะกำหนดที่อยู่อีเมลแบบคงที่ที่คุณเลือก:"

add_filter ('wp_mail_from', ฟังก์ชัน ($ from_email) {return '[ป้องกันอีเมล]'; });

Campbell กล่าวว่าการเปลี่ยนแปลงใด ๆ ที่ WordPress ทำกับเคอร์เนลนั้นน่าจะเกิดจากตั๋วที่ติดตามปัญหาโดยไม่มีมุมมองด้านความปลอดภัย เขากล่าวว่าการแก้ไขไม่น่าจะเกิดขึ้นในรุ่นการรักษาความปลอดภัยรุ่นถัดไป แต่ทีมงานกำลังดำเนินการแก้ไขอยู่ หากพวกเขาพบการบรรเทาปัญหาที่ดีแคมป์เบลล์กล่าวว่าพวกเขาจะแบ่งปันเมื่อพวกเขาหาส่วนแบ่งที่เป็นไปได้ทั้งหมด

และคุณ ? คุณคิดอย่างไรกับช่องโหว่นี้?