Microsoft KB Archive/112121

= ACC2: Changes in Security in Microsoft Access Version 2.0 =

Article ID: 112121

Article Last Modified on 1/26/2005

-

APPLIES TO


 * Microsoft Access 2.0 Standard Edition

-



This article was previously published under Q112121



SUMMARY
Advanced: Requires expert coding, interoperability, and multiuser skills.

This article describes the changes in the Microsoft Access security model from version 1.x to version 2.0.



MORE INFORMATION
The security model is essentially unchanged from version 1.x to version 2.0. The following internal items are changed in version 2.0 security:

 The SID column of the MSysACEs table is no longer directly readable through the Microsoft Access user interface. This prevents users from directly reading the user SIDs and using them to breach security. To view and update permissions, you must use Access Basic. In Microsoft Access version 1.x, users had permission to open any database that was not protected by the file system. In Microsoft Access version 2.0, there are two new database-level permissions to control this: Open/Run and Open Exclusive. You can use the Open/Run permission to lock unauthorized users out of your database entirely. You can use the Open Exclusive permission to prevent users from inadvertently locking each other out of multiuser applications by opening the database exclusively.

As in Microsoft Access 1.x, once a user has opened a database there is no way, using the user interface, to prevent that user from creating new objects in the database. However, you can use Access Basic code to prevent users from creating new tables or queries in a database by revoking permissions on the Tables Container object. The Microsoft Access 2.0 Setup program uses only the user and company names as seeds for the Admins group's SID. The version 1.x Setup program uses the user and company names, as well as the serial number from the installation disks. Query permissions can cross database boundaries. This means you can use owner's permissions security with attached tables, as well as with local tables. The Run With Owner's Permissions query property in version 1.x has been replaced in version 2.0 by a query property called RunPermissions that can be set to User's or Owner's. There was a known and documented hole in Microsoft Access version 1.x security whereby an unauthorized user could read a SID from a database and paste it over a SID in the MSysAccounts table in the SystemDB, thereby masquerading as a different user. The following changes were made to version 2.0 security to correct this problem:

 System tables in version 2.0 are not updatable. The SID columns in the MSysACEs and MSysObjects tables are unreadable in version 2.0.</li> The file encryption algorithm is enhanced. SIDs are readable by members of the Admins group only, and are not writable at all in version 2.0.</li></ol>

Microsoft Access version 2.0 can run version 1.x databases, but they are still vulnerable to the version 1.x security hole. This is so that sites can run a mixed environment, with some users running Microsoft Access version 2.0 and others running Microsoft Access version 1.x. Microsoft Access version 2.0 cannot make changes to security in a version 1.x database unless the database is converted to version 2.0 format.

Administrators of version 1.x sites that are upgrading to version 2.0 should be aware that in order to prevent unauthorized users from exploiting the version 1.x security hole to break into a secure version 2.0 system, it is necessary to re-create user and group accounts with the new longer PIDs, and to reassign permissions. If this is not done, it is possible for an unauthorized user to read a user's SID from an old version 1.x copy of the database and paste it over their own account's SID using Microsoft Access version 1.x and a version 1.x SystemDB. If the users' SIDs are re-created using Microsoft Access version 2.0, there is no way for an unauthorized user to ever read a user's SID.

If you are not concerned about the possibility of an unauthorized user exploiting the 1.x security hole to break into a secure version 2.0 system (perhaps because you are using security only to protect well- meaning users from inadvertently destroying data or applications, rather than protecting yourself from unauthorized intrusion), then you do not need to re-create your user and group accounts. Version 2.0 security will work properly with the old SIDs. Although the security in Microsoft Access version 2.0 is enhanced to protect your databases from unwanted intrusion, Microsoft recommends that you convert your databases to use version 2.0 security.

When you are using the Microsoft Access 2.0 Upgrade disks to upgrade an existing version 1.0 or 1.1 installation to version 2.0, a new SystemDB is created. The old SystemDB is not changed in any way. If you want to use your old SystemDB and your old SIDs, use the Workgroup Administrator to join your old workgroup.</li> In Microsoft Access version 1.x, the Guests group is given read permissions on all objects by default. In Microsoft Access 2.0, the Guests group has no default permissions on newly created objects.</li></ul>

Additional query words: security

Keywords: kbinfo kbusage KB112121

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.