मई के एक हमले में 84 npm पैकेज दुर्भावनापूर्ण हो गए

अपने एजेंट को प्रोड छूने दें।कुंजियाँ अपने पास रखें।

Sallyport आपके क्रेडेंशियल एक लोकल वॉल्ट में रखता है और एजेंट के बदले API कॉल और SSH कमांड खुद चलाता है। हर रन को आप एक क्लिक या Touch ID से मंज़ूर करते हैं। कोई कमांड नहीं जो सहेजी गई कुंजी दिखाए, और एक्सपोर्ट बटन भी नहीं है।

$brew install --cask olegsotnikov/tap/sallyport

macOS 14+ · Apple Silicon · Apache-2.0 · मुफ़्त · कोई खाता नहीं · कोई क्लाउड नहीं

उन इंजीनियरों के लिए बना जो Claude Code, Cursor या Codex को असली इन्फ़्रास्ट्रक्चर छूने देते हैं

Claude CodeCodexCursorWindsurfClineLangChainCrewAIOpenHandsGooseZed
खुद आज़माएँ

मंज़ूरी वहीं, जहाँ आप पहले से हैं

यह कुंजी हर बार इस्तेमाल पर मंज़ूरी माँगती है। कॉल आपके फ़ैसले का इंतज़ार करता है।

claude · ~/infra

sallyport · http.request

PATCH api.cloudflare.com/client/v4/zones/…/dns_records

कुंजी cloudflare · चिह्नित हर कॉल पर मंज़ूरी

मंज़ूरी का इंतज़ार…

मंज़ूरी ज़रूरी

http.request → api.cloudflare.com

Developer ID Application: Anthropic PBC

claude node zsh

कुंजी:cloudflareहर कॉल पर
कॉल को जाने देने के लिए मंज़ूर करें पर क्लिक करें।या दबाएँ A/D
समस्या

आपका एजेंट अभी आपकी कुंजियाँ पढ़ सकता है

.env में API टोकन, डिस्क पर SSH कुंजियाँ, कॉन्फ़िग फ़ाइलों में OAuth ग्रांट। इन सबको एजेंट और वह हर पैकेज पढ़ सकता है जिसे वह खींचता है, और एक ज़हरीला README इन्हें बाहर ले जाने के लिए काफ़ी है।

सीक्रेट सबके सामने

.env और शेल वेरिएबल में टोकन, डिस्क पर SSH कुंजियाँ, कॉन्फ़िग फ़ाइलों में OAuth टोकन। इन्हें एजेंट, उसकी चाइल्ड प्रोसेस और जो कुछ npm ने आज इंस्टॉल किया, सब पढ़ सकते हैं।

प्रॉम्प्ट इंजेक्शन बन जाता है चोरी

कोई दुर्भावनापूर्ण पेज या README एजेंट से कहता है कि टोकन किसी नई जगह भेज दे, और एजेंट मान जाता है। उसे बनाया ही निर्देश मानने के लिए गया है।

आपको पता चलता है बिल से

बिना गेटवे के इसका कोई रिकॉर्ड नहीं रहता कि एजेंट ने कौन-से कॉल किए, कहाँ भेजे, और उनमें क्या था। चुराई गई कुंजियाँ हफ़्तों बाद सामने आती हैं, किसी और के हिसाब से।

तीन जो हो चुकी हैं

मई 2026

TanStack npm हमला

42 पैकेजों में फैली 84 दुर्भावनापूर्ण वर्ज़न ने इंस्टॉल के वक़्त क्लाउड क्रेडेंशियल, GitHub टोकन और SSH कुंजियाँ बटोरीं, फिर पीड़ितों के अपने पैकेजों के ज़रिए फैल गईं।

2025 का अंत

Shai-Hulud वर्म

समझौता हो चुके npm पैकेजों ने इंस्टॉल पर सीक्रेट चुराए और चुराए गए क्रेडेंशियल से पैकेजों की अगली खेप को संक्रमित किया।

अगस्त 2025

Nx S1ngularity

एक ज़हरीले बिल्ड टूल ने डेवलपर मशीनों को सीक्रेट के लिए स्कैन किया, लोकल AI टूल आज़माए, और लूट को GitHub CLI के ज़रिए बाहर भेज दिया।

तीनों ने कुंजियाँ एनवायरनमेंट वेरिएबल और डिस्क की फ़ाइलों से बटोरीं। Sallyport इस्तेमाल-योग्य कुंजियाँ दोनों से बाहर रखता है।

आपके एजेंट को कुंजियों की ज़रूरत नहीं

