جنرال لواء

عندما تتحول البرمجة السيئة إلى قاتلة

عندما تتحول البرمجة السيئة إلى قاتلة


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

عندما يحدث خلل شديد في برمجة نظام حرج ، إذا لم نكن محظوظين ، فقد يتسبب الخطأ في تلف كبير في الممتلكات أو فقدان قيمة المخزون أو تكلفة إدارية أخرى لإدارة كارثة غير ضرورية - ناهيك عن وظيفة المبرمج. في بعض الأحيان ، قد تكون العواقب لا يمكن تصورها. اليوم ، نلقي نظرة على بعض الحالات الشهيرة التي توضح مدى سهولة تحول البرامج السيئة إلى الموت.

Therac-25: إنه إهمال على طول الطريق

لقد سمع أي شخص درس علوم الكمبيوتر على المستوى الجامعي بتقرير Therac-25. إنها دراسة حالة رئيسية قدمها الأساتذة للطلاب كتحذير شديد لما يمكن أن يحدث عندما يتجاهل المبرمجون ؛ على وجه التحديد ، يمكن للناس أن يموتوا وسيموتون.

كان Therac-25 عبارة عن آلة علاج إشعاعي تم بناؤها عام 1982 لعلاج الأشكال الشديدة من السرطان. تم بناء Therac-25 من النماذج السابقة ، Therac-6 و Therac-20 ، استخدم تكوينًا مزدوجًا ، واحد لجرعة أكثر اعتدالًا من الإشعاع الإلكتروني ، وجرعة ثانية أقوى بكثير كانت أقوى بمئات المرات.

أدرك مصممو النماذج السابقة خطورة استخدام الإعداد الخاطئ ، وقاموا ببناء آليات أمان للأجهزة من شأنها منع جرعة زائدة عرضية من الإشعاع. على هذا النحو ، يمكن أن تعتمد البرمجة التي شغلت الجهاز على تشابك الأجهزة للحماية من التكوين غير الصحيح للجهاز.

لذلك ، عندما قام مبرمجو Therac-25 بنسخ الكود القديم من الأجهزة السابقة وإعادة استخدامه في الجديد ، لم يكن لديهم أي فكرة أن البرامج الآمنة في الكود القديم لم تكن صارمة كما كانوا يعتقدون . ولأن المبرمج الخاص بالآلات الأصلية ، وهو مبرمج عصامي بدون تدريب رسمي ، لم يترك أي تعليقات في الكود الخاص به كما ينبغي ، لم يكن لدى مبرمجي Therac-25 أي وسيلة لمعرفة أن آلةهم كانت مختلفة تمامًا. لم يكلفوا أنفسهم عناء اختبار الكود القديم بشكل مناسب على الجهاز الجديد ، والذي كان سيكشف عن التناقض.

والأهم من ذلك ، أن المبرمج الأصلي لم يأخذ في الاعتبار "حالة السباق" بين إعدادين مختلفين للجرعة. إذا فات أحد الفنيين ضربة على المفتاح ، فيمكنه إرشاد الماكينة عن طريق الخطأ لاستخدام إعداد واحد متبوعًا على الفور بتعليمات لاستخدام الآخر. أيًا كان التعليمات التي وصلت إلى الجهاز أولاً ، كانت كيفية ضبط الجهاز ، بغض النظر عما ينوي الفني القيام به ، ولن يعرفوا الفرق.

لذا ، بدلاً من إطلاق انفجار هائل من الإشعاع على صفيحة معدنية من شأنها أن تنشر الأشعة السينية على مساحة أوسع كما كان من المفترض أن تفعل ، فإن Therac-25 يطلق النار أحيانًا على مريض ممتلئ بشعاع ضيق من الإشعاع مئات المرات أقوى مما هو مقصود - قوي بما يكفي لترك حروق إشعاعية للكثيرين ، وفي خمس حالات معروفة على الأقل ، قتلهم.

صاروخ باتريوت الذي فشل في إطلاقه

في الحياة ، نادرًا ما تكون الأخطاء البسيطة التي تبدو غير منطقية خطيرة. في البرمجة ، غالبًا ما تكون أبسط الأخطاء هي سبب الكوارث الكبرى ، وأحد الأخطاء الأكثر شيوعًا من هذا النوع هو إساءة استخدام حساب الفاصلة العائمة.

