क्या मेरी मशीन पर बफर अतिप्रवाह संरक्षण को निष्क्रिय करने का एक तरीका है?


11

मैं अपने विभिन्न आभासी मशीनों पर बफर ओवरफ्लो के साथ कुछ प्रयोग करना चाहता हूं, (जिसमें शामिल नहीं हैं) डेबियन 6, उबंटू 12.04, फेडोरा 16, लेकिन हर बार जब मैं बफर अतिप्रवाह शोषण को निष्पादित करने की कोशिश करता हूं तो मुझे निम्न संदेश मिलता है:

stack smashing detected (core dumped)

अपना शोध करने के बाद मैंने पढ़ा कि यह एक सुविधा है जिसे कंपाइलर में बफर बफरिंग सुरक्षा कहा जाता है । जीसीसी उदाहरण के लिए उपयोग करता जीसीसी ढेर-स्मैशिंग प्रोटेक्टर (ProPolice) , बजना / LLVM का उपयोग करता है दो बफर अतिप्रवाह डिटेक्टरों, SafeCode और AddressSanitizer

मेरा सवाल यह है: चूंकि मैं वास्तव में अपनी मशीनों पर बफर ओवरफ्लो के हमलों की जांच करना चाहता हूं , क्या बफर ओवरफ्लो संरक्षण को निष्क्रिय करने के लिए एक तरीका है (एक संकलक ध्वज, शायद? एक लिनक्स कॉन्फ़िगरेशन फ़ाइल?)।

जवाबों:


16

जीसीसी

Gcc पर ( man gcc) चेक सक्षम हैं

  -fstack-protector
      Emit extra code to check for buffer overflows, such as stack smashing attacks.  >This is done by adding a guard variable to functions with
      vulnerable objects.  This includes functions that call alloca, and functions with >buffers larger than 8 bytes.  The guards are initialized when
      a function is entered and then checked when the function exits.  If a guard check >fails, an error message is printed and the program exits.

  -fstack-protector-all
      Like -fstack-protector except that all functions are protected.

आप no-विकल्प के नाम पर प्रीपेडिंग करके दोनों को निष्क्रिय कर सकते हैं

-fno-stack-protector -fno-stack-protector-all

LLVM / बजना

AdVSanitizer को सक्षम / अक्षम करने के लिए LLVM / Clang ( http://clang.llvm.org/docs/UsersManual.html#commandline ) पर:

-f [नहीं-] पता-सैनिटाइज़र: एड्रेससैनिटाइज़र, मेमोरी त्रुटि डिटेक्टर चालू करें।

और SAFECode ( http://safecode.cs.illipedia.edu/docs/UsersGuide.html )

-f [नहीं-] memsafety


2
क्या यह पता लगाने का एक (सरल) तरीका है कि क्या एसएसपी के साथ कोई कार्यक्रम संकलित किया गया है?
१३:३

2
@ मिचेल्निक आप देख सकते हैं कि बाइनरी में __stack_chk_failstrings /bin/mybinary | grep __stack_chk_fail
मैटो

6
मैं सिर्फ जीसीसी 4.7 और 4.1 के साथ यह परीक्षण किया: विकल्प -fno-stack-protector-allमें मान्यता प्राप्त है नहीं ( -fstack-protector, -fstack-protector-allऔर -fno-stack-protectorमान्यता प्राप्त हैं)
मार्सिन

gcc: error: unrecognized command line option ‘-fno-stack-protector-all’; did you mean ‘-fstack-protector-all’?
क्लेमेंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.