ஜாவாஸ்கிரிப்ட் குறியீட்டில் செயல்களை மறைக்க கண்ணுக்கு தெரியாத யூனிகோட் எழுத்துக்களைப் பயன்படுத்துதல்

இருதரப்பு உரையின் காட்சி வரிசையை மாற்றும் யூனிகோட் எழுத்துகளின் பயன்பாட்டின் அடிப்படையில் ட்ரோஜன் சோர்ஸ் தாக்குதல் முறையைப் பின்பற்றி, மறைக்கப்பட்ட செயல்களை அறிமுகப்படுத்துவதற்கான மற்றொரு நுட்பம் வெளியிடப்பட்டது, இது ஜாவாஸ்கிரிப்ட் குறியீட்டிற்குப் பொருந்தும். புதிய முறையானது "ㅤ" (குறியீடு 0x3164, "HANGUL FILLER") என்ற யூனிகோட் எழுத்தின் பயன்பாட்டை அடிப்படையாகக் கொண்டது, இது ஒரு எழுத்து ஆனால் புலப்படும் உள்ளடக்கம் இல்லை. ஜாவாஸ்கிரிப்ட் மாறி பெயர்களில் பயன்படுத்த ECMAScript 2015 விவரக்குறிப்பிலிருந்து இந்த எழுத்துச் சொந்தமான யூனிகோட் வகை அனுமதிக்கப்படுகிறது, இது Notepad++ மற்றும் VS Code போன்ற பிரபலமான குறியீடு எடிட்டர்களில் உள்ள மற்ற மாறிகளிலிருந்து பிரித்தறிய முடியாத கண்ணுக்குத் தெரியாத மாறிகள் அல்லது புதிய மாறிகளை உருவாக்குவதை சாத்தியமாக்குகிறது.

உதாரணமாக, Node.js இயங்குதளத்திற்கான குறியீடு கொடுக்கப்பட்டுள்ளது, இதில், "ㅤ" என்ற ஒற்றை எழுத்தைக் கொண்ட மாறியைப் பயன்படுத்தி, தாக்குபவர் குறிப்பிட்ட குறியீட்டை இயக்க அனுமதிக்கும் பின்கதவு மறைக்கப்பட்டுள்ளது: app.get( '/network_health', async (req, res) => {const {timeout,ㅤ} = req.query; // உண்மையில் "const { timeout,ㅤ \u3164}" const checkCommands = [ 'ping -c 1 google. com', 'curl -s http:// example.com/',ㅤ // கமாவைத் தொடர்ந்து \u3164 ];

முதல் பார்வையில், காலாவதி மதிப்பு மட்டுமே வெளிப்புற அளவுரு வழியாக அனுப்பப்படுகிறது, மேலும் செயல்படுத்தப்பட வேண்டிய கட்டளைகளுடன் கூடிய வரிசை பாதிப்பில்லாத நிலையான பட்டியலைக் கொண்டுள்ளது. ஆனால் உண்மையில், காலாவதி மாறிக்குப் பிறகு, குறியீட்டு குறியீடு \u3164 உடன் மற்றொரு கண்ணுக்கு தெரியாத மாறியின் மதிப்பு ஒதுக்கப்படுகிறது, இது இயங்கக்கூடிய கட்டளைகளின் வரிசையில் மாற்றாக உள்ளது. எனவே, அத்தகைய கட்டமைப்பின் முன்னிலையில், தாக்குபவர் "https://host:8080/network_health?%E3%85%A4=command" போன்ற கோரிக்கையை பின்கதவைச் செயல்படுத்தி தனது குறியீட்டை இயக்கலாம்.

மற்றொரு எடுத்துக்காட்டு, "ǃ" (ALVEOLAR CLICK) எழுத்து கொடுக்கப்பட்டுள்ளது, இது ஒரு ஆச்சரியக்குறியைக் குறிக்கும் தோற்றத்தை கொடுக்கப் பயன்படுகிறது. எடுத்துக்காட்டாக, Node.js 14 இல் செயல்படுத்தப்படும் போது "if(environmentǃ=ENV_PROD){" என்ற வெளிப்பாடு எப்போதும் உண்மையாகவே இருக்கும், ஏனெனில் இது வேறுபாடுகளைச் சரிபார்க்காது, ஆனால் "environmentǃ" என்ற மாறியை ENV_PROD ஆக அமைக்கிறது. "/", "−", "+", "⩵", "❨", "⫽", "꓿" மற்றும் "∗" ஆகியவை தவறாக வழிநடத்தும் யூனிகோட் எழுத்துக்களில் அடங்கும்.

ஆதாரம்: opennet.ru

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