گریس هاپر، زن برنامه‌نویسی که کلی از چیزهایی که داریم بهش مربوطه، بدون اینکه اسم زیادی ازش برده بشه

گریس هاپر هستن، متخصص کامپیوتر و ریاضی‌دان. یکی از اولین برنامه‌نویس‌های کامپیوترهای مارک ۱ هاروارد و یکی از اولین کسانی که روی مفهوم لینکرها کار کرد. اولین کسی که نظریه زبان برنامه نویسی مستقل از ماشین رو داد که منجر به اومدن زبان کوبول شد.

SI Neg. 83-14878. Date: na.
Grace Murray Hopper at the UNIVAC keyboard, c. 1960. Grace Brewster Murray: American mathematician and rear admiral in the U.S. Navy who was a pioneer in developing computer technology, helping to devise UNIVAC I. the first commercial electronic computer, and naval applications for COBOL (common-business-oriented language).
Credit: Unknown (Smithsonian Institution)

در ۳۴ سالگی سعی کرد در جنگ دوم شرکت کنه اما نیروی دریایی به خاطر «سن بالا» تقاضاش رو رد کرد. در ۴۳ سالگی روی پروژه یونیواک کار کرد و بعد به کوبول رسید که تا ۶۰ سالگیش مروجش بود. در ۴۶ سالگی ایده و اولین لینکر رو ابداع کرد که هنوزم استفاه می‌شه. در ۶۰ سالگی نیروی دریایی ازش درخواست کرد هنوز در اونجا به کار ادامه بده و در ۸۰ سالگی از نیروی دریایی بیرون اومد و مشاور شرکت
DEC
شد و در ۸۴ سالگی درگذشت.

ناوشکن موشک انداز یو اس اس هاپر و سوپرکامپیوتر کری ایکس ای ۶ و یه کالج دانشگاه ییل، به افخارش، هاپر نامگذاری شده و اوباما به مدال ازادی رییس جمهوری رو
به یادش اهدا کرد.

در ضمن تیم گریس هاپر، اولین باگ تاریخ رو در کامپیوتر مارک ۲ کشف کردن: یه حشره که لای دستگاه گیر کرده بود و نمی‌ذاشت درست کار کنه؛ برای همینه که ما هنوزم به اشکال ریزی که نمی‌ذاره برنامه درست کار کنه، می‌گیم باگ.

The First Computer Bug Moth found trapped between points at Relay # 70, Panel F, of the Mark II Aiken Relay Calculator while it was being tested at Harvard University, 9 September 1945. The operators affixed the moth to the computer log, with the entry: First actual case of bug being found. They put out the word that they had debugged the machine, thus introducing the term debugging a computer program. In 1988, the log, with the moth still taped by the entry, was in the Naval Surface Warfare Center Computer Museum at Dahlgren, Virginia. Courtesy of the Naval Surface Warfare Center, Dahlgren, VA., 1988. U.S. Naval History and Heritage Command Photograph.

مشکل نرم‌افزاری پارکومترها، در ۲۰۲۰ اونها رو از کار انداخت

ماجرای باگ سال ۲۰۰۰ خیلی پر سر و صدا بود ولی عملا خطری درست نکرد. بحث این بود که شاید در حین سوییچ از سال ۱۹۹۹ به ۲۰۰۰، بعضی برنامه نویس ها سال رو فقط در رقم عوض کرده باشن و وقتی سال از ۹۹ تبدیل به ۰۰ می شه، کامپیوتر فکر کنه زمان به عقب برگشته و اتفاقات عجیبی بیافته. اما تقریبا هیچ اتفاق مهمی نیافتاد.

اما حالا در ۲۰۲۰ یه اتفاق بانمک داشتیم: از کار افتادن تعداد زیادی از پارکومترهای همه دنیا از نیویورک سیتی تا استرالیا. سازمان حمل و نقل می گه چون برنامه ای که در این پارکومترها استفاده شده با سال ۲۰۲۰ منطبق نیست، پارکومترها نمی تونن کردیت کارت قبول کنن و فقط با سکه یا اپ مخصوصشون می شه بهشون پول پرداخت کرد. این پارکومترها که توی شهر نیویورک سیتی هم هستن، توسط شرکت Parkeon نصب شدن و ظاهرا آپدیت مناسب رو دریافت نکردن و حالا لازمه که تک به تک سراغشون رفت و آپدیتشون کرد، حدود ۱۴۰۰۰ پارکومتر که حدود ۸۵۰۰۰ جای پارک رو مدیریت می‌کنن.

اگر شما هم برنامه‌ای می‌نویسین یادتون باشه ممکنه مدتی بسیار طولانی تر از اونی که فکر می کنین، فعال بمونه و خوبه که از روز اول حواستون به این مساله باشه، بخصوص تو ایران که ما به زودی با مساله «سال ۱۴۰۰» روبرو خواهیم بودیم و لازمه برنامه‌هامون تاریخ‌ها رو درست ذخیره کنن.

در مورد باگ های اسپکتر و ملت‌داون مطالب دست اول بخونین

این چند وقت بحث باگ های امنیتی سی پی یوها اینقدر عظیم بود که حتی روزنامه های زرد هم دارن درباره‌اش می‌نویسن. اما به نظرم فرصت خیلی خوبیه که اگر به مبحث امنیت علاقمند هستین، در این مورد سعی کنین مقاله های اصلی رو بخونین. چون تشریحی که وبلاگ گوگل از ماجرا منتشر کرده اینقدر خوب نوشته شده که احتمالا با کمی تلاش و جستجوی موازی در مورد مباحث، برای اکثر ما تا حدود خوبی قابل فهمه.

خلاصه باگ های اسپکتر و ملت داون در این سه شکل قابل طبقه بندی است:

  • شکل یک: دور زدن بررسی محدوده (CVE-2017-5753)
  • شکل دو: تزریق شاخه مقصد (CVE-2017-5715)
  • شکل سه: گول زدن کش کننده دیتا (CVE-2017-5754)

در مقاله گوگل این سه روش تشریح شدن و در نهایت به سه نمونه ثابت کننده مفاهیم مطرح شده (ترجمه PoC چی می‌شه؟) رسیدن. مثلا محققین تونستن از داخل یک ماشین مجازی، حافظه هاست رو بخونن یا با یک یوزر معمولی، به حافظه کرنل دسترسی پیدا کنن.

از اونجایی که این باگ ها مربوط به سخت افزارهای سی پی یو هستن، عملا فیکس کردنشون نیازمند انواع بررسی و چک در کرنل ها است و نتیجه اش کند شدن و پیچیده تر شدن کرنل ها! اتفاقی که در حال حاضر داره می افته و مطمئن هستیم جایزه پاونی امسال که به حادترین باگ ها داده می شه، از حالا متعلق به این باگ خواهد بود. تنها کاری هم که خواهیم تونست بکنیم، آپدیت کردن کرنل هامون است به محدود کردن دائمی حالت های بیشتری از این باگ‌ها.

