टेंट चेकिंग

From Vigyanwiki

टेंट चेकिंग कुछ कंप्यूटर प्रोग्रामिंग भाषाओं में एक सुविधा है,[1] जैसे कि पर्ल रूबी या बैलेरिना,[2] जिसे दुर्भावनापूर्ण उपयोगकर्ताओं[3] को होस्ट कंप्यूटर पर कमांड निष्पादित करने से रोककर सुरक्षा बढ़ाने के लिए डिज़ाइन किया गया है। टेंट चेकिंग मुख्य रूप से उन वेब साइटों से जुड़े विशिष्ट सुरक्षा कठिन परिस्थिति को उजागर करती हैं जिन पर एसक्यूएल इंजेक्शन या बफर ओवरफ्लो अटैक दृष्टिकोण जैसी तकनीकों का उपयोग करके हमला किया जाता है।

अवलोकन

टेंट चेकिंग के पीछे की अवधारणा यह है कि कोई भी वेरिएबल जिसे किसी बाहरी उपयोगकर्ता द्वारा संशोधित किया जा सकता है (उदाहरण के लिए प्रपत्र (वेब) में किसी फ़ील्ड द्वारा सेट किया गया वेरिएबल) एक संभावित सुरक्षा कठिन परिस्थिति उत्पन्न करता है। यदि वह वेरिएबल एक अभिव्यक्ति में प्रयोग किया जाता है जो एक दूसरे वेरिएबल को सेट करता है, तो वह दूसरा वेरिएबल अब भी संदिग्ध है। टेंट चेकिंग उपकरण तब वेरिएबल द्वारा वेरिएबल को आगे बढ़ा सकता है जो वेरिएबल की एक सूची बनाते हैं जो संभावित रूप से बाहरी इनपुट से प्रभावित होते हैं। यदि इनमें से किसी भी वेरिएबल का उपयोग खतरनाक कमांड (जैसे एसक्यूएल डेटाबेस या होस्ट कंप्यूटर सूत्र को सीधे कमांड) को निष्पादित करने के लिए किया जाता है, तो टेंट परीक्षक चेतावनी देता है कि प्रोग्राम संभावित रूप से खतरनाक टेंट वेरिएबल का उपयोग कर रहा है। कंप्यूटर प्रोग्रामर खतरनाक इनपुट के चारों ओर एक सुरक्षित दीवार खड़ी करने के लिए प्रोग्राम को फिर से डिज़ाइन कर सकता है।

टेंट चेकिंग को गैर-हस्तक्षेप (सुरक्षा) या सूचना प्रवाह (सूचना सिद्धांत) की अधिक सामान्य अवधारणा के पूर्ण सत्यापन के रूढ़िवादी अनुमान के रूप में देखा जा सकता है।[4] क्योंकि किसी सिस्टम में सूचना प्रवाह को उस सिस्टम के एकल निष्पादन ट्रेस की जांच करके सत्यापित नहीं किया जा सकता है,[5] टेंट विश्लेषण के परिणाम आवश्यक रूप से उस प्रणाली की सूचना प्रवाह विशेषताओं के बारे में अनुमानित जानकारी को दर्शाएंगे जिस पर इसे प्रयुक्त किया गया है।[6]

उदाहरण

निम्नलिखित खतरनाक पर्ल कोड$name वैरिएबल के मान की जाँच न करके एक बड़ी एसक्यूएल इंजेक्शन भेद्यता को खोलता है:

#!/usr/bin/perl
my $name = $cgi->param("name");  # Get the name from the browser
...
$dbh->{TaintIn} = 1;
$dbh->execute("SELECT * FROM users WHERE name = '$name';"); # Execute an SQL query


