windows – CVE 234 – Snprintf مسائل مربوط به پارامترهای گم شده

ما اسکن یک کتابخانه شخص ثالث با استفاده از ابزار تجزیه و تحلیل استاتیک شناخته شده (https://github.com/DanBloomberg/leptonica/blob/24ba80d42592b7764d4ff1405e4dd078218f0e87/src/pdfio2.c)

ما همچنان "عدم مدیریت Missing Parameter CWE ID 234 "من یک توسعه دهنده C نیستم، اما نمیتوانم با مثالهایی که برجسته شده است متفاوت باشد یا نادرست باشد ؟! (خطوط 1845، 1853، 2276، 2301)

تهدید اساسی من درک می کنم، من فقط نمی فهمم که چرا کد اشتباه است.

آیا کسی می تواند نور را در این باره بخواند، همانطور که کمی در آغوش گرفتم:

خطوط مربوط به:

1845:

snprintf (buff، sizeof (buff)، "/ BitsPerComponent٪ d"، cid-> bps)؛

1853:

snprintf (buff، sizeof (بوف)
                          "/ DecodeParms n"
                          "<> n"، cid-> w، cid-> spp، cid-> bps)؛

2276:

snprintf ((char *) buf، 32، "٪ d" )؛ 2301:

snprintf ((char *) buf، 32، "٪ d"، objout)؛
************** عدم رسیدگی به پارامتر از دست رفته – leptonica / src / colormap.c 2045

snprintf (buf، sizeof (buf)، "٪ 02x"، داده [3 * i + 1])؛


مهندسی معکوس – آیا امکان سوءاستفاده از نرم افزارهای C / C ++ غیر فشرده بدون فوروارد وجود دارد؟

بله، کاملا امکان پذیر است. شما می توانید از طریق تمام مأموریت ها بخوانید، تعیین کنید چه شرایطی برای آنها حساب نشده و سپس آنها را مورد سوء استفاده قرار دهید. در حقیقت، حتی هنگام استفاده از fuzzing، شما نیاز به خواندن از طریق مونتاژ برای کشف کردن وجود دارد: یک اشکال قابل بهره برداری است، و b تعیین نحوه ایجاد این استثمار.

همه fuzzing آیا شما کمک می کند تا تعیین کنید که در آن شرایط خطا ممکن است با تلاش بیشترین ورودی ها ممکن باشد.

سرور – بیش از 100 درخواست اسکنر 5 دقیقه پس از ثبت نام دامنه

اول، من هیچ کارشناس امنیتی نیستم

دیروز ثبت نام دامنه .cf کردم، حدود 10 دقیقه به آن نیاز داشتم. حدود 5 دقیقه پس از ثبت نام دامنه من بیش از 100 درخواست اسکنر را دریافت کردم (همه درخواستها را بررسی کردم، همه درخواستهای اسکنر خودکار مانند ZmEu و غیره) کمتر از 10 ثانیه است.

  1. با توجه به مقدار در چنین مدت کوتاه و خیلی زود پس از ثبت نام، آیا من هدف قرار می گیرم یا آیا این کار روزمره هر روزه برای دامنه .cf است؟
  2. تمام درخواست ها به طور انحصاری بیش از پورت 80 است. من چندین پورت (443، …) باز کردم. من مطمئن نیستم که چگونه این تفسیر را دارم!
  3. همه چیزهای من در c / c ++ (sockets، openssl، …) نوشته شده است، آیا لیستی به روز یا لیستی درباره حملات معمول وجود دارد که به طور خاص برای سرورهای c / c ++ و چگونه از آنها جلوگیری کنیم؟

رمزگذاری – توزیع کلید از یک سرور مرکزی

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

تمام ارتباطات باید رمزگذاری شوند و این سیستم به اینترنت متصل نیست، فقط یک دسته از رایانه ها هستند که از طریق سوئیچ های مختلف متصل می شوند.

هر کامپیوتر می تواند اتصالات متفاوتی با دیگر آن ها داشته باشد، که هر دو به عنوان سرور و / یا مشتری عمل می کنند، با استفاده از هر دو UDP و / یا TCP.

آنچه که من می خواهم انجام دهم این است که چیزی را انجام دهیم نه بزرگ و پیچیده برای یک سیستم که باید در اینترنت باقی بماند. ایده من این بود که به نحوی از AES 128 (یا 256) و حالت GCM استفاده کنم.

من فکر کردم که ممکن است یک سرور مرکزی مسئول توزیع یک کلید واحد باشد که بتواند همه رایانه های دیگر برای رمزگذاری استفاده شود تمام داده ها. به طور خاص، من قصد داشتم کلیه کلید های عمومی را به این رایانه آپلود کنم و سپس هر مشتری در هنگام راه اندازی سیستم، کلید را از سرور بازیابی می کند و از این کلید برای ارتباط با AES رمزگذاری می کند. اساسا من می گویم برای استفاده از AES با یک کلید به اشتراک گذاشته شده که می تواند از یک سرور مرکزی بدست آید.

رمز عبور ایجاد شده در سرور مرکزی می تواند به صورت دستی یا به صورت خودکار هر روز تغییر یابد.

شما در مورد این طرح چه فکر میکنید؟ من قصد دارم همه چیز را در C ++ توسعه دهم، هر گونه پیشنهادی در مورد اینکه چه تکنولوژی / کتابخانه باید استفاده کنم؟

من دیده ام سطح پایین سطح libcrypto ++ وجود دارد، اما OpenSSL نیز وجود دارد که قابلیت های TLS و DTLS را فراهم می کند. آیا می توان OpenSSL را برای ایجاد یک سیستم مانند آنچه که من توصیف کرده ام و یا باید از سایر کتابخانه ها مانند libcrypto ++ استفاده کنم؟

windows – محافظت از برنامه مشتری در بازی آنلاین از تقلب

من در یک بازی چند نفره (ترکیب RPG و استراتژی) برای ویندوز با استفاده از C ++ کار می کنم که قرار است در Steam منتشر شود.

من می خواهم نرم افزار client.exe را تا آنجا که ممکن است امن کنم.
لطفا سعی نکنید پست های مربوط به فراموشی مشتری را ایجاد کنید و فقط تمام محاسبات را روی سرور انجام دهید، زیرا می خواهم روی مشتری تمرکز کنم. [1965،9002] کشف کردم که دستکاری هر برنامه باز شده در سیستم با استفاده از زیر بسیار آسان است توابع C ++: OpenProcess، WriteProcessMemory، CreateRemoteThread، و غیره

Q1) چگونه می توان از آن جلوگیری کرد؟

