-
دخول

عرض كامل الموضوع : تحذير خطير لمستخدمي الماسنجر 8


شاب سعودي
14/10/2006, 22:04
.: تحذير خطير لمستخدمي الماسنجر 8 ..! :.
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
طبعاً ما يخفى على أحد أن أغلب المستخدمين
العرب بالذات عندهم إدمان الماسنجر ويتسارعون بتحميل كل ما هو خاص وجديد فيه وأولهم أنا :
طيب يا أخوان الكثير هاليومين صار يستخدم الإصدار الجديد Windows Live Messenger 8.0
معروف طبعاً ,, وللأسف طلعت فيه ثغره أمنية خطيرة تؤدي إلى اختراق الجهاز الي يستخدمه وأترك لكم
معلومات عن الثغره :-
===== ================= ======
نوع الثغره / Local Heap Overflow
والخطأ في معالجة ملف ctt وهو الملف الذي يحفظ به برنامج الماسنجر قائمة المتصلين Contact List



تفاصيل متقدمة:-
الخطأ البرمجي في طريقه استخدام داله FormatMessageW في مكتبه kernel32
العنوان 0076228A
عندما يستورد الماسنجر قائمه اتصال يقوم بحجز كتله ذاكريه Heap بحجم 4096 بايت
يقوم بعد ذلك بكتابه رساله تطلب من المستخدم تأكيد اضافه الايميل المحدد ضمن الرساله
يظهر عنوان الايميل الالكتروني الذي نستطيع استغلال
للتجربة احفظ الملف التالي:-
تحميل
وبعد تشغيل الماسنجر توجه للقائمة Contact او اتصال وثم استيراد قائمة متصلين Import Instant Messaging Contactsواختر الملف السابق لترى طريقه حدوث الثغرة



الحل للمشكلة أفضل حل الكل يستخدم الاصدار 7.5 الى حين صدور الاصدار الأحدث من المصاب.

liltingking
17/10/2006, 01:34
مشكور اخوي عادل على المعلومه

dot
17/10/2006, 02:10
مشكور على ه المعلومة..:D

سهرت الليل
17/10/2006, 07:10
:D شكرا جزيلا على المعلومة

loayorange
19/10/2006, 02:05
:king: يسلموا هالانامل على هالمعلومه ،، والله انك تستاهل كل شي

adiga
19/10/2006, 16:02
مشكور اخ

abdooo
19/10/2006, 21:02
مشكووووووووور

anaadoul
19/10/2006, 21:11
خيو بدال ما تحطها هون بعتها لمايكروسوفت
ما احسن؟!
بركي بيعينوك ديباجر Debuger؟
على فكرة انا مبرمج
وصرلي عم استعمل الاصدار 8 من وقت ما كان Beta
ولا مرة عمل معي مشاكل بعد ما نزل Release
بعدين 4 كيلو من ال Heap ما بيسمنو ولا بيغنو من جوع ف من وين بدو يجي ال Over Flow؟!
لاتكون المشكلة من جاهزك؟

anaadoul
19/10/2006, 21:23
وهي ال تعريفات تبعيت ال داله FormatMessageW

VB6
Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As
Long, Arguments As Long) As Long


C#.Net 2005
using System.Runtime.InteropServices;
[DllImportAttribute("user32.dll")]
public static extern long FormatMessageA(int dwFlags, object lpSource, long dwMessageId, long dwLanguageId, string lpBuffer, long nSize, long Arguments);


وهي التفاصيل
· dwFlags
Contains a set of bit flags that specify aspects of the formatting process and how to interpret the lpSource parameter. The low-order byte of dwFlags specifies how the function handles line breaks in the output buffer. The low-order byte can also specify the maximum width of a formatted output line.
You can specify a combination of the following bit flags:
FORMAT_MESSAGE_ALLOCATE_BUFFER
Specifies that the lpBuffer parameter is a pointer to a PVOID pointer, and that the nSize parameter specifies the minimum number of bytes (ANSI version) or characters (Unicode version) to allocate for an output message buffer. The function allocates a buffer large enough to hold the formatted message, and places a pointer to the allocated buffer at the address specified by lpBuffer. The caller should use the LocalFree function to free the buffer when it is no longer needed.
FORMAT_MESSAGE_IGNORE_INSERTS
Specifies that insert sequences in the message definition are to be ignored and passed through to the output buffer unchanged. This flag is useful for fetching a message for later formatting. If this flag is set, the Arguments parameter is ignored.
FORMAT_MESSAGE_FROM_STRING
Specifies that lpSource is a pointer to a null-terminated message definition. The message definition may contain insert sequences, just as the message text in a message table resource may. Cannot be used with FORMAT_MESSAGE_FROM_HMODULE or FORMAT_MESSAGE_FROM_SYSTEM.
FORMAT_MESSAGE_FROM_HMODULE
Specifies that lpSource is a module handle containing the message-table resource(s) to search. If this lpSource handle is NULL, the current process’s application image file will be searched. Cannot be used with FORMAT_MESSAGE_FROM_STRING.
FORMAT_MESSAGE_FROM_SYSTEM
Specifies that the function should search the system message-table resource(s) for the requested message. If this flag is specified with FORMAT_MESSAGE_FROM_HMODULE, the function searches the system message table if the message is not found in the module specified by lpSource. Cannot be used with FORMAT_MESSAGE_FROM_STRING.
If this flag is specified, an application can pass the result of the GetLastError function to retrieve the message text for a system-defined error.
FORMAT_MESSAGE_ARGUMENT_ARRAY
Specifies that the Arguments parameter is not a va_list structure, but instead is just a pointer to an array of 32-bit values that represent the arguments.