यदि टैंट चेकिंग चालू है, तो पर्ल कमांड चलाने से मना कर देगा और एक त्रुटि संदेश के साथ बाहर निकल जाएगा, क्योंकि एसक्यूएल क्वेरी में एक टैंटेड वेरिएबल का उपयोग किया जा रहा है। टेंट चेकिंग के बिना, एक उपयोगकर्ता foo'; DROP TABLE users --,अंकित कर सकता है, जिससे एक कमांड चल रहा है जो संपूर्ण डेटाबेस तालिका को हटा देता है। $name के दूषित मान को एसक्यूएल स्ट्रिंग शाब्दिक में एनकोड करना और एसक्यूएल क्वेरी में परिणाम का उपयोग करना अधिक सुरक्षित होगा, यह आश्वासन देते हुए कि $name में एम्बेडेड किसी भी खतरनाक कमांड का मूल्यांकन नहीं किया जाएगा। इसे प्राप्त करने का दूसरा विधि किसी क्वेरी के लिए सभी परिवर्तनीय इनपुट को स्वच्छ करने के लिए तैयार कथन का उपयोग करना है।

ध्यान देने वाली बात यह है कि पर्ल डीबीआई को किसी डेटाबेस हैंडल की TaintInविशेषता सेट करने के साथ-साथ किसी के एसक्यूएल स्ट्रिंग्स की जांच करने के लिए टैंट मोड सक्षम करने की आवश्यकता होती है।[7]

इतिहास

पर्ल ने कम से कम संस्करण 3.0 (1989 में प्रसारित) से निर्धारित समय में टेंट होने का समर्थन किया,[8] चूँकि यह संस्करण 5.0 तक नहीं था (1994 में प्रसारित)[8]कि -T बदलना[1] टैनिंग को एक ही रनटाइम में एकीकृत करते हुए प्रस्तुत किया गया था।

1996 में, नेटस्केप ने नेटस्केप नेविगेटर 3 में जावास्क्रिप्ट के लिए डेटा टैनिंग प्रयुक्त किया।[9] चूँकि, समर्थन को प्रायोगिक माना गया था, इसलिए इसे अक्षम (सक्रिय करने के लिए उपयोगकर्ता के हस्तक्षेप की आवश्यकता होती है) और इससे लाभान्वित होने के लिए स्क्रिप्ट को संशोधित करने के लिए पृष्ठ लेखकों की आवश्यकता होती है। अन्य ब्राउज़र विक्रेताओं ने कार्यक्षमता को कभी प्रयुक्त नहीं किया गया था।

संदर्भ

  1. 1.0 1.1 "पर्लसेक - पर्ल सुरक्षा". Perl 5 development team. Retrieved 2012-05-20.
  2. प्रोग्रामिंग रूबी --- व्यावहारिक प्रोग्रामर गाइड. Addison Wesley Longman. 2001. pp. 253 (Ch. 20).
  3. Inc, WSO2. "बैलेरिना - टेंट चेकिंग". ballerina.io. Retrieved 2022-02-15. {{cite web}}: |last= has generic name (help)
  4. A. Sabelfeld and A. C. Myers, "Language-based information-flow security", IEEE Journal on Selected Areas in Communications, 2003.
  5. J. Ligatti, L. Bauer, D. Walker. "Edit automata: Enforcement mechanisms for run-time security policies". International Journal of Information Security, 2005
  6. T. Terauchi and A. Aiken. "Secure information flow as a safety problem". In 12th International Static Analysis Symposium, September 2005.
  7. "डीबीआई - पर्ल के लिए डाटाबेस स्वतंत्र इंटरफेस". Retrieved 2020-08-29.
  8. 8.0 8.1 "पर्लहिस्ट - पर्ल इतिहास रिकॉर्ड". Perl 5 development team. Retrieved 2020-08-29.
  9. Flanagan, David (1997). JavaScript: The Definitive Guide (2nd ed.). O'Reilly & Associates. p. 321. ISBN 9781565922341. [...] the data-tainting security model is experimental in Navigator 3.0, and is not enabled by default. It is expected to be the default security model in version 4.0 of Navigator, however.


बाहरी संबंध