من نمی خواهم برنامه دیگری (تقلب / مربی) که بتواند به پروسه من دسترسی پیدا کند و تغییر دهد حافظه آن
بنابراین اگر می توانم برنامه های دیگر را از ایجاد دسته ها به فرایند من برای نوشتن حالت جلوگیری کنم، باید بیشتر امن باشم. چگونه می توان آن را از راه آسان جلوگیری کرد؟

من برخی تحقیقات انجام داده ام و ObRegisterCallbacks را پیدا کرده ام که می تواند از ایجاد دسته برای فرآیندهای خاص جلوگیری کند (من از آن برای جلوگیری از ایجاد یک دسته برای فرآیند مشتری استفاده می کنم)
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/wdm/nf-wdm-obregistercallbacks

به عنوان مثال – https://github.com/Microsoft/Windows-driver -samples / tree / master / general / obcallback

با این حال به نظر می رسد این نیاز به ساخت یک فایل * .sys است که درایور ویندوز است و این فایل باید به صورت دیجیتالی کد امضا شود. من چند سال پیش یک گواهینامه مشترک را خریدم و هزینه آن چند صد دلار در سال بود؛ از آن زمان مجبور شدم آن را لغو کنم، زیرا این خیلی گران است.

Q2) آیا می توانم یک بازی که از * درایور .sys بدون نیاز به خرید کدهای امضای گران قیمت؟

Q3) آیا می توانم درایور * .sys را امتحان کنم و فقط از ObRegisterCallbacks استفاده کنم از فایل client * .exe؟ (ترجیح داده)

Q4) اگر «ObRegisterCallbacks» بدون فرایند امضای کد گران قیمت قابل استفاده نباشند، چه گزینه های دیگری وجود دارد؟

Q5) چرا مایکروسافت فقط پچ کردن ویندوز و جلوگیری از برنامه های دیگر از قادر بودن به حافظه فرایندهای دیگر را دستکاری می کند، زیرا این یک سوراخ امنیتی جدی است. این باید توسط سیستم عامل به طور خودکار انجام شود، و نه هر برنامه باید برای مبارزه برای محافظت از خود. اگر MS فقط ویندوز را تعمیر کند، 99٪ از بازی ها / مربیان / ویروس ها بی فایده خواهد بود.

من می دانم که من می توانم به طور پراکنده از تمام پروسه ها تکرار کنم و توابع خود را برای باز کردن دسته های پردازش (برای جلوگیری از دسترسی به فرایند پردازش مشتری خود ) و یا حتی فقط تشخیص هر دست باز، با این حال که کامل نیست، زیرا: باید آن را به صورت دوره ای، مصرف CPU، و برنامه های تقلب که اجرای اجرا، تغییر حافظه و فورا نزدیک است که خیلی سریع به توسط برنامه من شناسایی شده است همچنین اگر میخواهم سایر تماسهای عملکرد فرایند را قلاب کند، پس برنامه من بیشتر شبیه یک ویروس است، در حال تلاش برای تغییر سایر فرآیندها / توابع. من برنامه من را ترغیب نمی کنم که فرآیندهای دیگر را تغییر دهم، بلکه فقط از دسترسی آنها به فرایند مشتری بازی من جلوگیری می کنم.

با تشکر