Google ได้ออกบทความการโจมตีระบบที่เรียกว่า WPAD ที่น่าสนใจ ซึ่งผมอ่านจบแล้ว ก็เลยสรุปมาคร่าวๆให้ฟังครับ

เมื่อตอนที่ Internet เพิ่งจะเกิด ทาง Engineer ของ Netscape ได้คิดว่า Javascript เป็นภาษาที่ดีที่จะใช้ configure Proxy ดังนั้นก็เลยทำตัวที่เรียกว่า PAC file format ขึ้นมา โดยภายใน PAC นั้นมันคือไฟล์ที่เป็น javascript format ที่กำหนด proxy configuration ไว้ เมื่อใช้ browser เข้าไปยัง path ที่เก็บไฟล์ PAC ไว้ ตัว browser จะทำการอ่านไฟล์นั้นๆ แล้วกระทำการ setting ให้ proxy เป็นไปตามใน PAC file เลย โดยต่อมาก็เปลี่ยนไปเป็นให้การใช้งาน PAC จะกระทำผ่านช่องทางที่เรียกว่า WPAD (Web Proxt Auto Discovery Protocol หรือเรียกอีกชื่อว่า “Proxy Auto-Config”)

WPAD เป็น Protocol ที่ทำให้ user ไม่จำเป็นต้องเอา browser เข้าไปใน path ใดๆเพื่อไปอ่านไฟล์อีกต่อไป WPAD จะทำให้ computer หา query local network จาก server ต่างๆ เพื่อหาว่า PAC  file อยู่ไหนแล้วทำการ load PAC ไฟล์จากที่นั่นแทน ซึ่งมักจะกำหนดได้ผ่าน: DNS, WINS, DHCP เพื่อจะรับ URL ไป หรือจะกระทำผ่าน LLMNR หรือ NetBIOS ก็สามารถทำได้เช่นกัน

การโจมตี

  • การโจมตีผ่าน Local network ผ่าน DHCP: Attacker สามารถปลอมตัวเองเป็น DHCP Server แล้วทำ arp spoofing เพื่อส่ง URL ที่มีการฝัง malicious javascript file ไปให้กับ client เมื่อ client ได้รับ URL มาก็จะไป download PAC file ซึ่งภายในระบุเป็น IP ของ Attacker ไว้ ทำให้ Attacker ก็จะควบคุม traffic ของ client ได้นั่นเอง
  • การโจมตีผ่าน Remote ผ่าน DNS: เมื่อ client ได้รับ WPAD จาก Server มา แล้วในขณะที่ user จะกระทำการ resolve name wpad.server ให้กลายเป็น IP, หาก Attacker สามารถเข้าไปใน network ภายในแล้วเปลี่ยน DNS Query ให้กลายเป็น IP ของ Attacker ได้ ก็จะกลายเป็นการ client วิ่งไปเอา WPAD จาก server ของ Attacker นั่นเอง
  • การโจมตีผ่าน wpad.tld: โดยปกติแล้วหากมีการกำหนด Domain เป็น “laptop01.us.division.company.com” ปกติมันเครื่อง Windows มันจะมีการถามหา WPAD โดยกำหนด Address เป็นแบบนี้ครับ
    • wpad.us.division.company.com
    • wpad.division.company.com
    • wpad.company.com
    • wpad.com
      ถ้าหาก Attacker ไปจด domain แบบนั้นไว้ก็อาจจะสร้าง PAC file แล้วกำหนดทิศทางproxy ของ client ได้เลย

นอกเหนือจากนี้แล้ว Google ยังพบว่า jscript.dll (ตัวที่ใช้ในการ parsing PAC fileและจัดการ javascript อื่นๆ) นั้นมีช่องโหว่ use-after-free และอื่นๆ ซึ่งหลังจาก fuzzing (การใส่ข้อมูลขยะหรือแปลกๆจำนวนมากๆเข้าไปเพื่อดูการตอบสนองของ program) พบว่ามีช่องโหว่ดังนี้

Vulnerability class
Vulnerabilities affecting IE8 mode
Vulnerabilities affecting IE7 mode
Use-after-free
Heap overflow
Uninitialized variable
Out-of-bounds read
Total
7
5

ซึ่งทาง Google ได้แจ้งกับทาง Microsoft แล้ว และทาง Microsoft ก็ได้ออก patch แก้ไขทั้งหมดเป็นที่เรียบร้อยแล้วครับ โดยทาง Google แนะนำว่า หากไม่ใช้งาน WPAD อยู่แล้วก็ขอให้ disable ไปเลย (โดยปกติมันจะ autodiscovery WPAD) โดย

  • ปิดการใช้งาน “Automatically detect settings” ใน Control Panel
  • Setting “WpadOverride” registry key
  • เอา “255.255.255.255 wpad” ไปใส่ไว้ใน hosts file (เพื่อให้หยุดการ resolve DNS แต่จะไม่สามารถกัน DHCP ของ Attacker ได้)

Source:: GoogleProjectZero