Home > Security > การออกแบบการ authen เป็นเรื่องสำคัญ

การออกแบบการ authen เป็นเรื่องสำคัญ

March 20th, 2015

คือ แบบนี้ครับที่ทำงานผมมีระบบสารสนเทศ 2 ระบบ ให้ชื่อว่า ระบบA กับระบบB ละกันครับ
ตอนแรกสองระบบนี่ต่างคนต่างอยู่วิ่งบน vpn ของใครของมัน ทีนี้เกิดการควบรวมเครือข่ายสองระบบ
เข้าด้วยครับ แล้วมีความคิดว่า ถ้าใช้ระบบB ให้สามารถเข้าถึงระบบA ได้เลยไม่ต้อง log in สองครั้ง
ก็น่าจะดี (ทั้งสองระบบเป็น web application ครับ)

ทีนี้โจทย์คือ ระบบB ต้องไม่เก็บ username password ของระบบA ไว้ครับ
ซึ่งตรงนี้ผมไม่ได้เข้าไปมีส่วนร่วมในการออกแบบนะครับ

จนผมไปสังเกตเห็นว่าถ้าเข้าระบบA ผ่านระบบB จะมีการร้องขอ url ไปที่ระบบA
ดังนี้ครับ ค้นมาโดยใช้โปรแกรม นี้ ครับ

https://172.17.2.xx/systemA/systemAConfigManager?user=nlnvEBqG7o0%3D&pwd=3lZatbxCrQ8%3D&link=systemA/xxisa/prepareDAAP0100.do?programID=XXIP01&siteName=systemB

สังเกตใช่ไหมครับว่าส่งไปโดยใช้ get method ส่งค่าที่น่าจะเป็น hash ของ username กับ password
ซึ่งเมื่อลองเข้า url ข้างบนไปปรากฏว่าเข้าได้ครับ ไม่ต้อง log in
กลายเป็นว่าถ้าผมรู้ url ก็สามารถเข้าได้โดยไม่ต้องรู้ username และ password

ตรงนี้เห็นชัดเลยว่าออกแบบไม่ดีครับ เลี่ยงการส่ง username password ที่เป็น plain text ไปแต่ส่งค่า
hash ซึ่งเหมือนกันทุกครั้งก็ไม่มีประโยชน์ครับ เหมือนส่ง plain text ไป แล้วพอมารวมกับการใช้ get method
ทำให้สังเกตง่ายขึ้น และท้ายสุดเครื่องลง ccleaner ครับ แต่ไม่ได้ตั้งค่าให้ลบ history ออกทุกครั้ง
กลายเป็นว่าเกิดเป็นช่องโหว่ให้ใคร ๆ สามารถเข้าถึงระบบได้

(สังเกตพวก fb หรือเว็ปอื่น ๆ ครับเวลา login ไม่ใช้พวก get method หรอกครับ)

อ้อ ทั้งสองระบบนี่ลงทุนหลักร้อยล้านครับ เพราะฉะนั้นมันจำเป็นมาก ๆ ครับ ที่จะมีคนที่เข้าใจเรื่องความปลอดภัย
ร่วมออกแบบหรือ review การทำงานของทุก ๆ ส่วน

Categories: Security Tags:
Comments are closed.