راستی.. کل ماجرا رو گفتم که بگم مقاله گوگل خواندنی است و قابل درک؛ با حوصله و سرچ های جانبی و حالا که خودمونی شدیم این بحث بامزه رو هم بگم که اول گوگل این باگ رو کشف می کنه و به اینتل گزارش می ده، و مدیر عامل اینتل چیکار می کنه؟ تمام سهامی اینتلی که داشت و می تونست بفروشه رو می فروشه! (:

آیا لینوکس هم باگ داره؟

رحیم پرسیده:

سوال؟!
آیا لینوکس هم باگ داره؟ خیلی خوشحال میشم در موردش تو وبلاگ یا پادکست صحبت کنی.

خب این سوال چند تا جنبه داره. اول بذار ببینیم منظور از لینوکس چیه. از نظر فنی لینوکس فقط یک هسته سیستم عامل است که در کنار یک مجموعه بزرگ ابزار به اسم گنو و کلی پروژه دیگه تشکیل یک سیستم عامل کامل می دن که اسم درستش باید باشه گنو/لینوکس ولی خب برای راحت شدن زندگی خیلی وقت ها به این مجموعه بزرگ سیستم عامل که ترکیب یک هسته (لینوکس) و کلی برنامه دیگه (پروژه گنو) است هم می گیم همون لینوکس.

کرنل لینوکس به عنوان یک هسته حدود ۱۵ میلیون خط کد است در ۳۷هزار فایل پخش شدن و کل پروژه گنو/لینوکس (مثلا اوبونتو) چیزی حدود ۲۰۰میلیون خط برنامه است. سوال ساده اینه: آیا اصولا ممکنه اینهمه خط کد اشتباه نداشته باشه؟ (: بذار یک فلوچارت بکشم:

آیا برنامه باگ داره

در کل تقریبا هر برنامه بزرگی که ما داشته باشیم، باگ داره! تنها مثال نقض برنامه کیو.میل که سال‌هاست نویسنده اش جایزه ای دلاری برای کسی گذاشته که بتونه توش یک باگ امنیتی نشون بده و هنوز هیچ کس موفق نشده اینکار رو بکنه و ما به عنوان تنها برنامه بدون باگ امنیتی می‌شناسیمش. اما به جز این، تک تک برنامه هایی که هستن باگ دارن – حالا کم یا زیاد و خطرناک یا کم خطر.

باگ‌ها هم می‌تونن چیزهای بسیار منتوعی باشن. باگ های امنیتی که ممکنه باعث نفوذ هکرها بشن، باگ هایی که باعث کرش بشن، باگ هایی که رفتار غیرطبیعی در سیستم تولید کنن و هر نوع اشتباه برنامه نویسی دیگه که برنامه رو از پروسه عادی اش خارج کنه.

و خب تا اینجا بحث باگ داشتیم اما مشکلات دیگه‌ای هم هست. مثلا بعضی از سازنده‌های سخت افزار تنبل هستن (شایدم خبیث!) که درایورهاشون رو برای لینوکس نمی دن و در نتیجه اگر اون سخت افزار رو روی لینوکس داشته باشین به دردسر می خورین یا مثلا اصولا برنامه ای برای محیطی مثل ویندوز درست شده و اینجا با دردسر بهش دسترسی داریم (مثلا کلاینت وایبر یا اسکایپ که به کیفیت ویندوزی اش نیست).

پس جواب خلاصه این می هش که هر برنامه ای که هست باگ داره و مشکلات متنوع. تفاوت در اینجاست که در دنیای لینوکس باگ ها سریع حل می شن و در نهایت اگر مشکلی هست به خاطر بی سوادی ما است که نمی تونیم اون باگ رو حل کنیم نه به خاطر اینکه اصولا برنامه بسته است و ما حق نداریم به عنوان یک برنامه نویس یا هکر تلاش کنیم دنیا رو بهتر کنیم و فقط باید منتظر بالایی ها بمونیم که اگر خواستن مشکل ما رو حل کنن.

فعلا با فایرفاکس وارد شوید چون هر کسی با گوگل کروم وارد صفحه ای بشه که این لینک رو داره، کرش می کنه!

دوست هکرم میلاد توجهم رو جلب کرد به خبری که توش یک نفر نشون داده که اگر با مرورگر کروم ۴۱ به صفحه ای برین که یک لینک خاص داره، مرورگرتون کرش می کنه! فعلا که گوگل آپدیت نداده پس بقیه مطلب رو با مرورگری به جز کروم، مطالعه کنین (:

ادامه خواندن “فعلا با فایرفاکس وارد شوید چون هر کسی با گوگل کروم وارد صفحه ای بشه که این لینک رو داره، کرش می کنه!”