सुरक्षा फर्मों में प्रोग्रामर क्या करते हैं?


10

मैंने सुरक्षा फर्मों के बारे में सुना है जो क्लाइंट सिस्टम की सुरक्षा पर परामर्श करते हैं। मैं इस क्षेत्र में जितने लोगों को जानता हूं उनमें से सभी नेटवर्क इंजीनियर हैं, लेकिन मुझे पता है कि प्रोग्रामर सुरक्षा में भी शामिल हैं। ऑडिट / परामर्श करने वाले सुरक्षा प्रोग्रामर वास्तव में क्या करते हैं? क्या वे सचमुच लोगों की विरासत प्रणालियों में प्रत्येक भेद्यता की तलाश में कोडबेस के माध्यम से जाते हैं? मैंने हमेशा माना है कि उन्होंने ऐसा किया है, लेकिन ऐसा लगता है कि यह बहुत अविश्वसनीय होगा और सुरक्षा की झूठी भावना प्रदान करने से ज्यादा नहीं है। नोट: मैं प्रोग्रामर के बारे में बात नहीं कर रहा हूं जो एन्क्रिप्शन एल्गोरिदम या ऐसा कुछ भी लिखते हैं, जो केवल सॉफ्टवेयर सुरक्षा ऑडिट / परामर्श से संबंधित हैं।


1
कई और अधिक सुरक्षा लोगों के दर्शकों के लिए security.stackexchange.com ब्राउज़ करने के लिए स्वतंत्र महसूस करें!
रोरी अलसॉप

1
^ उन्होंने क्या कहा, हम दोनों वहां पर मंदिर समर्थक हैं।

जवाबों:


12

सच कहूँ तो हम आपके कोडबेस के माध्यम से नहीं जाने की कोशिश करते हैं, हम हमारे लिए ऐसा करने के लिए उपकरण लिखने की कोशिश करते हैं।

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

इस मॉडल में, एप्लिकेशन सुरक्षा तब शुरू होती है जब हम अपने उपयोगकर्ताओं से आवश्यकताओं को पूरा करने का प्रयास कर रहे होते हैं। हमें उनकी सुरक्षा और गोपनीयता संबंधी चिंताओं का पता लगाने की आवश्यकता है, जो आसान नहीं है क्योंकि हम विशेषज्ञ हैं, उपयोगकर्ता नहीं हैं, और जहां वे अपनी सुरक्षा आवश्यकताओं को समझते हैं, उन्हें व्यक्त करना मुश्किल हो सकता है। हमें यह भी पता लगाने की आवश्यकता है कि तैनाती में सॉफ़्टवेयर को किन जोखिमों से अवगत कराया जाएगा, और जोखिम का कौन सा स्तर स्वीकार्य है।

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

ठीक है, सिद्धांत के लिए बहुत कुछ। व्यवहार में , ऐसे कारणों के लिए, जिन्हें गीकोनोमिक्स में बहुत अच्छी तरह से (एक गैर-तकनीकी फैशन में) समझाया गया है और जो मुख्य रूप से इस तरह से हैं क्योंकि सॉफ्टवेयर कंपनियां प्रेरित होती हैं, उपरोक्त अधिकांश सामान ऐसा नहीं होता है। इसके बजाय, हमें यह मिलता है। डेवलपर्स करेंगे:

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

तो क्या अधिकांश ऐप सुरक्षा लोग वास्तव में कर रहे हैं , जैसा कि आप कहते हैं, बग ढूंढना। यह वास्तव में एक गौरवशाली कोड समीक्षा है, लेकिन यह उन लोगों द्वारा किए गए एक अत्यधिक focussed कोड की समीक्षा है जो इस समीक्षा के बग के प्रकार के विशेषज्ञ हैं, इसलिए ऐसा करने में बाहरी सहायता प्राप्त करने में अभी भी मूल्य है। टेटिंग का यह एक सामान्य नियम है, निश्चित रूप से: हमेशा किसी और को परखने के लिए मिलता है जो इस चीज को बनाने में शामिल नहीं था।

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

** चेतावनी: व्यक्तिगत राय और अटकलें क्या हैं **

