Cloudflare యొక్క cdnjs కంటెంట్ డెలివరీ నెట్వర్క్లో క్లిష్టమైన దుర్బలత్వం గుర్తించబడింది, ఇది JavaScript లైబ్రరీల డెలివరీని వేగవంతం చేయడానికి రూపొందించబడింది, CDN సర్వర్లపై ఏకపక్ష కోడ్ అమలును అనుమతిస్తుంది. ఇంటర్నెట్లోని అన్ని సైట్లలో దాదాపు 12.7% జావాస్క్రిప్ట్ లైబ్రరీలను డౌన్లోడ్ చేయడానికి సేవను ఉపయోగిస్తున్నందున సమస్య యొక్క ప్రమాదం తీవ్రతరం చేయబడింది మరియు మౌలిక సదుపాయాల యొక్క రాజీ ఈ సైట్లలో ఏదైనా అందించిన లైబ్రరీలను భర్తీ చేయడం సాధ్యపడుతుంది.
cdnjs సేవ Git లేదా NPM రిపోజిటరీ నుండి ప్యాకేజీలను డౌన్లోడ్ చేస్తుంది, ఆ తర్వాత జావాస్క్రిప్ట్ లైబ్రరీల లోడ్ను వేగవంతం చేయడానికి క్లౌడ్ఫ్లేర్ కంటెంట్ డెలివరీ నెట్వర్క్ను ఉచితంగా ఉపయోగించడానికి ఏదైనా సైట్ని అనుమతిస్తుంది. GitHubలో ప్రచురించబడిన cdnjs భాగాల కోడ్ను అధ్యయనం చేస్తున్నప్పుడు, tgz ఆర్కైవ్లలో NPM ప్యాకేజీలను అన్ప్యాక్ చేయడానికి, గో భాషలోని ప్రామాణిక ఆర్కైవ్/టార్ మాడ్యూల్ ఉపయోగించబడుతుంది, ఇది మార్గం సాధారణీకరణ లేకుండా ఫైల్ల జాబితాను యధాతథంగా ఉత్పత్తి చేస్తుంది. స్క్రిప్ట్ ఇచ్చిన జాబితా ఆధారంగా కంటెంట్లను అన్ప్యాక్ చేసినప్పుడు, “../../../../../../../tmp/test” వంటి ఫైల్ల ఆర్కైవ్లో ఉనికిని కలిగి ఉంటుంది యాక్సెస్ హక్కులు అనుమతించినంత వరకు సిస్టమ్లో ఏకపక్ష ఫైల్లను ఓవర్రైట్ చేయడానికి దారి తీస్తుంది.
దాడి చేసే వ్యక్తి తన లైబ్రరీని cdnjsకి జోడించడానికి దరఖాస్తు చేసుకోవచ్చని మరియు NPM రిపోజిటరీకి వెళ్లే మార్గంలో “../” అక్షరాలతో ఫైల్లను కలిగి ఉన్న ప్రత్యేకంగా రూపొందించిన ఆర్కైవ్ను అప్లోడ్ చేయవచ్చని సూచించబడింది. cdnjs సర్వర్లలో, "ఆటోఅప్డేట్" ఆపరేషన్ క్రమానుగతంగా నిర్వహించబడుతుంది, ఈ సమయంలో హ్యాండ్లర్ ప్రతిపాదిత లైబ్రరీ యొక్క కొత్త వెర్షన్లను డౌన్లోడ్ చేస్తుంది మరియు కంటెంట్లను అన్ప్యాక్ చేస్తుంది. “../” మార్గాలతో ఉన్న ఫైల్లను ఉపయోగించి, దాడి చేసే వ్యక్తి సర్వీస్ స్క్రిప్ట్లతో ఫైల్లను ఓవర్రైట్ చేయవచ్చు మరియు అన్ప్యాకింగ్ చేసిన సర్వర్లో వాటి కోడ్ను అమలు చేయవచ్చు.
Git నుండి నవీకరణలను డౌన్లోడ్ చేసే విషయంలో, Git నుండి ఫైల్లను కాపీ చేసేటప్పుడు నవీకరణలను డౌన్లోడ్ చేసే హ్యాండ్లర్ సింబాలిక్ లింక్లను పరిగణనలోకి తీసుకోలేదని కనుగొనబడింది. ఈ ఫీచర్ Gitకి సింబాలిక్ లింక్లను జోడించడం ద్వారా సర్వర్ నుండి ఏదైనా ఫైల్ల రీడింగ్ని నిర్వహించడం సాధ్యం చేసింది.
ఫైల్ రీడింగ్కు సంబంధించిన పరికల్పనను పరీక్షించడం ద్వారా హ్యాకర్వన్లో బహుమతిని అందుకోవడానికి హ్యాకింగ్ cdnjల ప్రదర్శనతో ప్రయోగాలు ప్రారంభించాలని నిర్ణయించారు. CDN ద్వారా అందించబడిన JavaScript లైబ్రరీ యొక్క Git రిపోజిటరీకి ఒక సింబాలిక్ లింక్ test.js జోడించబడింది, ఇది /proc/self/maps ఫైల్ను సూచిస్తుంది. లైబ్రరీ యొక్క కొత్త సంస్కరణను ప్రచురించిన తర్వాత, అప్డేట్ హ్యాండ్లర్ ఈ రిపోజిటరీని ప్రాసెస్ చేసి, పేర్కొన్న ఫైల్ను cdnjsలో ప్రచురించారు (test.js సింబాలిక్ లింక్గా సృష్టించబడింది మరియు ఈ ఫైల్ అభ్యర్థించబడినప్పుడు, /proc/self/maps యొక్క కంటెంట్లు తిరిగి ఇవ్వబడ్డాయి. )
ఫైల్ /proc/self/environకు సింబాలిక్ లింక్ను ప్రత్యామ్నాయంగా ఉంచడం ద్వారా, ఇచ్చిన డేటాలో GITHUB_REPO_API_KEY మరియు WORKERS_KV_API_TOKEN అనే ఎన్విరాన్మెంట్ వేరియబుల్స్ విలువలు ఉన్నాయని అధ్యయన రచయిత గమనించారు. మొదటి వేరియబుల్ GitHubపై robocdnjs రిపోజిటరీకి రైట్ యాక్సెస్ కోసం API కీని నిల్వ చేసింది. రెండవ వేరియబుల్ cdnjsలో KV నిల్వకు టోకెన్ను నిల్వ చేసింది. అందుకున్న సమాచారాన్ని ఉపయోగించి, దాడి చేసే వ్యక్తి cdnjలకు మార్పులు చేయవచ్చు మరియు మౌలిక సదుపాయాలను పూర్తిగా రాజీ చేయవచ్చు.
మూలం: opennet.ru