Cloudflare சேவையகங்களில் குறியீட்டை செயல்படுத்த அனுமதிக்கும் cdnjs இல் பாதிப்பு

Cloudflare இன் cdnjs உள்ளடக்க விநியோக நெட்வொர்க்கில் ஒரு முக்கியமான பாதிப்பு அடையாளம் காணப்பட்டுள்ளது, இது JavaScript நூலகங்களின் விநியோகத்தை விரைவுபடுத்த வடிவமைக்கப்பட்டுள்ளது, CDN சேவையகங்களில் தன்னிச்சையான குறியீடு செயல்படுத்தலை அனுமதிக்கிறது. இணையத்தில் உள்ள அனைத்து தளங்களிலும் சுமார் 12.7% ஜாவாஸ்கிரிப்ட் நூலகங்களைப் பதிவிறக்க சேவையைப் பயன்படுத்துவதால் சிக்கலின் ஆபத்து அதிகரிக்கிறது, மேலும் உள்கட்டமைப்பின் சமரசம் இந்த தளங்களில் ஏதேனும் வழங்கிய நூலகங்களை மாற்றுவதை சாத்தியமாக்குகிறது.

cdnjs சேவையானது Git அல்லது NPM களஞ்சியத்திலிருந்து தொகுப்புகளைப் பதிவிறக்குகிறது, அதன் பிறகு ஜாவாஸ்கிரிப்ட் லைப்ரரிகளை ஏற்றுவதை விரைவுபடுத்த Cloudflare உள்ளடக்க விநியோக நெட்வொர்க்கை இலவசமாகப் பயன்படுத்த எந்த தளத்தையும் அனுமதிக்கிறது. GitHub இல் வெளியிடப்பட்ட cdnjs கூறுகளின் குறியீட்டைப் படிக்கும் போது, ​​tgz காப்பகங்களில் NPM தொகுப்புகளைத் திறக்க, Go மொழியில் உள்ள நிலையான காப்பகம்/தார் தொகுதி பயன்படுத்தப்படுகிறது, இது பாதை இயல்பாக்கம் இல்லாமல் கோப்புகளின் பட்டியலை உருவாக்குகிறது. கொடுக்கப்பட்ட பட்டியலின் அடிப்படையில் ஸ்கிரிப்ட் உள்ளடக்கங்களைத் திறக்கும் போது, ​​"../../../../../../../tmp/test" போன்ற கோப்புகளின் காப்பகத்தில் இருப்பது சாத்தியமாகும். அணுகல் உரிமைகள் அனுமதிக்கும் வரை, கணினியில் தன்னிச்சையான கோப்புகளை மேலெழுத வழிவகுக்கும்.

தாக்குபவர் தனது நூலகத்தை cdnjs இல் சேர்க்க விண்ணப்பிக்கலாம் மற்றும் NPM களஞ்சியத்திற்கு செல்லும் பாதையில் "../" எழுத்துகள் கொண்ட கோப்புகளைக் கொண்ட சிறப்பாக வடிவமைக்கப்பட்ட காப்பகத்தைப் பதிவேற்றலாம் என்று பரிந்துரைக்கப்பட்டது. cdnjs சேவையகங்களில், "தானியங்கு புதுப்பிப்பு" செயல்பாடு அவ்வப்போது செய்யப்படுகிறது, இதன் போது கையாளுபவர் முன்மொழியப்பட்ட நூலகத்தின் புதிய பதிப்புகளைப் பதிவிறக்கி உள்ளடக்கங்களைத் திறக்கிறார். “../” பாதைகளைக் கொண்ட கோப்புகளைப் பயன்படுத்தி, தாக்குபவர் சேவை ஸ்கிரிப்ட்களுடன் கோப்புகளை மேலெழுதலாம் மற்றும் அவற்றின் குறியீட்டை திறக்கப்பட்ட சேவையகத்தில் செயல்படுத்தலாம்.

Git இலிருந்து புதுப்பிப்புகளைப் பதிவிறக்கும் விஷயத்தில், புதுப்பிப்புகளைப் பதிவிறக்கும் கையாளுபவர் Git இலிருந்து கோப்புகளை நகலெடுக்கும் போது குறியீட்டு இணைப்புகளை கணக்கில் எடுத்துக்கொள்ளவில்லை என்பது கண்டறியப்பட்டது. இந்த அம்சம் Git க்கு குறியீட்டு இணைப்புகளைச் சேர்ப்பதன் மூலம் சேவையகத்திலிருந்து எந்தக் கோப்புகளையும் வாசிப்பதை ஒழுங்கமைக்கச் செய்தது.

கோப்பு வாசிப்பு தொடர்பான கருதுகோளைச் சோதிப்பதன் மூலம் HackerOne இல் பரிசைப் பெறுவதற்கு cdnjகளை ஹேக்கிங் செய்யும் செயல்விளக்கத்துடன் சோதனைகளைத் தொடங்க முடிவு செய்யப்பட்டது. /proc/self/maps கோப்பைச் சுட்டிக்காட்டி, CDN வழியாக வழங்கப்படும் JavaScript நூலகத்தின் Git களஞ்சியத்தில் ஒரு குறியீட்டு இணைப்பு test.js சேர்க்கப்பட்டுள்ளது. நூலகத்தின் புதிய பதிப்பை வெளியிட்ட பிறகு, அப்டேட் ஹேண்ட்லர் இந்தக் களஞ்சியத்தை செயலாக்கி, குறிப்பிட்ட கோப்பை cdnjs இல் வெளியிட்டார் (test.js ஒரு குறியீட்டு இணைப்பாக உருவாக்கப்பட்டது, இந்தக் கோப்பு கோரப்பட்டபோது, ​​/proc/self/maps இன் உள்ளடக்கங்கள் திருப்பி அனுப்பப்பட்டன. )

/proc/self/environ கோப்புக்கு ஒரு குறியீட்டு இணைப்பை மாற்றியமைத்து, கொடுக்கப்பட்ட தரவுகளில் GITHUB_REPO_API_KEY மற்றும் WORKERS_KV_API_TOKEN ஆகிய சுற்றுச்சூழல் மாறிகளின் மதிப்புகள் இருப்பதை ஆய்வின் ஆசிரியர் கவனித்தார். GitHub இல் robocdnjs களஞ்சியத்திற்கான எழுத்து அணுகலுக்கான API விசையை முதல் மாறி சேமித்தது. இரண்டாவது மாறி, டோக்கனை கேவி சேமிப்பகத்திற்கு cdnjs இல் சேமித்தது. பெறப்பட்ட தகவலைப் பயன்படுத்தி, தாக்குபவர் cdnjகளில் மாற்றங்களைச் செய்யலாம் மற்றும் உள்கட்டமைப்பை முழுமையாக சமரசம் செய்யலாம்.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்