यथार्थ टूट गया है। आप देखेंगे कि सॉफ़्टवेयर सुरक्षा का सिद्धांत सभी की पहचान करने और सॉफ़्टवेयर सिस्टम पर भरोसा करने के जोखिम के प्रति प्रतिक्रिया के बारे में था, जबकि अभ्यास संभव के रूप में कई बग खोजने के बारे में था। यकीन है, कि अभी भी जोखिम को कम करेगा, लेकिन केवल एक साइड-इफेक्ट के रूप में। खेल का बिंदु खेल को "जीतने" की तुलना में कम महत्वपूर्ण हो गया है, इसलिए इसे जीतने के लिए आसान बनाने के लिए नियमों को बदल दिया जाता है।

एक सॉफ्टवेयर डेवलपर के रूप में आप इसके बारे में क्या कर सकते हैं? खेल को उसके मूल नियमों से खेलो। अपनी टीम पर किसी को ढूंढें (अधिमानतः वास्तव में आपकी टीम पर, एक ठेकेदार के बजाय, ताकि वे एक त्वरित जीत के बजाय दीर्घकालिक परिणाम प्रदान करने के लिए प्रेरित हों) जो सुरक्षा के महत्व को समझते हैं और उनमें से बेज्जियस को प्रशिक्षित करते हैं। उस व्यक्ति को मेरे जवाब की शुरुआत में वर्णित एंड-टू-एंड सुरक्षा प्रदान करने में टीम को निर्देशित करने की जिम्मेदारी दें।

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

आप ऐसा क्यों करना चाहते हो? यह सस्ता होना चाहिए: हमने सभी को देखा है (और शायद एक सस्ते +10 प्रतिनिधि के लिए उद्धृत किया गया है) कोड पूर्ण तालिका जहां दोष अधिक महंगा हो जाते हैं बाद में आप उन्हें ठीक करते हैं? वैसे सुरक्षा दोष भी दोष हैं। मैं खेल की वास्तविक दुनिया के नियम हैं, उनमें से ज्यादातर रखरखाव में तय की गई आवश्यकताओं में समस्याएं हैं। क्या वह सस्ता है?

ठीक है, अब मैं भाड़े के लिए सुरक्षा बंदूक के रूप में क्या कर सकता हूं ? खैर यह पता चला है कि मैं संशोधित नियमों से भी खेलने से इनकार कर सकता हूं। मैं डेवलपर्स को बता सकता हूं कि यह जोखिम को कम करने के बारे में है, कि यह हर चरण में किया जा सकता है, और फिर मैं उन्हें ऐसा करने में मदद कर सकता हूं।


आपकी स्थिति के व्यक्ति के लिए, मुझे आश्चर्य है कि आप चर्चा के लिए अधिक प्रस्ताव नहीं दे सकते। मुझे सुनने में बहुत दिलचस्पी होगी कि आपको क्या कहना है।
स्टीवन एवर्स

जब आप उत्तर लिखते हैं तो आप सही होते हैं, मैं थका हुआ था (जेट अंतराल)। मैं इसे थोड़ा भरने की कोशिश करूंगा।

@snorfus मुझे एक अच्छा जवाब नहीं देने के लिए माफी मांगनी चाहिए। मुझे सचमुच अफसोस है।

@ ग्राहम ली: मुझे संदेह था कि आपके पास हमसे एक बड़ा जवाब छिपा हुआ था :) आपके संपादन ने बस यही साबित किया है; धन्यवाद!
स्टीवन एवर्स

@snorfus मुझे पोस्ट करने से पहले वास्तव में सोचना चाहिए। और अगर मैं सोचने के लिए किसी स्थिति में नहीं हूं, तो मुझे पोस्ट नहीं करना चाहिए ...

5

छोटे और बहुत बड़े ऐप्स, वातावरण, सिस्टम आदि के खिलाफ सुरक्षा आश्वासन कार्यक्रम चलाने के 15 साल से मैं कहूंगा कि इसमें सब कुछ है। मेरी टीमों में मेरे पास हमेशा कुछ ऐसे लोग हैं जो हार्डकोर कोडर हैं।

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