The low-order byte of dwFlags can specify the maximum width of a formatted output line. Use the FORMAT_MESSAGE_MAX_WIDTH_MASK constant and bitwise Boolean operations to set and retrieve this maximum width value.

The following table shows how FormatMessage interprets the value of the low-order byte.
0
There are no output line width restrictions. The function stores line breaks that are in the message definition text into the output buffer.
A nonzero value other than FORMAT_MESSAGE_MAX_WIDTH_MASK
The nonzero value is the maximum number of characters in an output line. The function ignores regular line breaks in the message definition text. The function never splits a string delimited by white space across a line break. The function stores hard-coded line breaks in the message definition text into the output buffer. Hard-coded line breaks are coded with the %n escape sequence.
FORMAT_MESSAGE_MAX_WIDTH_MASK
The function ignores regular line breaks in the message definition text. The function stores hard-coded line breaks in the message definition text into the output buffer. The function generates no new line breaks.

· lpSource
Specifies the location of the message definition. The type of this parameter depends upon the settings in the dwFlags parameter.
FORMAT_MESSAGE_FROM_HMODULE
lpSource is an hModule of the module that contains the message table to search.
FORMAT_MESSAGE_FROM_STRING
lpSource is an LPTSTR that points to unformatted message text. It will be scanned for inserts and formatted accordingly.

If neither of these flags is set in dwFlags, then lpSource is ignored.

· dwMessageId
Specifies the 32-bit message identifier for the requested message. This parameter is ignored if dwFlags includes FORMAT_MESSAGE_FROM_STRING.

· dwLanguageId
Specifies the 32-bit language identifier for the requested message. This parameter is ignored if dwFlags includes FORMAT_MESSAGE_FROM_STRING.
If you pass a specific LANGID in this parameter, FormatMessage will return a message for that LANGID only. If the function cannot find a message for that LANGID, it returns ERROR_RESOURCE_LANG_NOT_FOUND. If you pass in zero, FormatMessage looks for a message for LANGIDs in the following order:
1. Language neutral
2. Thread LANGID, based on the thread's locale value
3. User default LANGID, based on the user's default locale value
4. System default LANGID, based on the system default locale value
5. US English
If FormatMessage doesn't find a message for any of the preceding LANGIDs, it returns any language message string that is present. If that fails, it returns ERROR_RESOURCE_LANG_NOT_FOUND.

· lpBuffer
Points to a buffer for the formatted (and null-terminated) message. If dwFlags includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the LocalAlloc function, and places the address of the buffer at the address specified in lpBuffer.

· nSize
If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of bytes (ANSI version) or characters (Unicode version) that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of bytes or characters to allocate for an output buffer.

· Arguments
Points to an array of 32-bit values that are used as insert values in the formatted message. %1 in the format string indicates the first value in the Arguments array; %2 indicates the second argument; and so on.
The interpretation of each 32-bit value depends on the formatting information associated with the insert in the message definition. The default is to treat each value as a pointer to a null-terminated string.
By default, the Arguments parameter is of type va_list*, which is a language- and implementation-specific data type for describing a variable number of arguments. If you do not have a pointer of type va_list*, then specify the FORMAT_MESSAGE_ARGUMENT_ARRAY flag and pass a pointer to an array of 32-bit values; those values are input to the message formatted as the insert values. Each insert must have a corresponding element in the array.

ممكن تفهمني من وين عم يجي هيك خطأ ب هال API اللي كلها Managed By Windows؟

عيون جريئه
19/10/2006, 22:30
انا بستخدم مسنجر 3 :lol:

anaadoul
19/10/2006, 22:38
انا بستخدم مسنجر 3 :lol:


احلى شي... :o:o
ما بتقصري...
بس ليش؟:shock::?
معقول جهازك ما بيتحمل المسنجر الجديد؟ :p

تركي1411
01/11/2006, 16:13
انا جربتو لكن ماعجبني بشوف انو ال7 ونص احسن

magicman
02/11/2006, 23:35
اخي الفاضل نزلت نسخة جديدة كما تقول الشركة
////////////// الروابط الي بيحطوها الأعضاء بيقدر فقط الأعضاء يشوفوها ، اذا مصرّ تشوف الرابط بك تسجل يعني تصير عضو بأخوية سوريا بالأول -///////////////

1000 شكر على التنبيه اخي

بطيخـ حمرة ـة
02/11/2006, 23:43
تسلم اخووي علا التحذيير :D

ta_06
02/11/2006, 23:44
مشكور على المعلومة

Eh@Ab
02/11/2006, 23:54
لا حول ولا قوة الا بالله

مشكور عالمعلومة :D

dj-joker
08/05/2007, 14:58
في حدا يساعدني هون أنا عندي مشكلة المسنجر كلو مو شغال لا( 8 ) ولا (7.5):tears:
كان شغال وبعدين لحالو ماعاد شتغل:waa3:

magicman
10/05/2007, 16:13
اخوي زبط التاريخ! :) وخبرني

dj-joker
16/05/2007, 11:46
:dunno: مابعرف كيف بدي أشكرك:mimo:
من زمااااان كان بدي متل هل الحل :kissyou: