Օգտագործելով անտեսանելի unicode նիշերը JavaScript-ի կոդում գործողությունները թաքցնելու համար

Հետևելով Trojan Source հարձակման մեթոդին, որը հիմնված է Unicode նիշերի օգտագործման վրա, որոնք փոխում են երկկողմանի տեքստի ցուցադրման կարգը, հրապարակվել է թաքնված գործողությունների ներդրման մեկ այլ տեխնիկա, որը կիրառելի է JavaScript կոդի համար: Նոր մեթոդը հիմնված է «ㅤ» (կոդ 0x3164, «HANGUL FILLER») յունիկոդ նիշի օգտագործման վրա, որը պատկանում է տառերի կատեգորիային, բայց չունի տեսանելի բովանդակություն։ Unicode կատեգորիան, որին պատկանում է այս նիշը, թույլատրված է ECMAScript 2015-ի ճշգրտումից ի վեր JavaScript փոփոխականների անուններում օգտագործելու համար, ինչը հնարավորություն է տալիս ստեղծել անտեսանելի փոփոխականներ կամ նոր փոփոխականներ, որոնք չեն տարբերվում այլ փոփոխականներից հանրաճանաչ կոդերի խմբագրիչներում, ինչպիսիք են Notepad++-ը և VS Code-ը:

Որպես օրինակ՝ տրված է Node.js պլատֆորմի կոդը, որում, օգտագործելով «ㅤ» մեկ նիշից բաղկացած փոփոխական, թաքնված է հետնադուռ, որը թույլ է տալիս կատարել հարձակվողի կողմից նշված կոդը՝ app.get('/: network_health', async (պ. com', 'curl -s http:// example.com/',ㅤ // ստորակետին հաջորդում է նշանը \u3164 ];

Առաջին հայացքից արտաքին պարամետրով փոխանցվում է միայն ժամանակի դադարի արժեքը, իսկ կատարվող հրամաններով զանգվածը պարունակում է անվնաս ֆիքսված ցուցակ: Բայց փաստորեն, ժամանակի վերջնաժամկետից հետո նշանակվում է մեկ այլ անտեսանելի փոփոխականի արժեքը նիշերի կոդով \u3164, որը նույնպես փոխարինվում է գործարկվող հրամանների զանգվածում: Այսպիսով, եթե այդպիսի դիզայնը հասանելի է, հարձակվողը կարող է ուղարկել հարցում, ինչպիսին է «https://host:8080/network_health?%E3%85%A4=command»՝ ակտիվացնելու հետևի դուռը և գործարկելու իրենց կոդը:

Մեկ այլ օրինակ է «ǃ» (ԱԼՎԵՈԼԱՅԻՆ ԿԼԻԿ) նիշը, որը կարող է օգտագործվել բացականչական նշան ցույց տալու համար։ Օրինակ, «if(environmentǃ=ENV_PROD){» արտահայտությունը, երբ գործարկվում է Node.js 14-ում, միշտ ճիշտ կլինի, քանի որ այն չի ստուգում տարբերությունը, այլ «environmentǃ» փոփոխականին վերագրում է ENV_PROD արժեքը: Unicode-ի այլ մոլորեցնող նիշերը ներառում են «/», «−», «+», «⩵», «❨», «⫽», «꓿» և «∗»:

Source: opennet.ru

Добавить комментарий