تكمن مشكلة أرقام الفاصلة العائمة في أنه لا يوجد سوى مساحة كبيرة متاحة لتمثيل قيمة مخزنة في الذاكرة ، وإذا كانت القيمة التي تحتاج إلى تخزينها أكبر من المساحة المتاحة ، فإن الجهاز يقطع الرقم ليناسبه في الذاكرة. قد لا يبدو قطع هذه الأرقام المتدلية في النهاية البعيدة لسلسلة من 0s مشكلة كبيرة ، ولكن بالنسبة لجهاز كمبيوتر يقوم بملايين العمليات في الثانية ، فإن هذه الأنواع من الأخطاء تتراكم.

في 25 فبراير 1991 ، في منتصف حرب الخليج الأولى ، كانت بطارية صواريخ باتريوت عسكرية أمريكية في الظهران ، المملكة العربية السعودية تعمل لمدة 100 ساعة دون إعادة تشغيل. كانت بطارية باتريوت جزءًا من دفاع الجيش الأمريكي ضد صواريخ سكود المتنقلة التي يستخدمها الجيش العراقي ، واعتمد البرنامج المسؤول عن تتبع صواريخ سكود الواردة على سلسلة من الحسابات التي من شأنها أن تتنبأ بمكان الصاروخ الذي يتم تعقبه في الفاصل الزمني التالي. كدالة على سرعتها ووقتها.

نظرًا لأن البرنامج الذي يتحكم في بطارية باتريوت كان عليه أن يتتبع الوقت المنقضي لتحديد مسار SCUD ، فكل عُشر من الثانية سيستفسر البرنامج عن الوقت منذ بدء التشغيل من ساعة النظام وعادت الساعة لأعشار الثانية منذ البداية -up كعدد صحيح. لتحويل هذا إلى ثوان لإجراء حساباتهم ، قام المبرمجون بضرب هذا العدد الصحيح في 1/10 ، وارتكاب خطأ برمجة على مستوى المبتدئين في وسط الحرب.

تم تخزين الطابع الزمني في كتلة ذاكرة 24 بت ، لذا كان لابد من اقتطاع أي رقم ثنائي أكبر من 24 بت ليناسب. 1/10 هو تمثيل ثنائي غير منتهي ، لذا فإن قطع الرقم عند 24 بت يقدم انجرافًا قدره 0.000000095 ثانية.

أضف كل هذه الأخطاء معًا على مدار 100 ساعة كان البرنامج يعمل فيها وكان الوقت الذي يستخدمه البرنامج 0.34 ثانية من مكان الأنظمة الأخرى.

لذلك عندما التقطت بطارية باتريوت وتتبعت صاروخ سكود وارد في 25 فبراير ، توقعت مكان ظهورها في الفاصل الزمني التالي عن طريق التثليث مقابل إشارتين للرادار ، واحدة تعكس الوقت الصحيح والأخرى بها خطأ 0.34 ثانية. قام بسحق الأرقام والنظر في الإحداثيات التي توقعت العثور على SCUD ، ولكن كانت هناك السماء الفارغة الوحيدة.

بافتراض أن صاروخ سكود قد خرج عن النطاق ، لم يطلق صواريخ باتريوت النار بينما أبحر سكود وسرعان ما اصطدم بالثكنات التي كان من المفترض أن تحميها بطارية باتريوت ، مما أسفر عن مقتل 28 شخصًا وإصابة حوالي 100 آخرين.

أوهام رقمية

يمكن أن تكون الأخطاء في الترميز مميتة ، ولكن الفشل في تصميم البرنامج بشكل صحيح واختباره بدقة قبل استخدامه يمكن أن يكون مميتًا تمامًا مثل سوء الاستخدام العرضي لحساب النقطة العائمة.

كان هذا هو الحال في مدينة بنما ، بنما ، عندما كان الأطباء في المعهد الوطني للسرطان يستخدمون البرامج الطبية التي أنشأتها شركة أمريكية ، هي Multidata Systems International. كان البرنامج محاولة ما بعد السوق للحفاظ على عمل المعدات الإشعاعية Cobalt-60 القديمة والقديمة.