(निश्चित रूप से मैं तब डेवलपर्स को फिर से लिखता हूं या मुझे यह समझाने के लिए सौंपता हूं कि समस्या जोखिम क्यों नहीं उठाती है)

लेकिन यह एक विशिष्ट जुड़ाव है जिसके लिए जोखिम प्रोफ़ाइल इस तरह के संसाधन गहन कार्य को करने के लिए समझ में आता है।

अधिक मानक, और बहुत अधिक लागत प्रभावी संगठन के जोखिम प्रोफ़ाइल को समझने और जोखिम टॉप-डाउन पर ध्यान केंद्रित करने की कोशिश कर रहा है, जैसे:

  • रिस्क एपेटाइट - व्यवसाय पर प्रभाव, मॉडलिंग को खतरा
  • शासन - नियामक अनुपालन, रिपोर्टिंग आदि
  • नीतियां - शासन ढांचे को सुनिश्चित करने के लिए परिभाषाएं प्रभावी हैं
  • प्रक्रियाएँ - तकनीकी और मानव
  • मानक - प्रत्येक सुरक्षा नियंत्रण की परिभाषा
  • कार्यान्वयन - कैसे करने के लिए

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


2
I + 1d, लेकिन खबरदार "या मुझे यह समझाने के लिए कि समस्या जोखिम क्यों नहीं उठाती है"। डेवलपर्स अक्सर उनके द्वारा बनाई गई चीज़ (डेवलपर के रूप में बोलना) को बदलने से बचने का कारण पाएंगे, और इसके अलावा ग्राहकों के जोखिमों को नहीं समझ सकते हैं। आखिरकार, यह डेवलपर्स थे जिन्होंने विंडोज 98 ;-)

@ ग्राहम - आपने कहा कि जिसे नाम नहीं दिया जाना था :-) और मुझे आपका नया लंबा संस्करण उत्तर पसंद है! +1
रोरी अलसॉप

अरे हाँ। मैंने जानबूझ कर कहा कि क्योंकि मैं विंडोज़ 98-लेकिन-तीन-तीन साल पहले का नाम नहीं लेना चाहता था।

1

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

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

मुझे लगता है कि कुछ ऐसे हैं जो वास्तव में कोड की जांच करने और कुछ समीक्षा / व्हाइटबॉक्स परीक्षण करने के लिए समय लेते हैं, लेकिन मुझे अभी तक वास्तविक जीवन में उनका सामना करना है।


ऐसा लगता है कि आप जिस कंपनी के लिए काम करते हैं, वह लगातार बाहर काम करती है और हैक्स लेती है, जो एक अच्छे खेल की बात करते हैं लेकिन वास्तव में बात नहीं बनती। खुद के अलावा, और यहां के अन्य उत्तरदाताओं के साथ, मैंने काम किया है, और प्रशिक्षित किया है, कई जो इसे सही करते हैं। निश्चित रूप से, मैं शायद उस तरह से अधिक मिला हूं, जो आपके पास है, ...
एवीडी

@ मैं इसका मतलब नकारात्मक के रूप में नहीं था। मुझे यकीन है कि यदि आप शीर्ष-डॉलर का भुगतान करते हैं, तो आप पर्याप्त प्रतिस्पर्धी फर्मों को पा सकते हैं, लेकिन तब भी जब आप कुछ खरीदने के लिए कुछ सुझाव देने / सुधारने / लागू करने की सलाह देने से अधिक सुझाव प्राप्त करते हैं। यह एक अच्छा विषय रिकॉर्ड के साथ एक ज्ञात उत्पाद का उपयोग करके एक बड़ा विषय नहीं है, जब यह समस्या की जगह के लिए एक उचित फिट है। ओपी ने विशेष रूप से AUDIT का उल्लेख किया, और रेंज में आप अपने वार्षिक 3rd पार्टी ऑडिट के लिए भुगतान करते हैं जो आपको रोरी के 4 वें के अंक के 2, 3 और 1/2 के माध्यम से मिलता है।
बिल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.