एजेंट एक अनुरोध भेजता है: इस API को कॉल करो, उस होस्ट पर यह कमांड चलाओ। Sallyport ऐप के भीतर क्रेडेंशियल जोड़ता है, कॉल चलाता है और नतीजा लौटाता है। कुंजी कभी एजेंट के एनवायरनमेंट में नहीं आती, और एक सील जर्नल दिखाता है कि क्या चला और किसने मंज़ूरी दी।

भरोसे का मॉडल

तयशुदा निर्णय सीढ़ी

हर क्रिया उसी संकलित सीढ़ी पर चढ़ती है। यहाँ न कोई पॉलिसी भाषा है जिसे ग़लत कॉन्फ़िगर किया जा सके, न कोई रूल्स इंजन जो समय के साथ सड़ जाए; एक वैकल्पिक अनुमति-सूची उन कोड पहचानों के लिए सत्र मंज़ूरी को छोड़ सकती है जिन पर आप भरोसा करते हैं।

भरोसे का मॉडल

1

वॉल्ट गेट

वॉल्ट सर्वोपरि है

वॉल्ट लॉक अवस्था में शुरू होता है। Secure Enclave और Touch ID उसके डेटा तक पहुँच को नियंत्रित करते हैं। अनलॉक होने तक Sallyport हर क्रिया अस्वीकार करता है।

2

हर-कॉल कुंजियाँ

चिह्नित कुंजियाँ हर बार पूछती हैं

"हर कॉल पर मंज़ूरी" चिह्नित कुंजी हर इस्तेमाल पर एक क्लिक या Touch ID माँगती है, मंज़ूर हो चुके सत्र के भीतर भी।

3

सत्र गेट

हर एजेंट रन पर एक मंज़ूरी

एक नई एजेंट प्रोसेस अपनी कोड-साइनिंग अथॉरिटी के साथ एक कार्ड दिखाती है। मंज़ूरी तब तक रहती है जब तक प्रोसेस बंद न हो, आप उसे रद्द न करें, या वॉल्ट लॉक न हो जाए।

4

निगरानी

चलाएँ और दर्ज करें

प्रति-सत्र मंज़ूरी बंद होने पर क्रियाएँ सत्र कार्ड के बिना चलती हैं और जर्नल में बनी रहती हैं।

वॉल्ट गेट, हर कॉल पर मंज़ूरी वाली की, सेशन गेट, ऑब्ज़र्व। अगर इसे खरीद-दस्तावेज़ की भाषा में रखना हो: नॉन-ह्यूमन आइडेंटिटी के लिए ज़ीरो स्टैंडिंग प्रिविलेज, जस्ट-इन-टाइम दिया गया एक्सेस, और लूप में एक इंसान।

अंदर क्या है

सब कुछ एक हस्ताक्षरित ऐप में आता है

एक हस्ताक्षरित Mac ऐप वॉल्ट, मंज़ूरियाँ और जर्नल रखता है। न कोई खाता बनाना है, न इसके पीछे कोई क्लाउड सेवा है।

पूर्ण वॉल्ट गेट

लॉक रहते हुए Sallyport हर एजेंट क्रिया और स्टेटस को छोड़कर सभी प्रबंधन ऑपरेशन अस्वीकार करता है।

डिस्क पर एन्क्रिप्टेड

वॉल्ट कुंजी नामों, प्रदाताओं, होस्ट बाइंडिंग, SSH इन्वेंटरी, सेटिंग्स और सीक्रेट मानों को एन्क्रिप्ट करता है।

प्रोसेस का स्रोत

हर कार्ड कॉल करने वाले की कोड-साइनिंग अथॉरिटी और पैरेंट चेन दिखाता है, किसी भी अहस्ताक्षरित प्रोसेस समेत।

बदलावों के लिए Touch ID

कॉन्फ़िगरेशन बदलावों के लिए Touch ID ज़रूरी किया जा सकता है। कोई कृत्रिम क्लिक बायोमेट्रिक प्रॉम्प्ट को पूरा नहीं कर सकता।

राइट-ब्लाइंड जर्नल

Sallyport एजेंट रन और हर-कॉल गतिविधि को लिखते समय ही एन्क्रिप्ट करता है, फिर सिफरटेक्स्ट को हैश चेन से जोड़ता है।

SSH जो कमांड देखता है

Sallyport पूरी SSH कमांड देखता है, होस्ट कुंजी जाँचता है और सत्र रिकॉर्डिंग सील करता है। प्राइवेट कुंजी ऐप में ही रहती है।

निगरानी मोड

निगरानी मोड सत्र कार्ड हटा देता है लेकिन वॉल्ट गेट, हर-कॉल मंज़ूरी और जर्नल बनाए रखता है।

कोई रिकवरी नहीं

