PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آسيب‌پذيري Login ID در SQL Server 7.0



Borna66
05-16-2011, 11:16 PM
يك نقص امنيتي در الگوريتم پنهان سازي مورد استفاده در پنهان كردن اسم رمز و Login ID در Microsoft Enterprise Manager for SQL Server 7.0 وجود دارد. اين مشكل زماني رخ مي‌دهد كه بخواهيد SQL Server جديدي را در Enterprise Manager نصب ‌كنيد يا SQL server نصب شده‌اي را ويرايش ‌كنيد (منظور زماني است كه برخي مشخصه‌هاي آن تغيير مي‌دهيد). اگر SQL Server ، Login name به جاي يك Domain ، User name ويندوز بكار رود و checkbox عنوان "Alway prompt for login name and password" ست نشده باشد،‌ LoginID و اسم رمز به صورتي ضعيف پنهان شده و در رجيستري ذخيره مي‌شود.

هنگامي كه يك (database Administrator)DBA به داخل يك workstation با يك log ، Profile مي‌شود LoginID و اسم رمز، هر دو در كليد رجيستري ذخيره مي‌شوند، اين اطلاعات به عنوان يك فايل با نام NTUSER.DAT (در ويندوز NT) يا USER.DAT (در ويندوز 95 يا ويندوز 98) زماني كه كاربر logoff مي‌كند ذخيره مي‌شود. فرد متخاصم مي‌تواند اين فايل را در يك ويرايشگر متن باز كرده و DBA ، loginID و اسم رمز پنهان شده را ببينيد. فرد متخاصم مي‌تواند اسم رمز و login ID رمز شده پنهان شده را برگردانده و loginID و اسم رمز را بدست آورد. وجود اين مشكل امنيتي به متخاصمين محلي و راه دور اين اجازه را مي‌دهد كه اسم رمز Administrator سيستم را بدست آورده و كنترل كاملي روي پايگاه داده روي سرور داشته باشند. اين مشكل امنيتي در Microsoft Enterprise Manager for SQL server 7.0 وجود دارد. سيستم پنهان سازي كه براي پنهان كردن اسم رمز و SQL server ، LoginID نصب شده بكار مي‌رود، قابل كشف است. روش پنهان سازي از جانشيني الفبايي استفاده مي‌كند و هركدام از كاراكترهاي Unicode در اسم رمز با دو بايت متناسب با موقعيتشان در رشته، XOR شده‌اند. اگر checkbox با عنوان “Always prompt for login name and password” هنگامي كه SQL server نصب مي‌شود ست نشده باشد، LoginID و اسم رمز به صورت ضعيفي در رجيستري در قسمت :

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\MSSQLServer\S QLEW\Registered Server X]

ذخيره مي‌شود. اطلاعات ذخيره شده در HKEY_CURRENT_USER زماني در دسترس است كه كاربر در حال حاضر log شده باشد در اين حال زماني كه كاربر ويندوز NT به سيستم log مي‌شود يك كپي متفاوت از HKEY_URRENT_USER لود مي‌شود و هنگامي كه كاربر Logoff مي‌كند محتويات HKEY_URRENT_USER در فايل NTUSER.DAT يا USER.DAT ذخيره مي‌شود و اين فايل‌ها را مي‌توان در Notepad ويندوز باز كرد و loginID و اسم رمز را براحتي در آن ديد اگر DBA از يك workstation ديگري، به سيستم log كند، فايل NTUSER.DAT روي همان workstation كه كاربر از طريق آن به سيستم log شده است ذخيره مي‌شود.

براي حل اين مشكل امنيتي و استفاده مطمئن از SQL server، مايكروسافت پيشنهاد كرده كه از Windows Integrated security استفاده شود زيرا در مد Integrated security (امنيت يكپارچه)، اسم رمزها هيچگاه ذخيره نمي‌شوند.

اگر SQL server ، LoginID براي Logging به يك سرور در Enterprise Manager تعيين شده باشد، مايكرسافت پيشنهاد مي‌كند كه از انتخاب “Always Prompt for Login name and password" براي جلوگيري ذخيره اسم رمزها در رجيستري استفاده كنيد.