ఇతరుల ప్యాకేజీలను మోసగించడానికి అనుమతించే RubyGems.orgలో దుర్బలత్వం

RubyGems.org ప్యాకేజీ రిపోజిటరీలో ఒక క్లిష్టమైన దుర్బలత్వం (CVE-2022-29176) గుర్తించబడింది, ఇది సరైన అధికారం లేకుండా, చట్టబద్ధమైన ప్యాకేజీ యొక్క యాంక్‌ను ప్రారంభించడం ద్వారా మరియు దాని స్థానంలో లోడ్ చేయడం ద్వారా రిపోజిటరీలోని కొంతమంది వ్యక్తుల ప్యాకేజీలను భర్తీ చేయడానికి అనుమతిస్తుంది. అదే పేరు మరియు సంస్కరణ సంఖ్యతో మరొక ఫైల్.

దుర్బలత్వాన్ని విజయవంతంగా ఉపయోగించుకోవడానికి, మూడు షరతులను నెరవేర్చాలి:

  • వారి పేరులో హైఫన్ ఉన్న ప్యాకెట్లపై మాత్రమే దాడి చేయవచ్చు.
  • దాడి చేసే వ్యక్తి తప్పనిసరిగా హైఫన్ క్యారెక్టర్‌కు ముందు పేరులో కొంత భాగంతో రత్న ప్యాకేజీని ఉంచగలగాలి. ఉదాహరణకు, దాడి "rails-html-sanitizer" ప్యాకేజీపై ఉంటే, దాడి చేసే వ్యక్తి తప్పనిసరిగా తన స్వంత "rails-html" ప్యాకేజీని రిపోజిటరీలో ఉంచాలి.
  • దాడి చేయబడిన ప్యాకేజీ తప్పనిసరిగా గత 30 రోజులలోపు సృష్టించబడి ఉండాలి లేదా 100 రోజుల వరకు అప్‌డేట్ చేయబడి ఉండాలి.

"యాంక్" యాక్షన్ హ్యాండ్లర్‌లోని లోపం వల్ల ఈ దుర్బలత్వం ఏర్పడింది, ఇది హైఫన్ తర్వాత పేరులోని భాగాన్ని ప్లాట్‌ఫారమ్ పేరుగా వివరిస్తుంది, ఇది పేరులోని భాగానికి సరిపోలే విదేశీ ప్యాకేజీల తొలగింపును ప్రారంభించడం సాధ్యం చేసింది. హైఫన్ ముందు. ప్రత్యేకించి, "యాంక్" హ్యాండ్లర్ కోడ్‌లో, ప్యాకేజీలను కనుగొనడానికి 'find_by!(పూర్తి_పేరు: "#{rubygem.name}-#{slug}")" కాల్ ఉపయోగించబడింది, అయితే "స్లగ్" పరామితి ద్వారా పాస్ చేయబడింది తొలగించాల్సిన సంస్కరణను నిర్ణయించడానికి ప్యాకేజీ యజమాని. "rails-html" ప్యాకేజీ యజమాని వెర్షన్ "1.2.3"కి బదులుగా "sanitizer-1.2.3"ని పేర్కొనవచ్చు, దీని వలన మరొకరి ప్యాకేజీ "rails-html-sanitizer-1.2.3కి ఆపరేషన్ వర్తించబడుతుంది. ".

తెలిసిన ఓపెన్ సోర్స్ ప్రాజెక్ట్‌లలో భద్రతా సమస్యలను కనుగొనడం కోసం HackerOne యొక్క ఔదార్య కార్యక్రమంలో భాగంగా భద్రతా పరిశోధకుడు ఈ సమస్యను గుర్తించారు. మే 5న RubyGems.orgలో సమస్య పరిష్కరించబడింది మరియు డెవలపర్‌ల ప్రకారం, గత 18 నెలలుగా లాగ్‌లలోని దుర్బలత్వం యొక్క దోపిడీ జాడలను వారు ఇంకా గుర్తించలేదు. అదే సమయంలో, ఇప్పటివరకు ఉపరితల ఆడిట్ మాత్రమే నిర్వహించబడింది మరియు భవిష్యత్తులో మరింత లోతైన ఆడిట్ ప్రణాళిక చేయబడింది.

మీ ప్రాజెక్ట్‌లను తనిఖీ చేయడానికి, Gemfile.lock ఫైల్‌లో కార్యకలాపాల చరిత్రను విశ్లేషించాలని సిఫార్సు చేయబడింది; పేరు మరియు సంస్కరణను లేదా ప్లాట్‌ఫారమ్ యొక్క మార్పుతో మార్పుల సమక్షంలో హానికరమైన కార్యాచరణ వ్యక్తీకరించబడుతుంది (ఉదాహరణకు, రత్నం పేరు ఉన్నప్పుడు -1.2.3 ప్యాకేజీ జెమ్‌నేమ్-1.2.3-జావాకు నవీకరించబడింది). నిరంతర ఇంటిగ్రేషన్ సిస్టమ్‌లలో దాచిన ప్యాకేజీ ప్రత్యామ్నాయం నుండి రక్షించడానికి లేదా ప్రాజెక్ట్‌లను ప్రచురించేటప్పుడు, డెవలపర్‌లు డిపెండెన్సీలను పరిష్కరించడానికి “-ఫ్రోజెన్” లేదా “-డిప్లాయ్‌మెంట్” ఎంపికలతో బండ్లర్‌ను ఉపయోగించమని సిఫార్సు చేస్తారు.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి