آسیبپذیری Login ID در SQL Server 7.0
یك نقص امنیتی در الگوریتم پنهان سازی مورد استفاده در پنهان كردن اسم رمز و 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\SQLEW\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" برای جلوگیری ذخیره اسم رمزها در رجیستری استفاده كنید.