એક સુરક્ષા સંશોધકે 24 ઓપન-સોર્સ MCP (Model-Control-Protocol) સર્વર પ્રોજેક્ટ્સ સ્કેન કરીને એક જ પરંતુ ગંભીર સેન્ડબોક્સ કમાન્ડ-ઇન્જેક્શન ખામી શોધી કાઢી છે, જે CVSS સ્કેલ પર 9.8 સ્કોર કરે છે. આ બગ AgenticX માં છે, જે એક મિડ-ટિયર AI-એજન્ટ ફ્રેમવર્ક છે, અને તે હુમલાખોરને સર્વર ચલાવતા Docker કન્ટેનરમાં મનસ્વી શેલ કમાન્ડ ઇન્જેક્ટ કરવાની મંજૂરી આપે છે.
MCP સર્વર્સ શા માટે મહત્વના છે
MCP એ એવું જોડાણ (glue) છે જે સ્વાયત્ત AI એજન્ટ્સને બાહ્ય સાધનો—ફાઇલો, ડેટાબેઝ, બ્રાઉઝર્સ વગેરે સાથે વાતચીત કરવા દે છે. ડેવલપર્સ તેમના એપ્લિકેશન્સમાં MCP સર્વર એમ્બેડ કરે છે જેથી લેંગ્વેજ મોડલને વાસ્તવિક સંસાધનો (real-world resources) વાંચવાની, લખવાની અને તેના પર કાર્ય કરવાની ક્ષમતા મળે. પ્રોટોકોલ પોતે હળવો (lightweight) અને વ્યાપકપણે અપનાવવામાં આવેલો છે, પરંતુ દરેક પ્રોજેક્ટના મેન્ટેનર્સ તેની આસપાસના કોડને સુરક્ષિત કરવા માટે જવાબદાર હોય છે.
Cline અથવા Aider જેવા મોટા પાયાના MCP અમલીકરણો (implementations) પહેલેથી જ નિયમિત ઓડિટ મેળવે છે અને તેમની પાસે પરિપક્વ સુરક્ષા પ્રક્રિયાઓ છે. અહીં તપાસવામાં આવેલા 24 પ્રોજેક્ટ્સ GitHub પર "મિડ-ટિયર" રેન્જમાં છે, જેમાં 100 થી 1,000 સ્ટાર્સ છે. તે રિપોઝીટરીઓ ઘણીવાર સુરક્ષિત કોડને બદલે ઝડપી ફીચર ડિલિવરીને પ્રાધાન્ય આપે છે, જે એવા વપરાશકર્તાઓ માટે અંધવિંદુ (blind spot) બનાવે છે જેઓ માને છે કે કોઈપણ ઓપન-સોર્સ MCP સર્વર ડિફોલ્ટ રીતે સુરક્ષિત છે.
સ્કેન
સંશોધકે એક સ્કેનર બનાવ્યું જે પાંચ ક્લાસિક વેબ-એપ એટેક પેટર્ન શોધતું હતું:
- કમાન્ડ ઇન્જેક્શન
- પાથ ટ્રેવર્સલ
- સર્વર-સાઇડ રિક્વેસ્ટ ફોર્જરી (SSRF)
- SQL ઇન્જેક્શન
- સેન્ડબોક્સ એસ્કેપ
5,911 સોર્સ ફાઇલો પર સ્કેનર ચલાવવાથી શરૂઆતમાં 94 એલર્ટ્સ મળ્યા હતા. મેન્યુઅલ ટ્રાયેજ (manual triage) પછી, માત્ર એક જ એલર્ટ વાસ્તવિક નબળાઈ (vulnerability) તરીકે સાબિત થયું.
AgenticX બગની અંદર
AgenticX યુઝર દ્વારા આપવામાં આવેલી સ્ટ્રિંગ્સને Python f-strings માં ઇન્ટરપોલેટ કરીને શેલ કમાન્ડ બનાવે છે, અને પછી પરિણામને સીધું કન્ટેનરના શેલમાં મોકલે છે. ફાઇલ પાથનું કોઈ વેરિફિકેશન કે ક્વોટિંગ થતું નથી. તેથી, એક એડવર્સરીયલ પ્રોમ્પ્ટ (adversarial prompt) સેમીકોલન અથવા અન્ય શેલ મેટાકેરેક્ટર ઇન્જેક્ટ કરી શકે છે, જેનાથી કન્ટેનર હુમલાખોર પસંદ કરે તે કોઈપણ કમાન્ડ ચલાવી શકે છે.
સંશોધકે આ રીતે કોડને પેચ કર્યો:
- લેંગ્વેજ મોડલ દ્વારા આપવામાં આવેલા કોઈપણ પાથને સુરક્ષિત રીતે એસ્કેપ કરવા માટે
shlex.quote()નો ઉપયોગ કરીને. - કમાન્ડ બનાવતા પહેલા પાથ-ટ્રેવર્સલ પેટર્ન (
../) માટે સ્પષ્ટ ચેક ઉમેરીને.
ફિક્સ કર્યા પછી સ્કેનર ફરીથી ચલાવવાથી જોખમનું સ્તર નાટકીય રીતે ઘટ્યું હતું, જે પુષ્ટિ કરે છે કે આ ઉપાય મૂળ કારણને ઉકેલે છે.
કોણ જીતે છે, કોણ હારે છે
- AI ડેવલપર્સ જેઓ તેમના ઉત્પાદનોમાં MCP સર્વર એમ્બેડ કરે છે, તેમની પાસે હવે એક નક્કર ઉદાહરણ છે કે કેવી રીતે સેનિટાઈઝેશનનો એક નાનો સ્ટેપ આખી સુરક્ષા સાંકળ તોડી શકે છે. લેંગ્વેજ મોડલમાંથી આવતા દરેક પેરામીટરને અનટ્રસ્ટેડ ઇનપુટ તરીકે ગણો, જેમ તમે કોઈપણ બાહ્ય API પેલોડને ગણો છો.
વાર્તાની બીજી બાજુ
સંશોધક ભાર મૂકે છે કે MCP પ્રોટોકોલ પોતે સુરક્ષિત છે. આ ખામી વાયર ફોર્મેટમાં ડિઝાઈન નબળાઈ નથી પરંતુ ચોક્કસ અમલીકરણમાં કોડિંગની ભૂલ છે. મોટા, સારી રીતે ઓડિટ થયેલા પ્રોજેક્ટ્સએ પહેલેથી જ સમાન સમસ્યાઓનું નિરાકરણ લાવી દીધું છે, અને ઓપન-સોર્સ સમુદાય AgenticX પેચમાંથી શીખી શકે છે. તેમ છતાં, આ ઘટના દર્શાવે છે કે "મિડ-ટિયર" પ્રોજેક્ટ્સમાં સ્ટાર કાઉન્ટ ઓછું હોવા છતાં ઉચ્ચ-અસરકારક બગ હોઈ શકે છે.
મુખ્ય વાત (Takeaway)
AgenticX માં એક અનચેક્ડ f-string એ આખા MCP સર્વરને મનસ્વી કોડ એક્ઝિક્યુશન માટેના લોન્ચપેડમાં ફેરવી દીધું. આ ઘટના સાબિત કરે છે કે AI-એજન્ટ ઇકોસિસ્ટમની સુરક્ષા પ્રોટોકોલ પર ઓછી અને શિસ્તબદ્ધ અમલીકરણ પર વધુ આધાર રાખે છે. ડેવલપર્સે દરેક LLM-જનરેટેડ પેરામીટરને દુશ્મન (hostile) તરીકે ગણવો જોઈએ, પ્લેટફોર્મ્સ દ્વારા રનટાઇમ સેફગાર્ડ્સ લાગુ કરવા જોઈએ, અને સુરક્ષા સાધનોએ AI એજન્ટ્સ દ્વારા બનાવવામાં આવતી અનોખી ટ્રસ્ટ ચેઇન્સને સમજવા માટે વિકસિત થવાની જરૂર છે.
સ્ત્રોત: dev.to/easterndev/i-scanned-24-mcp-server-projects-and-found-a-real-sandbox-command-injection-cvss-98-4k9h
