Google-ի ծրագրային ապահովման ինժեներները առաջարկ են ներկայացրել, որը խոստանում է կանխել նախատիպի աղտոտումը, խոցելիության դասը, որը դարձել է վեբ անվտանգության պատուհաս:
Նախատիպի աղտոտումը JavaScript լեզվի թերություն է, որը հարձակվողներին թույլ է տալիս մանիպուլյացիայի ենթարկել այն օբյեկտները, որոնք նրանք չեն վերահսկում կամ մուտք չունեն գործարկման ժամանակ: Խնդիրն առաջանում է օբյեկտների (որոնք օգտագործվում են տվյալների պահպանման ժամանակ պահելու համար) և դրանց գծագրերի (որոնք որոշում են, թե ինչպես պետք է այդ օբյեկտները վարվեն) միջև հստակ սահմանի բացակայությունից:
Միացնել անվտանգ ռեժիմը
Ինչպես բացատրվում է GitHub-ի գրառման մեջ
«առաջարկը ձգտում է մեղմել նախատիպի աղտոտվածությունը՝ ներդնելով «opt-in» անվտանգ ռեժիմ, որն անհնարին է դարձնում նախատիպերին մուտքը՝ օգտագործելով լարային հատկությունների բանալիներ, փոխարենը պահանջում է, որ դրանք հասանելի լինեն մեթոդներով ( Object.getPrototypeOf ) կամ առաջարկվող նորով: սիմվոլի սեփականության բանալիներ»:
Առաջարկի համահեղինակ Սանտյագո Դիասը The Daily Swig- ին ասել է . «Նպատակն է կոտրել հայտնի շահագործման տեխնիկան՝ միաժամանակ հնարավորինս համատեղելի լինելով գոյություն ունեցող ծածկագրերի բազայի հետ, որպեսզի մեղմացումը լայնորեն կիրառվի ինտերնետում»:
TC39 աշխատանքային խումբը, որը պատասխանատու է JavaScript-ի ճշգրտման պահպանման համար, անցյալ շաբաթ կանաչ լույս տվեց 0-ից փուլ 1-ին անցնելու համար՝ սկսելով վավերացման իր հինգ մասից բաղկացած ճանապարհորդության հաջորդ փուլը:
Դիասը բացատրեց. «Սրա կարևորությունն այն է, որ TC39-ը աղտոտվածությունը համարում է խնդիր, որն արժե ուսումնասիրել (և հուսով եմ լուծել): Առաջիկա ամիսների ընթացքում մենք կվերանայենք առաջարկի կոնկրետ ասպեկտները և կկատարենք ճարտարագիտություն՝ գտնելու փոխզիջումների ճիշտ հավասարակշռությունը և հուսով ենք, որ այն հաճելի կդարձնենք ինչպես TC39-ի անդամների, այնպես էլ մշակողների համար:
Երբ առաջարկը հասնում է վերջնական փուլին (փուլ 4), առաջարկը համարվում է վերջնական, և բրաուզերի վաճառողները կարող են փոփոխություններ կատարել իրենց ծրագրաշարում: «Սա իր հերթին ազդանշան է տալիս ծրագրավորողներին, որ սկսեն ընդունել այս նոր մեղմացումը և այն թողարկել արտադրության մեջ», – եզրափակեց Դիասը:
Խորհրդանիշի լուծում
The Daily Swig-ի մայր ընկերության՝ PortSwigger-ի անվտանգության հետազոտող Գարեթ Հեյսը հետաքրքրություն է հայտնել առաջարկների նկատմամբ:
«Սա նախատիպի աղտոտումը կանխելու առաջարկ է՝ ծրագրավորողին հնարավորություն տալով հեռացնել այնպիսի հատկություններ, ինչպիսին __proto__- ն է՝ գործարկելով որոշ կոդ, որը թույլ է տալիս անվտանգ ռեժիմ և հեռացնում այդ հատկությունները», – ասաց Հեյսը:
«Նրանք առաջարկում են օգտագործել սիմվոլներ, որպեսզի կայքը կարողանա շարունակել օգտագործել __proto__ ֆունկցիոնալությունը, որպեսզի կայքը չփչանա, և հարձակվողը չկարողանա տրամադրել այդ նշանները, քանի որ դա կպահանջի JavaScript-ի կատարում»:
Google- ի առաջարկն իր տեսակի մեջ առաջինը չէ: Այնուամենայնիվ, գոյություն ունեցող լուծումները կանխամտածված փոփոխությունները կանխելու համար, ինչպիսիք են Object.freeze-ը , preventExtensions- ը և seal- ը, ունեն մի շարք «բացասական կողմեր, որոնք դժվարացնում են դրանց տեղակայումը», ասվում է Google-ի բլոգի գրառման մեջ, որն ուրվագծում է այս թերությունները:
Աղբյուր՝ https://portswigger.net/