9

मैंने हाल ही में "All You Ever Wanted to Know about Dynamic Taint Analysis and Forward Symbolic Execution (but Might Have Been Afraid to Ask)" शीर्षक Dr. EJ Schwartz द्वारा एक पेपर पढ़ा है। पेपर में, उन्होंने मुख्य रूप से बाइनरी स्तर सुरक्षा संदर्भ में उनके अनुप्रयोगों के बारे में बात की।प्रतीकात्मक निष्पादन और तनाव विश्लेषण के बीच अंतर क्या हैं?

मैं गतिशील कलंक विश्लेषण और आगे प्रतीकात्मक निष्पादन के बीच मतभेदों के बारे में सटीक उत्सुक हूँ।

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

मैं देख सकता हूं कि बाइनरी स्तर पर, के कारण भेद्यता का अक्सर भेद्यता का उल्लेख किया जाता है; जबकि प्रतीकात्मक निष्पादन ऐसे पूर्णांक अतिप्रवाह, क्रम अभिकथन त्रुटियों के रूप में कमजोर मुद्दों के अधिक प्रकार के साथ सौदा कर सकते हैं, संसाधन (जैसे, स्मृति रिसाव, फ़ाइल खोलने/बंद), बफर अतिप्रवाह रिसाव।

हालांकि ऐसा लगता है कि आधुनिक कलंक विश्लेषण करता है न केवल शामिल है डाटा प्रवाह विश्लेषण, उनमें से ज्यादातर नियंत्रण प्रवाह की स्थिति को ट्रैक करेगा; और कई भेद्यता पहचान परिदृश्यों में दंडित इनपुट को प्रतीकात्मक मूल्य के रूप में भी दर्शाया जाता है और प्रतीकात्मक निष्पादन के तरीके के रूप में प्रचारित किया जाता है। दूसरी तरफ, प्रतीकात्मक निष्पादन इंजन अंतर्निहित बाधा हलकों की सीमाओं और निष्पादन/व्याख्या रनटाइम की सीमाओं के कारण अलग-अलग पथ स्थितियों से अलग प्रतीकात्मक मानों का पूरी तरह से उपयोग नहीं कर सकते हैं; इस प्रकार वे उच्च शाखा या पथ कवरेज के रूप में कवरेज प्राप्त नहीं कर सकते हैं।

तो सामान्य मामलों में, हम कह सकते हैं कि कलंक विश्लेषण मोटे प्रतीकात्मक निष्पादन, या प्रतीकात्मक निष्पादन का एक प्रकार सटीक कलंक विश्लेषण का एक प्रकार है?

+0

स्टैक एक्सचेंज कंप्यूटर साइंस या स्टैक एक्सचेंज रिवर्स इंजीनियरिंग में इस प्रश्न को पोस्ट करने के लिए एक शॉट के लायक हो सकता है। – stackoverflowwww

उत्तर

2

दिलचस्प सवाल! यहां मेरे 2 सेंट हैं: प्रतीकात्मक निष्पादन पथ बाधाओं का निर्माण करने के लिए एक प्रकार के रंग विश्लेषण का उपयोग करता है। प्रतीकात्मक निष्पादन चर और/या इनपुट के लिए ठोस मूल्य उत्पन्न करने के लिए एक एसएमटी/एसएटी सॉल्वर को भी नियोजित करता है, जैसे कि एक निश्चित पथ बाधा संतुष्ट होती है।

चूंकि टेंट विश्लेषण एसएमटी/एसएटी सॉल्वर को नियोजित नहीं करता है, तो मैं कहूंगा कि यह एक प्रकार का प्रतीकात्मक निष्पादन नहीं है। शायद कोई कह सकता है कि टेंट विश्लेषण प्रतीकात्मक निष्पादन का एक हिस्सा है

यह सिर्फ एक राय है। इसे चुनौती देने के लिए स्वतंत्र महसूस करें।

0

मैं @Benny से सहमत हैं, यह वास्तव में एक दिलचस्प सवाल है। जब आप इनका जवाब देने का प्रयास करते हैं तो आप शायद इस तरह के प्रश्नों को तैयार करके और भी बहुत कुछ सीख सकते हैं।

