npm 12 స్క్రిప్ట్ ఎగ్జిక్యూషన్ను మారుస్తోంది
19 ఏళ్లుగా, npm install కోడ్ను ఆటోమేటిక్గా రన్ చేసేది. ఇది preinstall మరియు postinstall వంటి lifecycle hooks ను ఉపయోగించేది. మీరు ఒక ప్యాకేజీని డౌన్లోడ్ చేసిన వెంటనే, మీరు కోడ్ను సమీక్షించకముందే అది స్క్రిప్ట్లను రన్ చేసేది.
npm 12తో ఈ ట్రస్ట్ మోడల్ ముగిసిపోతుంది.
జూలై 2026 నుండి, GitHub 'opt-out' నుండి 'opt-in' మోడ్కు మారుతోంది. ఈ మార్పు మీ సప్లై చైన్ను అటాకర్ల నుండి రక్షిస్తుంది.
npm 12లో ఏమి మారుతుందో ఇక్కడ చూడండి:
- preinstall లేదా postinstall వంటి dependency scripts ఆటోమేటిక్గా రన్ అవ్వవు. వాటిని అనుమతించడానికి మీరు తప్పనిసరిగా
npm approve-scriptsఉపయోగించాలి. - node-gyp ద్వారా జరిగే native module builds డిఫాల్ట్గా బ్లాక్ చేయబడతాయి. మీరు వాటిని స్పష్టంగా అనుమతించాలి.
- Git మరియు remote URL dependencies ఆటోమేటిక్గా రిజాల్వ్ అవ్వవు. మీకు
--allow-gitలేదా--allow-remoteఫ్లాగ్ అవసరం. - కొత్త
min-release-ageసెట్టింగ్ ద్వారా మీరు కొత్త ప్యాకేజీ వెర్షన్లను బ్లాక్ చేయవచ్చు. ఒక ప్యాకేజీ సరిగ్గా పరిశీలించబడేంత పాతదిగా ఉండేలా మీరు టైమర్ను సెట్ చేయవచ్చు.
అటాకర్లు ప్రస్తుతం ఉన్న ఈ విధానాన్ని దుర్వినియోగం చేస్తున్నారు. ఇటీవల axios యొక్క ఒక హానికరమైన (malicious) వెర్షన్, ఇన్స్టాలేషన్ జరిగిన ఒక సెకను తర్వాత రన్ అయ్యే ఒక టూల్ను పంపింది. అది మూడు గంటల పాటు యాక్టివ్గా ఉంది. లక్షలాది మంది వినియోగదారులను ప్రమాదంలో పడేయడానికి అంత సమయం సరిపోతుంది.
మీరు ఇప్పుడే సిద్ధం కావచ్చు. మీరు npm 11.16.0 లేదా అంతకంటే ఎక్కువ వెర్షన్ ఉపయోగిస్తుంటే, ఈ కమాండ్ను రన్ చేయండి:
npm approve-scripts --allow-scripts-pending
ఏ dependencies స్క్రిప్ట్లను రన్ చేస్తున్నాయో ఇది మీకు చూపిస్తుంది. మీరు నమ్మదగిన వాటిని ఆమోదించి, వాటిని మీ package.jsonలో సేవ్ చేసుకోవచ్చు. ఈ బ్రేకింగ్ చేంజ్ (breaking change) రాకముందే ఇది చేయండి.
Source: https://dev.to/ranjansingh41/npm-12-will-change-script-execution-behavior-to-prevent-attacks-45lg
Optional learning community: https://t.me/GyaanSetuAi