بالإضافة إلى المعدات ذات الجودة الرديئة ، كان الأطباء مرهقين ، ومجهدين ، ويعتمدون بشكل كبير على برنامج Multidata لتحديد الجرعة المناسبة من الإشعاع لإعطاء المرضى الذين يعانون من أمراض السرطان الشديدة.

جزء من العملية كان النظر إلى نموذج المريض على الشاشة وحجب الأنسجة السليمة بألواح معدنية لحمايتها من الإشعاع ، ورسم "الكتل" المستطيلة مباشرة على النموذج الموجود على الشاشة. مما أدى إلى إحباط الأطباء في المعهد ، سمح البرنامج للأطباء فقط برسم أربع كتل أو أقل.

أصر الأطباء على أنهم بحاجة إلى كتلة خامسة ، لذلك بحثوا في الوثائق عن حل بديل. اكتشف أحد الأطباء أنه يمكنهم "خداع" البرنامج إذا رسموا جميع الكتل الخمس على هيئة كتلة واحدة كبيرة مع وجود ثقب في الجزء العلوي حيث يتقاسم المستطيل الكبير والفتحة الأصغر جانبًا.

ما لم يعرفوه هو أن برمجة البرنامج مصممة للقراءة في الكتل بطريقة معينة وحساب الجرعة المناسبة بناءً على ما تم رسمه. بشكل مثير للدهشة ، لم تأخذ برمجتهم في الحسبان كيف يمكن لشخص ما رسم أشكال ذات جوانب متداخلة بدقة ، مرسومة على الشاشة في نفس الاتجاه ، في اتجاه عقارب الساعة أو عكس اتجاه عقارب الساعة.

عند رسمها معًا بهذه الطريقة ، قرأت البرمجة الأشكال كخط واحد مستمر وفقدت نوعًا ما عقلها في محاولة لمعرفة الشكل الفعلي للشكل ، مثل تغذيته بوهم بصري؟ بطريقة ما ، لم يمنعه ذلك من حساب الجرعة على أي حال ، بناءً على هذا الشكل الذي لم يفهمه.

أخذ الطبيب جرعات الجرعات ولمدة 7 أشهر باستخدام نفس التقنية ، وحصل على جرعات ضعف ما كان ينبغي أن تكون عليه ، وأخذ جرعة زائدة من عدد لا يحصى من الناس

من بين 28 شخصًا نعرفهم ، تلقوا جرعات زائدة بناءً على البرمجة القذرة في برنامج Multidata ، توفي 8 منهم وأصيب الباقون بجروح مروعة بسبب العلاجات التي تلقوها. بالنظر إلى أن جميع المرضى في المعهد كانوا يحاربون مرضًا مستعصًا وقاتلًا ، فلا توجد طريقة لمعرفة عدد الأشخاص الذين أصيبوا أو قُتلوا بسبب أرقام الجرعات الخاطئة الناتجة عن برنامج Multidata.

أهمية أفضل الممارسات والإجراءات في البرمجة

لن يتهم أحد المبرمجين على الإطلاق بأن لديهم وظيفة سهلة يستغرق تعلم برمجة معدات متطورة وعالية التقنية وقتًا طويلاً من العمل للحصول على المعلومات الصحيحة ، وحتى أفضل المبرمجين لا يزالون يكتبون رموز عربات التي تجرها الدواب.

هذا هو سبب تطوير الإجراءات وأفضل الممارسات استجابةً لكوارث مثل هذه ، لأن أفضل المبرمجين لا يغيب عن بصرهم أبدًا هو مدى السرعة التي يمكن أن يتحول بها الخطأ إلى كارثة ومدى سهولة قتل البرامج السيئة والمهملة والخطيرة الأشخاص الذين يعتزمون مساعدتهم.


شاهد الفيديو: السيكوباتي شيطان في هيئة بشري (يوليو 2022).


تعليقات:

  1. Faeramar

    نعم جيد

  2. Gardaktilar

    الآن لا يمكنني المشاركة في المناقشة - ليس هناك وقت فراغ. سأكون حرا - سأعبر عن رأيي بالتأكيد.

  3. Abhainn

    فقط ما هو مطلوب ، سأشارك. معًا يمكننا الوصول إلى الإجابة الصحيحة. أنا متأكد.

  4. Zololkis

    كنت مخطئا ، محتمل؟

  5. Wacian

    يمكنك التحدث إلى ما لا نهاية حول هذه المسألة.



اكتب رسالة