عنوان:

banned.h


نویسنده: وحید نصیری
تاریخ: ۱۳۸۸/۰۲/۲۶ ۱۱:۰۶:۰۰
آدرس: www.dntips.ir

مطالبی توسط تیم Security Development Lifecycle مایکروسافت منتشر شده مبنی بر اینکه آن‌ها هم یک سری از توابع استاندارد زبان C را در کدهای جدید خود ممنوع کرده‌اند. مستندات آن‌را در مقاله زیر می‌توانید مشاهده نمائید:


اخیرا فایل header آن نیز مطابق آخرین به روز رسانی‌های مورد استفاده منتشر شده است:


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

جدیدترین تابعی که به این لیست اضافه شده ، تابع memcpy است که سر منشاء نقایص امنیتی زیر بوده است:
MS03-030 (DirectX)
MS03-043 (Messenger Service)
MS03-044 (Help and Support)
MS05-039 (PnP)
MS04-011 (PCT)
MS05-030 (Outlook Express)
CVE-2007-3999 (MIT Kerberos v5)
CVE-2007-4000 (MIT Kerberos v5)
...!

#pragma deprecated (memcpy, RtlCopyMemory, CopyMemory)
در این حالت زمانیکه کد خود را کامپایل نمائید با اخطار زیر مواجه خواهید شد:
warning C4995: 'memcpy': name was marked as #pragma deprecated
جایگزین آن تابع memcpy_s معرفی شده است و در این حالت کد قدیمی:
char dst[32];
memcpy(dst,src,len);
باید به کد زیر تبدیل گردد:
char dst[32];
memcpy_s(dst,sizeof(dst), src,len);
که یک آرگومان بیشتر دارد و آن هم اندازه‌ی بافر مقصد مورد نظر است.

برای مطالعه بیشتر
Please Join me in welcoming memcpy() to the SDL Rogues Gallery
Unsafe at any speed: Memcpy() banished in Redmond
Good hygiene and Banned APIs
A Look Inside the Security Development Lifecycle at Microsoft

نظرات

  • مهمان در ۱۳۸۸/۰۲/۲۶ ۱۱:۳۲:۰۰
    مرسی، مفید بود.
  • مهمان در ۱۳۸۸/۰۲/۲۷ ۱۴:۱۷:۰۰
    ممنون از مطالب مفیدتون ...
  • مهمان در ۱۳۸۸/۰۲/۲۷ ۲۱:۵۰:۰۰
    سلام آقای نصیری
    شما ما را معتاد کرده اید!!!
    چرا دیر آپدیت میکنید. من هر روز مطالب شما رو می خونم.
    هشدار می دهم این دفعه اگر ساعت 9 شب به بعد آپدیت کنید من مجبور می شوم مطالب امروز را فردا بخونم!!!
  • وحید نصیری در ۱۳۸۸/۰۲/۲۷ ۲۲:۳۰:۰۰
    :)