- vet एक CLI टूल है जो
curl | bash शैली में रिमोट install script चलाने को "डाउनलोड → समीक्षा → निष्पादन स्वीकृति" प्रक्रिया में सुरक्षित रूप से बदलता है
- यह script change history (diff) की जाँच, shellcheck-आधारित lint (static analysis), और direct approval (जाँच के बाद execution) जैसी चरणबद्ध सुरक्षा सुविधाएँ देता है
- एक ही कमांड (
vet https://example.com/install.sh) से रिमोट script चलाने से पहले संभावित जोखिम, छेड़छाड़, टाइपो और कमजोरियों की स्वतः जाँच की जा सकती है
- installation के लिए भी यह स्वयं "डाउनलोड के बाद समीक्षा" और "curl | sh" दोनों तरीके सपोर्ट करता है, और vet की अपनी install code भी सीधे देखी जा सकती है
- यह development/operations environment में security risk की रोकथाम और automation/सुविधा दोनों को साथ में हासिल करने वाला एक भरोसेमंद समाधान है
समस्या: बिना सोचे-समझे रिमोट install script चलाना
- कई open source प्रोजेक्ट और टूल
curl -sSL https://example.com/install.sh | bash जैसी रिमोट script installation विधि सुझाते हैं
- इस तरीके में script से छेड़छाड़, server hack, network error आदि के कारण malicious code execution, partial file execution जैसी गंभीर security risk मौजूद रहती हैं
vet का समाधान: सुरक्षित interactive execution
installation विधि
सुरक्षित अनुशंसित तरीका (डाउनलोड → समीक्षा → निष्पादन)
- 1. install script डाउनलोड करें:
- 2. डाउनलोड की गई script के code की स्वयं समीक्षा करें (
less, vim आदि से):
less install_vet.sh
- 3. समीक्षा के बाद स्वयं चलाएँ:
sh install_vet.sh
तेज़ installation (trust-आधारित one-liner)
vet की विशेषताएँ और फायदे
- change detection (diff): पहले चलाई गई script से तुलना करके नए बदले हिस्सों को देखा जा सकता है
- automatic lint (shellcheck integration): shell script की vulnerability, टाइपो और संदिग्ध code का स्वतः निदान
- explicit execution approval (Confirm): एक क्लिक/इनपुट से वास्तविक execution को सीधे नियंत्रित किया जा सकता है
- automatic script save और history management: अक्सर इस्तेमाल होने वाली install scripts को भी सुरक्षित रूप से track किया जा सकता है
- अंदरूनी तौर पर सुरक्षित installation/update की भी गारंटी
निष्कर्ष
- vet developers और operators दोनों के लिए ज़रूरी
curl | bash का सुरक्षित विकल्प है, जो installation automation और security दोनों को संभव बनाता है
- "बस ऐसे ही मत चलाइए, vet से verify करके चलाइए!"
1 टिप्पणियां
Hacker News राय
# shellcheck disable=pragma डालता रहे तो क्या होगा, यह सवाल है# shellcheck disable=कोड के insertion को पकड़ा जा सकता है। यह बदलाव अपने आप में warning sign हैinstall.shsource सीधे देखा जा सकता है.netrcsupport,VET_TOKENenvironment variable, और आगे चलकर HashiCorp Vault जैसे secret manager integration भी roadmap में हैं। दिलचस्पी हो तो GitHub issue में राय सुनना चाहूँगा। फ़ीडबैक के लिए धन्यवादless, या अगरbatinstalled हो तो बेहतर highlighting वाला pager), और गलती से edit न हो जाए इसलिए editor में नहीं खोलता। अगर ShellCheck कोई समस्या पकड़ता है, तो उसे सीधे terminal में रंगीन तरीके से दिखाता है। फिर यह पूछता है कि review जारी रखना है या नहीं,[y/N]के रूप में। उदाहरण: अच्छे सुझाव के लिए धन्यवादcurl | bashpattern की तरह अपने-आप काम नहीं करता। Windows में जब उपयोगकर्ता कुछ install करने की कोशिश करता है, तो वहाँ फ़ाइल अपने-आप scan करने की सुविधा होती हैcurl | bashpattern असहज लगा, और लगा कि ऐसा tool होना चाहिए जो script बदलने पर diff दिखाए, shellcheck चलाए, और उपयोगकर्ता से स्पष्ट अनुमति माँगे। इसलिए vet बनाया। installation में भी वही सिद्धांत लागू किए। install script ज़रूर पढ़ें, यही सिफ़ारिश है। फ़ीडबैक का स्वागत है। repo है https://github.com/vet-run/vetwget -qO- https://getvet.shसे डाउनलोड करने पर servertext/htmlलौटा रहा है)। मैं तो उल्टा install.sh को सीधे लाने की सलाह दूँगा। फ़ीडबैक के जवाब में, "ऐसे करके देखें" के तौर पर यह bash tip साझा की गई: इस तरीके में bash जब भी कुछ execute करने की कोशिश करता है, हर बार अनुमति माँगता है। लंबी scripts में यह झंझट भरा हो सकता है, इसलिए जो commands सुरक्षित लगें उनके लिए whitelist रखी जा सकती है, याrememberoption के साथ इसे customize किया जा सकता है।sudoके मामले में, malware यह चाल चल सकता है कि पहले किसी innocuous command मेंsudoचलाकर credentials cache में रख ले, और बाद में बिना किसी warning केsudocommand फिर चला दे। इसलिएsudo -kसे session cache साफ़ करके unknown program चलाना ज़्यादा सुरक्षित है