Վերադառնալ

GitHub-ի թոքենի գողացում մեկ սեղմումով՝ VSCode-ի սխալի միջոցով
SiTech AI Team2 րոպե ընթերցում

GitHub-ի թոքենի գողացում մեկ սեղմումով՝ VSCode-ի սխալի միջոցով

Անվտանգության հետազոտողը նկարագրել է հարձակում, որի ժամանակ մեկ սեղմումով հղումը գողանում է GitHub-ի թոքեն՝ զոհի, այդ թվում՝ փակ ռեպոզիտորիաներում կարդալու և գրելու իրավունքով. Microsoft-ը ուղղումները թողարկել է հունիսի 3-ին։

Անվտանգության հետազոտողը հրապարակել է հարձակման մանրամասներ, որի դեպքում հղումով մեկ սեղմումը բավական է գողանալու GitHub-ի մուտքի թոքենը՝ այն թոքենը, որը զոհի ռեպոզիտորիաներում, ներառյալ փակ ռեպոզիտորիաներում, ընթերցելու և գրելու իրավունք է տալիս։ Նյութը հրապարակվել է հետազոտողի բլոգում և VSCode-ի խնդիրների հետևիչում հունիսի 2-ին։

Սխալը մեկուսացման մեջ

Թիրախը github.dev-ն է՝ GitHub-ի բրաուզերային խմբագրիչը. այնտեղ ցանկացած ռեպոզիտորիա բացելը վեբ հավելվածին փոխանցում է OAuth թոքեն, որը github.com-ը ուղարկում է github.dev-ին։ Այդ թոքենը սահմանափակված չէ ձեր բացած ռեպոզիտորիայով, ուստի մուտք է տալիս բոլոր այն ռեպոզիտորիաներին, որոնց հասանելիություն ունի մուտք գործած օգտատերը։ Սովորաբար VSCode-ը իր webview-ներում աշխատող կոդը (Markdown-ի նախադիտում, Jupyter-ի նոթատետրեր) պահում է այլ ծագման iframe-ում՝ մեկուսացված գլխավոր խմբագրիչից։ Սխալն այն է, որ webview-ները ստեղնաշարի իրադարձությունները ծնող պատուհանին փոխանցում են VSCode-ի հաղորդագրությունների API-ով, ուստի անվստահելի webview-ում աշխատող սկրիպտը կարող է ստեղների սեղմման իմիտացիա անել, որը խմբագրիչը ընկալում է որպես օգտատիրոջ գործողություն։

Նոթատետրի բջիջից՝ գողացված թոքեն

Ապացույցի համար բավական է միայն ռեպոզիտորիա, որը պարունակում է Jupyter-ի նոթատետր և «տեղական աշխատանքային տարածքի ընդլայնում»։ Markdown-ի բջիջը, որի նկարի թեգի onerror մշակիչը JavaScript է գործարկում, սկսում է շղթան. սկրիպտը սպասում է VSCode-ի՝ առաջարկվող ընդլայնումների ծանուցմանը, ուղարկում է Ctrl+Shift+A՝ դրա հիմնական գործողությունը հաստատելու համար, և տեղադրում է տեղական ընդլայնումը՝ ուղի, որը շրջանցում է հրատարակչի վստահության ստուգումը, քանի որ աշխատանքային տարածքն ինքնին վստահելի է համարվում։ Այնուհետև այդ ընդլայնումն ավելացնում է իր սեփական ստեղների զուգակցումը, որը կանչում է ընտրված ընդլայնումը խանութից տեղադրելու հրամանը՝ բաց թողնելով հրատարակչի ստուգումը. տեղադրված ընդլայնումը կարդում է GitHub-ի թոքենը և հարցում է ուղարկում api.github.com/user/repos-ին՝ ցույց տալով փակ ռեպոզիտորիաները, որոնց թոքենը հասանելիություն ունի։ Նույն սխալը կա նաև VSCode-ի աշխատասեղանի տարբերակում, սակայն այն օգտագործելն ավելի դժվար է. զոհը պետք է կլոնավորի ռեպոզիտորիան և բացի նոթատետրը, իսկ webview-ում XSS սխալի հետ միասին դա արդեն հեռավոր կոդի կատարում է նշանակում։

Ուղղումներ և խորհուրդներ

Microsoft-ը հունիսի 3-ին թողարկել է ժամանակավոր ուղղում. վեբ խմբագրիչում նոթատետրերը բացելիս ավելացվել է հաստատման քայլ, և հրամաններն այլևս չեն կարող շրջանցել հրատարակչի վստահությունը։ Նույն օրը հրապարակվել է ավելի ամբողջական ուղղում, որը դադարեցնում է keydown իրադարձությունների տարածումը նոթատետրի webview-ներից։ Օգտատերերին, ովքեր երբեք չեն բացել github.dev-ը, խորհուրդ է տրվում ջնջել դրա cookie-ները և կայքի տվյալները. սկզբնական մուտքի երկխոսությունից հետո, ինչպես նշում է հետազոտողը, խմբագրիչը պաշտպանող CSRF թոքեններ չկան, ուստի ինտերնետում ցանկացած հղում կարող է բրաուզերը ուղղորդել այս հարձակմանը։ Հեղինակը նաև ընդգծում է VSCode-ի բազմաշերտ պաշտպանության դերը՝ խիստ բովանդակության անվտանգության քաղաքականություն և Markdown-ի մաքրում, և բացատրում հրապարակայնորեն բացահայտելու որոշումը. նախորդ հաղորդումը լուծվել էր լուռ՝ առանց հեղինակի հիշատակման։

SiTech

SiTech — AI-ով հզորացված վեբ մշակում

Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։