वॉल्ट में न एक्सपोर्ट है, न रिवील, न रिकवरी कुंजी। इसे खो दें तो सहेजे गए क्रेडेंशियल उनके प्रदाताओं से दोबारा जारी कराएँ।

चैनल

HTTP, SSH और MCP

आपका एजेंट Sallyport से एक सामान्य MCP सर्वर की तरह जुड़ता है। वह जो कुछ करता है, वही सीढ़ी चढ़कर उसी जर्नल में जाता है।

HTTP API

http.request → api.github.com

ऐप HTTPS कॉल करता है और क्रेडेंशियल सिर्फ़ एक्ज़ीक्यूशन के दौरान डालता है। दूसरे होस्ट पर रीडायरेक्ट उसे साथ नहीं ले जाते।

SSH

ssh.exec → deploy@prod-03

एक स्टेटलेस हेल्पर कनेक्शन खोलता है। ऐप SSH हस्ताक्षर संभालता है, होस्ट कुंजियाँ पिन करता है और सत्र रिकॉर्डिंग सील करता है; प्राइवेट कुंजी हेल्पर में नहीं जाती।

MCP सर्वर

github.create_issue

लोकल stdio या रिमोट MCP सर्वरों को उसी गेट से प्रॉक्सी करें। Sallyport OAuth 2.1 टोकन सील करता और रिफ़्रेश करता है।

आँकड़ों में

दाँव पर क्या है

84

एक ही npm हमले में दुर्भावनापूर्ण पैकेज वर्ज़न, जो क्रेडेंशियल का शिकार कर रहे थे

0

खाते, क्लाउड सेवाएँ या टेलीमेट्री: Sallyport पूरी तरह आपके Mac पर चलता है

1 टैप

Touch ID एक चिह्नित कॉल को मंज़ूर करता है; कोई कृत्रिम क्लिक इसकी नकल नहीं कर सकता

~2 मिनट

brew install से लेकर आपके पहले गेटेड कॉल तक

ओपन सोर्स

वह कोड पढ़िए जो आपकी चाबियाँ रखता है

वॉल्ट, मंज़ूरी का गेट, जर्नल, और वह एक्ज़ीक्यूटर जो आपके क्रेडेंशियल को छूता है, सब Apache-2.0 के तहत सार्वजनिक हैं। क्लोन कीजिए और एक चाबी को अपने Touch ID टैप से तार तक पीछा कीजिए।

Apache-2.0 · पूरा का पूरा

ख़ुद ऑडिट कीजिए

जो भी लाइन क्रेडेंशियल रखती, खोलती या ख़र्च करती है, वह GitHub पर है। जो हिस्से आपको खटकते हैं उन्हें पढ़िए, फिर तय कीजिए।

कुछ भी बाहर नहीं जाता

न अकाउंट, न क्लाउड सेवा, न टेलीमेट्री। Sallyport सिर्फ़ उन्हीं होस्ट से बात करता है जिन पर आप उसे लगाते हैं।

हमेशा आपका

Apache-2.0 का मतलब है: फ़ोर्क कीजिए, पैच कीजिए, अपनी कंपनी के भीतर चलाइए। आगे हम जो भी करें, आपकी कॉपी चलती रहेगी।

सामान्य प्रश्न

अक्सर पूछे जाने वाले प्रश्न

