Ցուցադրվել է VSCode կոդի խմբագրիչի վրա հարձակվելու մեթոդ, որը թույլ է տալիս կամայական ֆայլեր փոխանցել ընթացիկ օգտատիրոջ իրավունքների շրջանակում՝ խմբագրում հատուկ մշակված սկզբնական կոդը բացելիս: Այս ցուցադրությունում Rust կոդը բացելիս, որն օգտագործում է ընթացակարգային մակրո, այն կապ է հաստատում 127.0.0.1:8080 հոսթի հետ և ուղարկում է «~/.ssh/id_rsa» ֆայլի բովանդակությունը օգտվողի SSH ստեղներով:
Փոխզիջման համար բավական է պարզապես բացել ֆայլը կոդով՝ առանց նախագծի հետ որևէ այլ գործողություն կատարելու։ Որպեսզի օրինակն աշխատի, VSCode-ը պահանջում է Rust-analyzer plugin (պարտադիր rustc-ի ստանդարտ կոմպիլյատորի վերևում) և համակարգում գործիքների առկայությունը Rust լեզվով կոդի հետ աշխատելու համար: Խնդիրը կապված է նախնական ծածկագրի վերլուծության ընթացքում ընթացակարգային մակրոների ընդլայնման հետ։ Նմանատիպ էֆեկտ կարելի է ձեռք բերել նաև կոմպիլյացիայի ժամանակ՝ օգտագործելով «cargo build» հրամանը։
Նշվում է, որ խնդիրը կարող է ազդել այլ կոդերի խմբագրիչների և ծրագրավորման լեզուների վրա։ VSCode-ը և Rust-analyze-ն օգտագործվում են միայն հարձակման վեկտորը ցուցադրելու համար: Տեսականորեն, ցանկացած կոդի խմբագիր, որը բացահայտում է ընթացակարգային մակրոները, որոնք թույլ են տալիս ստեղծել շարահյուսական ընդարձակումներ և կատարել կոդը կոմպիլյացիայի ժամանակ, ենթակա է խնդրին: Հետազոտողն ի սկզբանե ուսումնասիրել է կոդերի կազմման ժամանակ վնասակար գործողությունների հավանականությունը, սակայն պարզել է, որ ընթացակարգային մակրոները ընդլայնվել են, երբ սկզբնական կոդը մշակվել է կոդերի խմբագրիչներում: Հարձակումը, հավանաբար, կարող է ազդել ծրագրավորման այլ լեզուների վրա, օրինակ, Java-ում ծանոթագրությունների մշակումը կարող է կիրառվել նույն կերպ.

Source: opennet.ru