मैं बेनी के जवाब में जोड़ने के लिए करना चाहते हैं:

आदेश कलंक पर नज़र रखने और प्रतीकात्मक निष्पादन को लागू करने के लिए, एक (बाइनरी के मामले में जैसे 86 विधानसभा) भाषा के शब्दों को परिभाषित किया है। उदाहरण के लिए, किसी को यह वर्णन करना होगा कि

add eax, ebx 

'मतलब', यानी राज्य के लिए है। कलंक ट्रैकिंग अर्थ विज्ञान की परिभाषा शायद प्रतीकात्मक निष्पादन अर्थ विज्ञान का एक सबसेट का एक प्रकार के रूप में देखा जा सकता था। टेंट ट्रैकिंग अर्थशास्त्र प्रतीकात्मक निष्पादन अर्थशास्त्र में एन्कोड किए गए हैं। आम हिस्सा

  • है ebx दागी है, तो eax दूषित है।
  • हैं ebx प्रतीक है (iow एक श्रीमती एक या अधिक प्रतीकात्मक वार्स युक्त सूत्र शामिल है) तो eax

फिर भी प्रतीक है, प्रतीकात्मक निष्पादन के लिए अर्थ विज्ञान आगे की जानकारी (जैसे सटीक गणित आपरेशन) को रोकने के लिए है: - eax + "जो कुछ भी ebx में था इससे पहले कि"

कृपया टिप्पणी या मुझे सही करें "जो कुछ भी करने से पहले eax में था" है! प्रतीकात्मक निष्पादन संभावित सभी निष्पादन रास्तों कि धब्बा विश्लेषण कर सकते हैं, और अधिक जानकारी प्राप्त करने के लिए है मैं);:

0

मेरी राय में, अपने सवाल का जवाब देने हम के बाद एक जवाब देने के लिए है ii) क्या दांत विश्लेषण में सभी निष्पादन पथों को खोजने की क्षमता होती है जो प्रतीकात्मक निष्पादन कर सकते हैं, और अधिक; iii) क्या वे दोनों एक ही निष्पादन पथ खोजने की समान क्षमता रखते हैं; iv) क्या वे दोनों निष्पादन पथों की गणना कर सकते हैं जो अन्य नहीं कर सकते हैं।

मेरी राय में, iv) जिसका अर्थ है कि एक एक सबसेट नहीं है, सही है। हालांकि, मैं सहमत हूं कि वास्तव में एक बड़ा ओवरलैप है।

हम विकल्पों को खत्म कर सकते हैं i) और iii) क्योंकि प्रतीकात्मक निष्पादन केवल व्यवहार्य निष्पादन पथ पाता है, जबकि तनाव विश्लेषण में अक्षम लोगों को बाधा हल करने का सहारा नहीं मिलता है।

विकल्प ii समाप्त करने के लिए), मुझे लगता है कि (मुझे ठीक कर लें मैं गलत हूँ) निष्पादन रास्तों कि प्रतीकात्मक निष्पादन को बेनकाब कर सकते हैं और कलंक विश्लेषण नहीं कर सकते हैं देखते हैं कि। उदाहरण के लिए:

for(int i=0;i<3;i++) { 
    if(someString.charAt(i)=='4') 
     //do something 
    else 
     //do something else 
} 

इस तरह के मामले प्रतीकात्मक निष्पादन में सभी आठ संभव निष्पादन रास्तों को उजागर करता है, जबकि कलंक विश्लेषण (अगर मैं गलत नहीं हूँ) नहीं करता है।

+1

अगर हम उन निष्पादन पथ को सीमित करते हैं जो केवल * व्यवहार्य * हैं, तो टेंट द्वारा पाये जाने वाले पथ हमेशा प्रतीकात्मक निष्पादन द्वारा पाए गए लोगों का उप-समूह होते हैं, है ना? –

+0

मुझे विश्वास है, लेकिन इसके लिए हमें एक एसएमटी सॉल्वर चाहिए –

0

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

संबंधित मुद्दे