Secure coding
سیکیور کوڈنگ کمپیوٹر سافٹ ویئر کو اس طرح تیار کرنے کا عمل ہے جو حفاظتی خطرات کے حادثاتی تعارف سے بچاتا ہے۔ نقائص، کیڑے اور منطق کی خامیاں مستقل طور پر عام طور پر استحصال شدہ سافٹ ویئر کی کمزوریوں کی بنیادی وجہ ہیں۔ ہزاروں رپورٹ شدہ خطرات کے تجزیے کے ذریعے، حفاظتی پیشہ ور افراد نے دریافت کیا ہے کہ زیادہ تر خطرات نسبتا کم تعداد میں عام سافٹ ویئر پروگرامنگ کی غلطیوں سے پیدا ہوتے ہیں۔ غیر محفوظ کوڈنگ کے طریقوں کی نشاندہی کرکے جو ان غلطیوں کا باعث بنتے ہیں اور ڈویلپرز کو محفوظ متبادلات کے بارے میں تعلیم دے کر، تنظیمیں تعیناتی سے پہلے سافٹ ویئر میں کمزوریوں کو نمایاں طور پر کم کرنے یا ختم کرنے میں مدد کے لیے فعال اقدامات کر سکتی ہیں۔ کچھ اسکالرز نے مشورہ دیا ہے کہ سائبر سیکیورٹی سے متعلق خطرات کا مؤثر طریقے سے مقابلہ کرنے کے لیے، مناسب سیکیورٹی کو کوڈ کیا جانا چاہیے یا نظام میں "بیک ان" کیا جانا چاہیے۔ سافٹ ویئر میں سیکیورٹی ڈیزائن کیے جانے کے ساتھ، یہ اس بات کو یقینی بناتا ہے کہ اندرونی حملوں کے خلاف تحفظ ہوگا اور ایپلی کیشن سیکیورٹی کے خطرے کو کم کرتا ہے۔ بفر اوور فلو کی روک تھام بفر اوور فلو، ایک عام سافٹ ویئر سیکیورٹی کی کمزوری، اس وقت ہوتی ہے جب کوئی عمل مقررہ لمبائی والے بفر سے باہر ڈیٹا کو ذخیرہ کرنے کی کوشش کرتا ہے۔ مثال کے طور پر، اگر اشیاء کو ذخیرہ کرنے کے لیے 8 سلاٹ ہیں، تو اگر 9 اشیاء کو ذخیرہ کرنے کی کوشش کی جائے تو مسئلہ ہو گا۔ کمپیوٹر میموری میں اوور فلوڈ ڈیٹا اگلے مقام پر ڈیٹا کو اوور رائٹ کر سکتا ہے جس کے نتیجے میں سیکیورٹی کی کمزوری (اسٹیک سمیشنگ) یا پروگرام کا خاتمہ (سیگمنٹشن فالٹ) ہو سکتا ہے۔ بفر اوور فلو کا شکار ہونے والے سی پروگرام کی ایک مثال isint दुर्बल _ فنکشن (چار * لارج _ یوزر _ ان پٹ) {چار ڈی ایس ٹی [ایس ایم اے ایل ایل] ؛ ایس ٹی آر سی پی (ڈی ایس ٹی، لارج _ یوزر _ ان پٹ) ؛} اگر صارف کا ان پٹ منزل کے بفر سے بڑا ہے، تو ایک بفر اوور فلو ہوگا۔ اس غیر محفوظ پروگرام کو ٹھیک کرنے کے لیے، ممکنہ بفر overflow.int سیکیور _ فنکشن (چار * یوزر _ ان پٹ) کو روکنے کے لیے اسٹرانکپی کا استعمال کریں۔ ایک اور محفوظ متبادل یہ ہے کہ malloc.char * سیکیور _ کاپی (چار * src) {سائز _ t لین = اسٹرلن (src) ؛ چار * dst = (چار *) میلوک (لین + 1) ؛ اگر (dst! = null) فارمیٹ سٹرنگ حملے کی روک تھام ایک فارمیٹ سٹرنگ حملہ تب ہوتا ہے جب کوئی بدنیتی پر مبنی صارف مخصوص ان پٹ فراہم کرتا ہے جو بالآخر کسی فنکشن کے لیے دلیل کے طور پر درج کیا جائے گا جو فارمیٹنگ انجام دیتا ہے، جیسے کہ پرنٹ ایف ()۔ حملے میں مخالف اسٹیک سے پڑھنا یا لکھنا شامل ہوتا ہے۔ سی پرنٹ ایف فنکشن آؤٹ پٹ کو ایس ٹی ڈی آؤٹ پر لکھتا ہے۔ اگر پرنٹ ایف فنکشن کا پیرامیٹر مناسب طریقے سے فارمیٹ نہیں کیا گیا ہے، تو کئی حفاظتی کیڑے متعارف کرائے جا سکتے ہیں۔ ذیل میں ایک ایسا پروگرام ہے جو فارمیٹ سٹرنگ attack.int کمزور _ پرنٹ (چار * بدنیتی پر مبنی _ ان پٹ) {پرنٹف (بدنیتی پر مبنی _ ان پٹ) ؛} کے لیے کمزور ہے۔ پروگرام کو منتقل کی جانے والی ایک بدنیتی پر مبنی دلیل "% s% s% s% s% s% s% s% s" ہو سکتی ہے، جو پروگرام کو نامناسب میموری ریڈز سے کریش کر سکتی ہے۔ انٹیجر اوور فلو کی روک تھام انٹیجر اوور فلو اس وقت ہوتی ہے جب ریاضی کے عمل کے نتیجے میں ایک انٹیجر بہت بڑا ہوتا ہے جس کی نمائندگی دستیاب جگہ کے اندر نہیں کی جا سکتی۔ ایک ایسا پروگرام جو انٹیجر اوور فلو کی مناسب طریقے سے جانچ نہیں کرتا ہے، ممکنہ سافٹ ویئر کیڑے اور استحصال متعارف کراتا ہے۔ ذیل میں C + + میں ایک فنکشن ہے جو اس بات کی تصدیق کرنے کی کوشش کرتا ہے کہ x اور y کا مجموعہ ایک متعین قیمت سے کم یا اس کے برابر ہے MAX: bool sumIsValid _ floed (غیر دستخط شدہ int x، غیر دستخط شدہ int y) {غیر دستخط شدہ int sum = x + y ؛ واپسی کا مجموعہ <= MAX ؛} کوڈ کے ساتھ مسئلہ یہ ہے کہ یہ اضافی آپریشن پر انٹیجر اوور فلو کی جانچ نہیں کرتا ہے۔ اگر x اور y کا مجموعہ غیر دستخط شدہ انٹی کی زیادہ سے زیادہ ممکنہ قیمت سے زیادہ ہے، تو اضافی عمل زیادہ سے زیادہ بہہ جائے گا اور شاید اس کے نتیجے میں MAX سے کم یا اس کے برابر قیمت ہوگی، حالانکہ x اور y کا مجموعہ MAX سے زیادہ ہے۔ ذیل میں ایک فنکشن ہے جو اس بات کی تصدیق کر کے اوور فلو کی جانچ کرتا ہے کہ رقم x اور y دونوں سے زیادہ یا برابر ہے۔ اگر رقم اوور فلو ہو جاتی ہے، تو رقم x سے کم یا y سے کم ہوگی۔ بول سم آئیس ویلڈ _ سیکیور (غیر دستخط شدہ انٹی x، غیر دستخط شدہ انٹی y) {غیر دستخط شدہ انٹی سم = x + y ؛ ریٹرن سم> = x & & sum> = y & & & sum <= MAX;} پاتھ ٹریورسل پریوینشن پاتھ ٹریورسل ایک کمزوری ہے جس کے تحت کسی غیر معتبر ماخذ سے فراہم کردہ راستوں کی تشریح اس طرح کی جاتی ہے کہ غیر مجاز فائل تک رسائی ممکن ہو۔ مثال کے طور پر، ایک اسکرپٹ پر غور کریں جو فائل کا نام لے کر کسی مضمون کو حاصل کرتا ہے، جسے پھر اسکرپٹ کے ذریعے پڑھا جاتا ہے اور تجزیہ کیا جاتا ہے۔ اس طرح کی اسکرپٹ کتے کے کھانے کے بارے میں کسی مضمون کو بازیافت کرنے کے لیے درج ذیل فرضی یو آر ایل کا استعمال کر سکتی ہے: https://www.example.net/cgi-bin/article.sh?name=dogfood.html اگر اسکرپٹ میں کوئی ان پٹ چیکنگ نہیں ہے، اس کے بجائے یہ بھروسہ کرتے ہوئے کہ فائل کا نام ہمیشہ درست ہے، ایک بدنیتی پر مبنی صارف ویب سرور سے کنفیگریشن فائلوں کو بازیافت کرنے کے لیے یو آر ایل بنا سکتا ہے: https://www.example.net/cgi-bin/article.sh?name=./././././etc/passwd اسکرپٹ پر منحصر ہے، اس سے/وغیرہ/پاس ڈبلیو ڈی فائل بے نقاب ہو سکتی ہے، جس میں یونکس جیسے سسٹمز پر (دوسروں کے درمیان) صارف آئی ڈی، ان کے لاگ ان نام، ہوم ڈائرکٹری کے راستے اور خول شامل ہیں۔ (اسی طرح کے حملے کے لیے ایس کیو ایل انجکشن دیکھیں۔) ایپلیکیشن سیکیورٹی ڈیفینسیو پروگرامنگ سیکیورٹی بگ سیکیور بائی ڈیفالٹ نوٹس حوالہ جات کمپیوٹر سیکیورٹی بھی دیکھیں۔