บริษัทด้านความปลอดภัย Duo ได้ทำการเผยแพร่ช่องโหว่ของ Two-factor-authentication หรือการพิสูจน์ตัวตนโดยใช้ 2 ปัจจัยหลักของกูเกิล หลังจากได้ทำการแจ้งไปยังฝ่ายความปลอดภัยตั้งแต่ช่วงเดือนกรกฎาคมปีที่แล้ว และได้รับการแก้ไขในวันที่ 21 ที่ผ่านมา โดยช่องโหว่นี้ทำให้ผู้โจมตีสามารถเข้าถึงบัญชีผู้ใช้ของเหยื่อได้อย่างสมบูรณ์หากมีการเปิดใช้งาน Application-Specific-Passwords (ASPs) และมีการใช้การเข้าระบบอัตโนมัติไว้
ตามหลักของการใช้ ASPs ผู้ใช้งานจำเป็นต้องสร้างคีย์ขึ้นมาหนึ่งตัวเพื่อใช้กับแอพพลิเคชันต่างๆ และตัวแอพพลิเคชันนั้นจะทำการใช้คีย์นี้เพื่อพิสูจน์ตัวตนกับทางเซิร์ฟเวอร์ โดยประเด็นหลักอยู่ที่การเข้าระบบอัตโนมัติที่สามารถข้ามผ่าน Two-factor-authentication ได้ และสามารถเข้าถึงบัญชีผู้ใช้ได้เลย โดยในการศึกษาต่อนั้นได้ทำการจำลองสถานการณ์ที่คีย์ของ ASPs หลุด โดยทำการแก้ไขรูปแบบจากการใช้ EncryptedPasswd ซึ่งเป็นคีย์ของ ASPs ที่ถูกเข้ารหัสโดย RSA 1024-bit มาเป็นพารามิเตอร์ Passwd (อ้างอิงจาก ClientLogin API) ก็จะทำให้ได้รับ token ที่สามารถใช้ในการยืนยันตัวตนได้ ซึ่งช่องโหว่ในส่วนนี้ยังพบในฟังก์ชันล็อกอินอัตโนมัติของเบราว์เซอร์เช่นกัน
โดยในขณะนี้ทางกูเกิลได้ทำการแก้ไขแล้ว ทั้งจากการปัญหาการล็อคอินอัตโนมัติ หากมีการพยายามจะล็อกอินผ่านช่องทาง MergeSession หรืออื่น ๆ ก็จะมีการบังคับให้กรอกบัญชีผู้ใช้ รหัสผ่าน และระบบของ Two-factor-authentication ดังเดิม
ที่มา - Duo Security
Comments
อ่านบทความต้นฉบับมาก่อนหน้านี้แล้ว พอสรุปได้ประมาณนี้นะครับ
ต้องท้าวความก่อนว่า Google มี 2-factor authentication คือการยึนยันตัวแบบสองปัจจัย คือ something you know และ something you have ยกตัวอย่างง่ายๆ อย่าง ATM ครับ เราจะต้องมีบัตร ATM คือ something you have กับรหัส ATM คือ something you know ซึ่งคนที่จะเอา ATM ไปใช้ได้ก็ต้องมีทั้งสองอย่าง มีอย่างเดียวไม่ได้ ปกติเราจะเข้า Google กันด้วยปัจจัยเดียว คือรหัสผ่าน ซึ่งเราสามารถไปเปิด 2 factor ได้ในหน้าตั้งค่าผู้ใช้ครับ โดย something you have ที่ google ใช้ก็คือโทรศัพท์ของเรา ซึ่งจะมีสองแบบคือ พอ login ด้วยรหัสปกติแล้ว Google จะ SMS มาให้ว่าต้องกรอกอะไร กับแบบที่สองคือใช้แอพบนมือถือ (Google Authenticator โหลดฟรีครับ Android/iOS เหมือน BB ก็มี) ซึ่งจะมีรหัสที่เปลี่ยนทุก 30 วินาทีขึ้นมาให้กรอก
ทีนี้ถ้าใครใช้ Chrome บนคอม หรือบนมือถือ เวลาเข้าหน้า Login ของ Google น่าจะเคยเห็นนะครับว่าจะมีแถบขึ้นมาให้เรา sign in ด้วย account ที่ตั้ง sync ไว้อยู่
ตรงนี้ล่ะครับเป็นตัวปัญหา ก็เพราะว่า เวลาจะเข้าไปแก้รหัสผ่าน หรือปลด 2 factor นั้น เราจำเป็นจะต้องผ่านหน้า Login ไปก่อน ถึงจะเคย Login แล้วก็ตาม แต่ browser ก็ช่วยเราด้วยการมีแถบเหลืองๆ นั่นให้เรากด Sign in ได้เลย โดยไม่ต้องใส่รหัสผ่าน ก็ทำให้ว่าถ้าเราเคยไป sign in ใน chrome แล้วลืม logout คนอื่นสามารถเข้าเว็บ google ไป ใช้แถบเหลืองทะลุหน้าล็อคอินได้ทุกชั้น และไปปิด 2 factor หรือตั้ง recovery email ใหม่ได้ แล้วก็ใช้การลืมรหัสผ่านเพื่อขอรหัสใหม่ทางอีเมลที่ตั้งใหม่นี้
ทีนี้ต่อมาคือ ใครที่ใช้ two factor เนี่ย มันจะยุ่งยากขึ้นครับเพราะว่าแอพหลายๆ ตัวมันใส่รหัส OTP (รหัส two factor) ไม่ได้ ฉะนั้นแล้ว Google เลยแก้ด้วยการให้เราไปออก application specific password (ASP) มาได้ ก็คือรหัสผ่านที่ใช้ใส่เข้าช่อง login ของ google ได้ทุกที่ ยกเว้นในหน้าเว็บ google เอง เราสามารถออกกี่อันก็ได้ ถ้าหลุดรั่วไปก็สามารถยกเลิกเป็นอันๆ ได้
ในเว็บเค้าก็ทำการศึกษาต่อมาครับว่า ถ้าเกิดรหัส ASP หลุดออกมาจะทำอะไรได้ ก็เลยไปศึกษา protocol การ auto login ของ chrome for android ครับ ก็พบว่าจริงๆ แล้ว เราสามารถเอารหัสอันนี้เนี่ยยิงเข้าไปที่ API ของ Google ปุ๊บ สามารถจะ login เข้า Google บนเว็บได้เลย ซึ่งความตั้งใจแล้ว ASP ไม่สามารถ login บนหน้าเว็บได้ครับ ใช้กับอุปกรณ์อื่นๆ เท่านั้น เช่นการ sync IMAP, SMTP, CalDAV, CardDAV, XMPP
Google ออกมาแก้ไขช่องโหว่นี้ไม่นานนี้ครับ โดยจะเก็บสถานะว่า Login ผ่านวิธีใด หากใช้ Auto Login ก็จะไม่อนุญาตให้ผ่านหน้าที่เข้าไปแก้ไขการตั้งค่าบัญชีสำคัญๆ อยู่ดี
ขอบคุณครับ รู้สึกว่าผมจะมุ่งผิดประเด็นไป
.
มนตรี?
ยาวกว่าข่าว แต่ก็ขอบคุณที่อธิบายครับ ไม่งันงงแน่ๆ
อธิบายละเอียดดี ขอบคุณครับ
อคติทำให้คนรับเหตุผลด้านเดียว
ชอบการขยายความครับ มิเช่นนั้นใครไม่ได้ศึกษามาเรื่องนี้โดยตรงมึนแน่นอน
เมื่อกี้เพิ่งเตือนให้ทำ Phone Verification หมาดๆ = =