
Redis 8.2.1 के लिए एक्सप्लॉइट, जो पुराने (deprecated) APIs और mutable metatables के माध्यम से Lua सैंडबॉक्स एस्केप को सक्षम करता है, जिससे क्रॉस-यूज़र कमांड निष्पादन संभव होता है।
Redis 8.2.1 पर पुराने Lua API और परिवर्तनीय मेटाटेबल के माध्यम से सैंडबॉक्स एस्केप।
Redis 8.2.1 पुराने Lua बिल्टिन (getfenv, setfenv, newproxy) को स्क्रिप्ट्स के लिए उजागर रखता है और बुनियादी प्रकारों के लिए मेटाटेबल को लॉक करने में विफल रहता है। एक हमलावर साझा मेटाटेबल में विधियाँ इंजेक्ट कर सकता है, विशेषाधिकार प्राप्त वातावरण कैप्चर कर सकता है, और किसी अन्य उपयोगकर्ता की अनुमतियों के साथ कमांड चला सकता है।
redis-cliCVE-2025-46818.lua – पुराने बिल्टिन की उपस्थिति सत्यापित करता है, स्ट्रिंग मेटाटेबल को पैच करता है, और एक हेल्पर उजागर करता है।# सेटअप
redis-cli -h localhost -p 6379 --eval CVE-2025-46818.lua
# इंजेक्टेड हेल्पर को कॉल करें (मान लें कि पीड़ित उपयोगकर्ता के पास उच्च विशेषाधिकार हैं):
redis-cli -h localhost -p 6379 EVAL "return ('test').escalate()" 0
अपेक्षित परिणाम:
8.2.1 पर प्रारंभिक स्क्रिप्ट पुराने API को true के रूप में रिपोर्ट करती है और मेटाटेबल संशोधन की पुष्टि करती है। अनुवर्ती कॉल ACL WHOAMI का आउटपुट लौटाती है (या जो भी विशेषाधिकार प्राप्त कमांड आप बदलते हैं)। Redis 8.2.2 डिफ़ॉल्ट रूप से API को हटा देता है, बुनियादी मेटाटेबल को केवल-पठनीय बना देता है, और प्रयासों को लॉग करता है।
Redis 8.2.2 या बाद के संस्करण में अपग्रेड करें, या अविश्वसनीय उपयोगकर्ताओं के लिए Lua अक्षम करें या lua-enable-deprecated-api no के साथ चलाएँ।