Sallyport का लाइसेंस कैसा है?
Sallyport डाउनलोड और इस्तेमाल के लिए मुफ़्त है। कोर Apache-2.0 के तहत ओपन सोर्स है। नियोजित एंटरप्राइज़ कॉम्पोनेंट एक व्यावसायिक लाइसेंस के तहत होंगे।
मेरे सीक्रेट कहाँ रहते हैं?
आपके Mac पर एक लोकल वॉल्ट में। Secure Enclave और Touch ID वॉल्ट एन्क्रिप्शन कुंजी तक पहुँच को नियंत्रित करते हैं। Sallyport सीक्रेट मानों और मेटाडेटा को डिस्क पर एन्क्रिप्ट करता है और वॉल्ट डेटा अपलोड नहीं करता।
क्या यह अपने सर्वर से संपर्क करता है?
नहीं। न कोई क्लाउड सेवा है, न खाता, न टेलीमेट्री। Sallyport ऑफ़लाइन काम करता है, सिवाय उन सेवाओं के जिन्हें आप ख़ुद बताते हैं और अपडेट फ़ीड के।
सिस्टम आवश्यकताएँ क्या हैं?
Apple Silicon वाला एक Mac जिस पर macOS 14 या नया चल रहा हो। Intel Mac समर्थित नहीं हैं।
वॉल्ट लॉक रहते हुए क्या होता है?
एजेंट क्रियाएँ रुक जाती हैं। प्रबंधन अनुरोध सिर्फ़ स्टेटस लौटाते हैं; बाक़ी सभी ऑपरेशन अस्वीकार हो जाते हैं। अनलॉक के लिए Touch ID चाहिए, और लॉक करने पर सत्र और लंबित मंज़ूरियाँ साफ़ हो जाती हैं।
क्या यह Claude Code और दूसरे एजेंट के साथ काम करता है?
कोई भी MCP क्लाइंट बंडल किए गए sp mcp शिम का इस्तेमाल करके http.request, ssh.exec और कॉन्फ़िगर किए गए अपस्ट्रीम MCP सर्वरों तक पहुँच सकता है। हम मुख्य रूप से Claude Code, Cursor और Codex पर टेस्ट करते हैं।
क्या मैं Claude Code को --dangerously-skip-permissions के साथ चला सकता हूँ?
जिस फ़्लैग को लोग YOLO मोड कहते हैं, वह Claude Code के अपने कन्फ़र्मेशन प्रॉम्प्ट बंद कर देता है। आपके क्रेडेंशियल पर उसका कोई असर नहीं: वे .env फ़ाइलों और शेल वेरिएबल्स में वैसे ही पड़े हैं, जिन्हें एजेंट हमेशा से पढ़ सकता था। वे प्रॉम्प्ट कभी आपकी चाबियों की सुरक्षा थे ही नहीं। एजेंट को Sallyport पर लगा दीजिए, फिर उसके एनवायरनमेंट में कोई चाबी बचती ही नहीं जिसे लाँघा जाए।
क्या किसी के ऑनलाइन डाले हुए MCP सर्वर को इंस्टॉल करना सुरक्षित है?
इसे किसी भी डिपेंडेंसी की तरह देखिए: यह आपके अधिकारों के साथ चलता है, और इसके टूल विवरण निर्देश बनकर मॉडल के संदर्भ में जा गिरते हैं। इसे Sallyport से गुज़ारिए, फिर इसकी हर कॉल को मंज़ूरी चाहिए और हर कॉल जर्नल में दर्ज होती है। लोकल stdio सर्वर वही क्रेडेंशियल पाते हैं जो आप उनसे बाँधते हैं, इसलिए सबसे संकरा वाला बाँधिए और उसे हर कॉल पर मंज़ूरी के लिए चिह्नित कर दीजिए।
यह HashiCorp Vault या 1Password CLI से कैसे अलग है?
वे सीक्रेट अच्छी तरह रखते हैं, और फिर सौंप देते हैं। op run और vault read दोनों का अंत एक ही है: क्रेडेंशियल अगले प्रोसेस के एनवायरनमेंट में पहुँच जाता है, और आपकी मशीन पर वह प्रोसेस एजेंट है। Sallyport उसे सौंपता नहीं; वह खुद कॉल करता है और जवाब लौटा देता है। चाहें तो दोनों चलाइए: सोर्स ऑफ़ ट्रुथ जहाँ है वहीं रहने दीजिए, और जिस कॉपी से एजेंट काम करता है वह Sallyport के पास रहे।
क्या एजेंट कभी मेरी कुंजियाँ देख सकता है?
नहीं। कोई कमांड सहेजा हुआ क्रेडेंशियल नहीं दिखाती, न एक्सपोर्ट है, न रिकवरी का रास्ता। Sallyport वही लौटाता है जो लक्ष्य सेवा ने जवाब दिया, इसलिए जो सेवा अपने ही जवाब में आपकी चाबी लौटा दे, वह आपको अपना बग दिखा रही है, और जर्नल आपको वह कॉल दिखा देता है जिसने उसे पकड़ा।
अगर मैं अपने Mac तक पहुँच खो दूँ तो?
कोई रिकवरी कुंजी नहीं है। वॉल्ट दोबारा शुरू करें और क्रेडेंशियल उनके प्रदाताओं से दोबारा जारी कराएँ।

आपका एजेंट आपकी कुंजियों से बस एक प्रॉम्प्ट इंजेक्शन दूर है।

मुफ़्त डाउनलोड। Apple Silicon, macOS 14 या नया। कोई खाता नहीं, कभी नहीं।

$brew install --cask olegsotnikov/tap/sallyport

macOS 14+ · Apple Silicon

Sallyport

Sallyport आपके AI एजेंट के लिए API कॉल और SSH कमांड चलाता है। कुंजियाँ आपके Mac पर एक लोकल वॉल्ट में रहती हैं; आप हर रन को स्वीकृत करते हैं और हर क्रिया एक सीलबंद जर्नल में दर्ज होती है।

© 2026 Sallyport · Apache-2.0 के तहत ओपन सोर्स · Oleg Sotnikov