CS Oss 5
CS Oss 5
UNIT 5
5.1 UNIX Security
Unix is an Operating System that is truly the base of all Operating Systems like Ubuntu,
Solaris, POSIX, etc. It was developed in the 1970s by Ken Thompson, Dennis Ritchie,
and others in the AT&T Laboratories. It was originally meant for programmers developing
software rather than non-programmers.
Unix and the C were found by AT&T and distributed to government and academic
institutions, which led to both being ported to a wider variety of machine families than any
other operating system. The main focus that was brought by the developers in this
operating system was the Kernel. Unix was considered to be the heart of the operating
System. The system Structure of Unix OS are as follows:
UNIX is a family of multitasking, multiuser computer operating systems developed in the
mid 1960s at Bell Labs. It was originally developed for mini computers and has since been
ported to various hardware platforms. UNIX has a reputation for stability, security, and
scalability, making it a popular choice for enterprise-level computing.
For those preparing for exams like GATE, a thorough understanding of operating
systems, including Unix, is essential. Our GATE course provides an in-depth exploration
of Unix, covering its history, structure, and key concepts that are crucial for the exam
The basic design philosophy of UNIX is to provide simple, powerful tools that can be
combined to perform complex tasks. It features a command-line interface that allows
users to interact with the system through a series of commands, rather than through a
graphical user interface (GUI).
Some of the key features of UNIX include:
1. Multiuser support: UNIX allows multiple users to simultaneously access the same
system and share resources.
2. Multitasking: UNIX is capable of running multiple processes at the same time.
3. Shell scripting: UNIX provides a powerful scripting language that allows users to
automate tasks.
4. Security: UNIX has a robust security model that includes file permissions, user
accounts, and network security features.
5. Portability: UNIX can run on a wide variety of hardware platforms, from small
embedded systems to large mainframe computers.
6. Communication: UNIX supports communication methods using the write command,
mail command, etc.
7. Process Tracking: UNIX maintains a record of the jobs that the user creates. This
function improves system performance by monitoring CPU usage. It also allows you to
keep track of how much disk space each user uses, and the use that information to
regulate disk space.
Today, UNIX is widely used in enterprise-level computing, scientific research, and web
servers. Many modern operating systems, including Linux and macOS, are based on
UNIX or its variants.
Figure – system structure
Layer-1: Hardware: It consists of all hardware related information.
Layer-2: Kernel: This is the core of the Operating System. It is a software that acts as
the interface between the hardware and the software. Most of the tasks like memory
management, file management, network management, process management, etc., are
done by the kernel.
Layer-3: Shell commands: This is the interface between the user and the kernel.
Shell is the utility that processes your requests. When you type in a command at the
terminal, the shell interprets the command and calls the program that you want. There
are various commands like cp, mv, cat, grep, id, wc, nroff, a.out and more.
Layer-4: Application Layer: It is the outermost layer that executes the given external
applications.
Figure – kernel and its block diagram
This diagram shows three levels: user, kernel, and hardware.
The system call and library interface represent the border between user programs and
the kernel. System calls look like ordinary function calls in C programs. Assembly
language programs may invoke system calls directly without a system call library. The
libraries are linked with the programs at compile time.
The set of system calls into those that interact with the file subsystem and some
system calls interact with the process control subsystem. The file subsystem manages
files, allocating file space, administering free space, controlling access to files, and
retrieving data for users.
Processes interact with the file subsystem via a specific set of system calls, such as
open (to open a file for reading or writing), close, read, write, stat (query the attributes
of a file), chown (change the record of who owns the file), and chmod (change the
access permissions of a file).
The file subsystem accesses file data using a buffering mechanism that regulates data
flow between the kernel and secondary storage devices. The buffering mechanism
interacts with block I/O device drivers to initiate data transfer to and from the kernel.
Device drivers are the kernel modules that control the operator of peripheral devices.
The file subsystem also interacts directly with “raw” I/O device drivers without the
intervention of the buffering mechanism. Finally, the hardware control is responsible for
handling interrupts and for communicating with the machine. Devices such as disks or
terminals may interrupt the CPU while a process is executing. If so, the kernel may
resume execution of the interrupted process after servicing the interrupt.
Interrupts are not serviced by special processes but by special functions in the kernel,
called in the context of the currently running process.
Difference between Unix and Linux
Linux is essentially a clone of Unix. But, basic differences are shown below:
Linux Unix
The source code of Linux is freely The source code of Unix is not freely
available to its users available general public
• Protection state: describes the operations that system subjects can perform
on system objects
– Objects: files
• Process with the owner UID privilege can modify the protection
state
e.g., rwxr--r--
Example
• Else if the process GID or supplementary groups correspond to the file’s group GID, use the
mode bits for the group permissions.
You can authorize specific users for administrative access to your security or for OMVS shell
write privileges.
To authorize a user, you can use one of the following OMVS segments:
Default OMVS segment
Specific OMVS segment
1. Assign an OMVS UID number to each user ID. If your security administrator
does not have a policy for assigning OMVS UID numbers, use a unique number.
2. Define the OMVS segment for each user. For a user ID uuuuuuu, UID
number nnn, and user home directory /u/name, enter the following commands:
o For an ACF2 for z/OS system, enter the following commands:
o For a Top Secret for z/OS system, enter the following commands:
TSS ADD(
uuuuuuu
) HOME(/u/
name
) OMVSPGM(/bin/sh) UID(
nnn
)
GROUP(OMVSGRP)
ALU
uuuuuuu
OMVS(UID(
nnn
) HOME(/u/
name
) PROGRAM(/bin/sh))
The OMVS segment must contain a home directory (HOME) and a login shell
(PROGRAM or OMVSPGM).
3. Confirm the contents of the OMVS segment by entering the following commands:
o For an ACF2 for z/OS system, enter the following commands:
o For a Top Secret for z/OS system, enter the following command:
TSS LIS(
uuuuuu
) DATA(ALL)
LISTUSER
uuuuuu
OMVS NORACF
4. Define a home directory to each user ID, and ensure that the UID has at least
READ access to it.
For example, to set up the directory, /u/name for UID(nnn), issue the following
commands in the OMVS UNIX shell:
mkdir /u/
name
chown
nnn
/u/
name
5. Confirm the owner and access to the directory by using the following command:
ls -ld /u/
name
group
8192 Sep 31 14:58 /u/
name
In this instance, all files in user home directories are stored on a remote server named remote-
server along with spooled e-mail. Therefore, preserving just the hard drive of the single system would
not preserve all potentially relevant files associated with the use of that system. It would also be necessary
to preserve files stored on the remote server.
5.5 UNIX Vulnerabilities
CVE-2001-0369
Buffer overflow in lpsched on DGUX version R4.20MU06 and MU02 allows a local attacker to obtain root access via a
CVE-2001-0134
Buffer overflow in cpqlogin.htm in web-enabled agents for various Compaq management software products such as
Insight Manager and Management Agents allows remote attackers to execute arbitrary commands via a long user
name.
CVE-2000-0845
kdebug daemon (kdebugd) in Digital Unix 4.0F allows remote attackers to read arbitrary files by specifying the full file
CVE-2000-0315
traceroute in NetBSD 1.3.3 and Linux systems allows local unprivileged users to modify the source address of the
CVE-2000-0314
traceroute in NetBSD 1.3.3 and Linux systems allows local users to flood other systems by providing traceroute with
a large waittime (-w) option, which is not parsed properly and sets the time delay for sending packets to zero.
CVE-1999-1458
Buffer overflow in at program in Digital UNIX 4.0 allows local users to gain root privileges via a long command line
argument.
CVE-1999-1221
dxchpwd in Digital Unix (OSF/1) 3.x allows local users to modify arbitrary files via a symlink attack on the
dxchpwd.log file.
CVE-1999-1210
xterm in Digital UNIX 4.0B *with* patch kit 5 allows local users to overwrite arbitrary files via a symlink attack on a
core dump file, which is created when xterm is called with a DISPLAY environmental variable set to a display that
CVE-1999-1044
Vulnerability in Advanced File System Utility (advfs) in Digital UNIX 4.0 through 4.0d allows local users to gain
privileges.
CVE-1999-0714
CVE-1999-0713
The dtlogin program in Compaq Tru64 UNIX allows local users to gain root privileges.
CVE-1999-0691
Buffer overflow in the AddSuLog function of the CDE dtaction utility allows local users to gain root privileges via a
CVE-1999-0687
The ToolTalk ttsession daemon uses weak RPC authentication, which allows a remote attacker to execute
commands.
CVE-1999-0513
ICMP messages to broadcast addresses are allowed, allowing for a Smurf attack that can cause a denial of service.
CVE-1999-0513
ICMP messages to broadcast addresses are allowed, allowing for a Smurf attack that can cause a denial of service.
CVE-1999-0358
Digital Unix 4.0 has a buffer overflow in the inc program of the mh package.
CVE-1999-0073
Telnet allows a remote client to specify environment variables including LD_LIBRARY_PATH, allowing an attacker to
This article will show a brief history of Windows OS security development and refinement since Windows
1.
A major limitation to early Windows OS versions (and MS-DOS) was the fact that the file system they used
was File Allocation Table (FAT). While considered a robust file system for early OSes, it was intended for
smaller drives and for simplistic folder hierarchies. FAT used no security measures, meaning it was easy to
access, modify and delete information stored using this system.
Security issues were compounded by the fact that 16-bit Windows OS versions were practically impossible
to update without expanding to 32-bit. The now-ubiquitous and frequent Windows security update didn’t
exist in the early days of Windows. On top of all of that, the early Windows versions didn’t allow multiple
users, so every user of a shared computer used the same login credentials.
Windows NT
This version of Windows OS was a watershed moment for Microsoft in terms of OS security. Windows NT
was the first security-minded Windows OS and used the New Technology File System (NTFS) as a filing
system. NTFS offered considerable improvements over FAT, including:
NTFS offers longer file and folder names. FAT32 (32-bit) only offers up to 11 characters, while
NTFS offers up to 255
NTFS offers greater object security by storing file access rights
NTFS logs every time it writes information (crucial for security audits)
Encryption
Windows 2000
Windows 2000 introduced Data Protection Application Programming Interface (DPAPI). This built-in
component allowed for asymmetric encryption of private keys.
Windows XP
The next major OS security facelift for Windows OS came with Windows XP in 2001. Sold as Microsoft’s
most secure OS ever, Windows XP ended up becoming the most patched because of its widespread use.
Among the security improvements in Windows XP were:
Windows Vista
Released in 2007, Windows Vista continued the tradition of improving security by introducing the
following new OS security capabilities:
User Account Control (UAC): This security control feature helps to ensure that unauthorized OS
changes are not made without administrator approval
Windows Defender: This in-built anti-spyware solution protects the OS from unwanted or rogue
software by blocking it and when needed, removing it
BitLocker: Windows encryption feature
Windows 7
Windows 7 debuted with the following security improvements:
Data Execution Prevention (DEP): This security technique marks data pages as non-executable
stopping attackers from injecting code
Address Space Layout Randomization (ASLR): Randomizes memory addresses, making it harder to
carry out memory-based attacks
Improved cryptography
Enhanced BitLocker capabilities
Windows 8
The security changes in Windows 8 were mostly hardware-based. One OS-based security change was the
addition of AppContainer. Enabled by a new integrity level that stops read and write access to higher
integrity items, AppContainer was an improvement over previous versions of Windows that allowed low-
integrity applications to access medium- and high-integrity objects. AppContainer enriched the OS’s
overall security landscape.
Windows 10
Released in 2015, Windows 10 is the latest of the Windows OSs, and comes with:
Windows Defender Credential Guard: This new Windows Defender capability isolates credentials
and only allows privileged system software to access them, making it harder to attack the OS
Improved security baseline by enabling svchost.exe
Conclusion
At its start, the Windows OS wasn’t known for security. Starting in Windows NT, with its NTFS file system,
Windows has grown into a reliably secure OS.
Windows does still leave itself open to more attacks by allowing the open development and use of third-
party applications. With every update though, more security decisions are being made default, making
every Windows system more secure.
Watch the latest Microsoft Mechanics Windows 11 security video that shows off some of the latest
Windows 11 security technology.
Use the links in the following sections to learn more about the operating system security features and
capabilities in Windows.
System security
Expand table
Feature name Description
Secure Boot Secure Boot and Trusted Boot help to prevent malware and
and Trusted corrupted components from loading when a device starts.
Boot
Secure Boot starts with initial boot-up protection, and then
Trusted Boot picks up the process. Together, Secure Boot and
Trusted Boot help to ensure the system boots up safely and
securely.
Measured boot Measured Boot measures all important code and configuration
settings during the boot of Windows. This includes: the
firmware, boot manager, hypervisor, kernel, secure kernel and
operating system. Measured Boot stores the measurements in
the TPM on the machine, and makes them available in a log
that can be tested remotely to verify the boot state of the client.
Network security
Expand table
Feature name Description
Transport Layer Transport Layer Security (TLS) is a cryptographic protocol
Security (TLS) designed to provide communications security over a
network. TLS 1.3 is the latest version of the protocol and is
enabled by default in Windows 11. This version eliminates
obsolete cryptographic algorithms, enhances security over
older versions, and aims to encrypt as much of the TLS
handshake as possible. The handshake is more performant
with one fewer round trip per connection on average, and
supports only five strong cipher suites which provide perfect
forward secrecy and less operational risk.
Domain Name Starting in Windows 11, the Windows DNS client supports
System (DNS) DNS over HTTPS (DoH), an encrypted DNS protocol. This
security allows administrators to ensure their devices protect DNS
queries from on-path attackers, whether they're passive
observers logging browsing behavior or active attackers
trying to redirect clients to malicious sites.
Feature name Description
In a zero-trust model where there is no trust placed in a
network boundary, having a secure connection to a trusted
name resolver is required.
Bluetooth pairing The number of Bluetooth devices connected to Windows
and connection continues to increase. Windows supports all standard
protection Bluetooth pairing protocols, including classic and LE Secure
connections, secure simple pairing, and classic and LE
legacy pairing. Windows also implements host based LE
privacy. Windows updates help users stay current with OS
and driver security features in accordance with the Bluetooth
Special Interest Group (SIG), Standard Vulnerability
Reports, and issues beyond those required by the Bluetooth
core industry standards. Microsoft strongly recommends that
users ensure their firmware and/ or software of their
Bluetooth accessories are kept up to date.
WiFi Security Wi-Fi Protected Access (WPA) is a security certification
program designed to secure wireless networks. WPA3 is the
latest version of the certification and provides a more secure
and reliable connection method as compared to WPA2 and
older security protocols. Windows supports three WPA3
modes: WPA3 personal with the Hash-to-Element (H2E)
protocol, WPA3 Enterprise, and WPA3 Enterprise 192-bit
Suite B.
Before presenting this Windows account authentication and authorization proposal, I would like to define
what authentication and authorization mean, the difference between the two and how the .NET
Framework manages them. If you are already confident with these concepts you can skip to the next
section.
Authorization is the ability to grant or deny access to resources, according to the rights defined for the
different kinds of entities requesting them.
When dealing with Windows Operating System, and its underlying NTFS file system, authorizations are
managed by assigning to each object (files, registry keys, cryptographic keys and so on) a list of the
permissions granted to each user recognized by the system.
This list is commonly called the “Access Control List” or ACL (the correct name is actually “Discretionary
Access Control List” or DACL, to distinguish it from the “System Access Control List” or SACL). The ACL
is a collection of “Access Control Entries” or ACEs. Each ACE contains the identifier for a specific user
(“Security Identifier” or SID) and the permissions granted to it.
As you probably already know, to view the ACL for a specific file, you right-click the file name, select
Properties and click on the Security tab. You will see something like this:
The “Group or user names” section lists all the users and groups, by name, which have at least one ACE
in the ACL, while the “Permissions” section lists all the permissions associated with a specific group or
user (or, rather, with its SID). You can modify the ACL by pressing the Edit button.
To view the ACL of a specific file using the .NET Framework, you can use the FileSecurity class that you
can find under the System.Security.AccessControl namespace. The following example shows how to
browse the ACL of a file named “C:\resource.txt”:
1 FileSecurity f = File.GetAccessControl(@"c:\resource.txt");
2 AuthorizationRuleCollection acl = f.GetAccessRules(true, true, typeof(NTAccount));
3
4 foreach (FileSystemAccessRule ace in acl)
5 {
6 Console.WriteLine("Identity: " + ace.IdentityReference.ToString());
7 Console.WriteLine("Access Control Type: " + ace.AccessControlType);
8 Console.WriteLine("Permissions: " + ace.FileSystemRights.ToString() + "\n");
By running this code in a console application, you get the following output:
Figure 2: Output of a console application that lists the ACEs of a demo file.
We have denied the Read and Read & execute attributes to the CASSANDRA\matteo account, but we
want to see what happens when our demo application tries to open the file. To do so, we add a new
method to it:
1 /// <summary>
3 /// </summary>
5 {
7
8 try
9 {
10 stream = File.OpenRead(Server.MapPath("resource.txt"));
12 }
13 catch (UnauthorizedAccessException)
14 {
16 }
17 finally
18 {
20 }
21 }
The CanLoadResource() method tries to open resource.txt, in order to read its content. If the load
succeeds, the “Access to file allowed.” message is written on the page. If
an UnauthorizedAccessException exception is thrown, the message “Access to file denied.” is written on
the page, as an error. The WriteException() method is a helper method used to write an exception
message on the page.
Now we launch our application with authorizations set as in Figure 6 and use “CASSANDRA\matteo” to
log into the application. Doing that, we obtain something that should sound strange:
Figure 7: Logon with user CASSANDRA\matteo with permissions as in Figure 6.
As you can see in the Figure 7, resource.txt can be loaded by the application even if the credentials
provided for the login refer to an account that has no permissions to access it.
This happens because, in this case, the Application Pool associated with the web application works in
Integrated mode, which relates authentication and authorization to different users. Specifically,
authentication involves the user identified by the credentials provided, while authorization involves the
user account used by the Application Pool associated with the application. In our example, the Application
Pool uses the NETWORK SERVICE account, which has permission to access the file.
We’ll try to deny these permissions by modifying the ACL of the resources.txt file:
Figure 8: ACL for the NETWORK SERVICE account with denied permissions.
As you can see, the file is no longer available, demonstrating that the authorization process involves the
NETWORK SERVICE account.
To use authorization at the authenticated user level, we need to use Impersonation. With impersonation,
we are able to allow the Application Pool to run with the permissions associated with the authenticated
user. Impersonation only works when the Application Pool runs in Classic Mode (in Integrated mode the
web application generates the “500 – Internal Server Error” error). To enable impersonation, we need to
enable the ASP.NET Impersonation feature, as noted in Figure 3 and the discussion that followed it.
If we switch our Application Pool to Classic Mode (enabling the ASP.NET 4.0 ISAPI filters, too) and
enable ASP.NET impersonation, the demo application output becomes:
Figure 10: Logon with user CASSANDRA\matteo, with permissions as in Figure 8
and Application Pool in Classic Mode.
We are now able to load resource.txt even if the NETWORK SERVICE account has no permissions to
access it. This shows that the permissions used were those associated with the authenticated user, not
with the Application Pool’s identity.
To take advantage of Integrated mode without having to abandon impersonation, we can use a different
approach: running our application in Integrated mode and enabling impersonation at the code level when
we need it. To do so, we use the WindowsImpersonationContext class, defined under
the System.Security.Principal namespace. We modify the CanLoadResource() method as follows:
1 /// <summary>
3 /// </summary>
5 {
10
11 try
12 { IIdentity i = Thread.CurrentPrincipal.Identity;
13
14 imp = ((WindowsIdentity)i).Impersonate();
15
16 stream = File.OpenRead(Server.MapPath("resource.txt"));
18 }
19 catch (UnauthorizedAccessException)
20 {
22 }
23 finally
24 {
25 if (imp != null)
26 {
27 imp.Undo();
28 imp.Dispose();
29 }
30
32 }
33 }
With the modification added, we can force the application to impersonate the authenticated user before
opening the file. To achieve this, we have used the Impersonate() method of the WindowsIdentity class
(the class to which the Identity property belongs). With it, we have created
a WindowsImpersonationContext object. This object has a method, Undo(), that is able to revert the
impersonation after the resource has been used.
If we try to run our application with permissions as in Figure 8, we see that we are able to access
resource.txt even if the Application Pool is working in Integrated Mode.
Now we can resolve the security issue presented earlier. If we want to use Windows accounts to develop
a “role-based” application, we can use authentication to identify the user requesting resources and we
can use authorization, based on the user’s identity, to prevent access to resources not available for the
user’s role. If, for example, the resource we want to protect is a web page (like the admin page), we need
to set its ACL with the right ACEs, and use impersonation to force the Application Pool to use the
authenticated user’s permissions. However, as we have seen, when the Application Pool uses Integrated
mode, impersonation is available only at code level. So, although it’s easy in this situation to prevent
access to resources (like the resource.txt file) needed by a web page, it’s not so easy to prevent access
to a web page itself. For this, we need to use another IIS feature available in IIS Manager, .NET
Authorization Rules:
Figure 11: .NET Authorization Rules feature of IIS7 and IIS7.5.
.NET Authorization Rules is an authorization feature that works at ASP.NET level, not at IIS or file system
level (as for ACLs). So it permits us to ignore how IIS works and use Impersonation both in Integrated
Mode than in Classic Mode.
– It keeps all the necessary security information in one place in order to speed up access
validation.
– It allows every process to modify its own security attributes, in a restricted manner, without
affecting other processes in the system.
Allowing the process to change its own security attributes may appear strange at first glance, but
a newly created process is normally started with all attributes disabled. Later, when a thread
wishes to perform an allowed privileged operation, the thread enables the necessary attributes
before the operation is executed.
A subject is a process1 with one or more threads that execute on behalf of a user, and objects are all
other Windows NT resources that can be accessed and used by a subject. The privileges, the user SID
and the group SID of a user’s processes are stored in the access token held by the process. This token,
called the primary token, is used to grant threads different types of access to different objects. Threads
can also hold one additional token, called an impersonation token. This token, which allows the thread
to act on that subject’s behalf, is given to the thread by another subject. The information in the token is
compared with the information stored in the object’s Access Control List (ACL). The Security Reference
Monitor (SRM) performs the comparison when the object is first opened by the process.
Only legitimate users may access objects on a Windows NT system. Such a user must have a valid user
account. In addition, in order to access a particular object, the user needs to have access rights to it.
Guest and Administrator are the default accounts in all Windows NT systems. Another supported
concept is groups. With groups, permissions can be granted to a set of related users, which facilitates
the procedure of granting rights and permissions. A user may belong to more than one group at the
same time. There are a number of predefined groups in Windows NT: Administrator, Backup Operators,
Printer Operators, Power Users, Users, and Guest. There are basically two types of accounts, global and
local . A global account is accessible and visible inside a whole domain, while local accounts are
accessible and visible only on the computer on which they were created. There are also two types of
groups, local and global. Local groups can only be used inside the domain, while global groups can be
used, and are visible, in all the trusted and trusting domains of the system.
3 Object Security
A security descriptor is associated with every named object in Windows NT. It holds information about
logging for and access to the object. The access control is implemented by an Access Control List (ACL).
The ACL consists of a list of Access Control Entries (ACEs). An ACE contains a Security IDentifier (SID) and
the operation that the owner of this SID is allowed (or disallowed) to perform on the object. ACEs that
disallow operations are generally placed before ACEs that allow operations. The ACL is tied to the object
when it is created in one of three different ways.
When a process wants access to an object it has to open the object. In the open call, the process must
specify what operations it intends to perform on the object. The system will then search the ACL of the
object to try to find an ACE that contains the SID of the caller (or of any group of which he is a member)
and allows or disallows the requested operations. The search is done on a “first match” basis. If the call
succeeds, a handle to the object is passed to the process. All subsequent calls to the object will be made
through this handle so no further checks are done as long as the process performs only the operations
specified in the open call. If new operations are required, the object must be re-opened.
4 Logon Security
The logon procedure in Windows NT is fairly complicated and involves both the executive and a number
of protected servers, including WinLogon, LSA, and SAM, to authenticate and grant privileges to a user.
The WinLogon server is the coordinator. A detailed description of the logon procedure is given in [18]. At
logon time, a user can choose to logon either locally or remotely. In the former case, the user is
authenticated against the local SAM database, and in the latter case against a SAM database stored on a
Domain Controller (DC). In remote logons, the netlogon service, which is started when the computer is
booted, is used on both sides. Passwords sent over the network are encrypted.
5 Account Security
As mentioned in Section 3.2, only legitimate users are allowed to access objects on a Windows NT
system, and each user belongs to one or more groups. User accounts, except Administrator and Guest,
are defined by users that have the permissions required to create new accounts, e.g., users in the
Administrator group.
All account information is centrally stored in the SAM database, which is accessible only by the SAM
subsystem. Passwords are stored as hashed values and, by default, two hashed variants of each
password are stored, in LAN Manager format and in NT native format.
In addition to account information, e.g., username and password, a set of attributes called “rights” can
be specified. They define what a user (or group) can do in a system. The set of rights is given in Table 1.
Most of the rights are self-explanatory, for example a user account with the Log on locally rights
specified is allowed to logon to the system from the local machine. Windows NT has a standard policy
for assigning rights to certain groups.
For example, on a Windows NT workstation, everyone has the right to logon locally while, at a Windows
NT server, only Administrators and Operators are able to do that.
The account policies regulate password restrictions and account lockouts. These policies are first defined
when the account is created, but may later be changed. The following password options can be set: –
Maximal password age, sets limitations for the length of time a password can be used before it must be
changed. – Minimal password age, sets limitation for the length of time a password must be used before
a user is allowed to change it. – Minimal password length, sets a limit on the minimum number of
characters of which a password must at least consist. – Password Uniqueness, where a Windows NT
system can be configured to remember old passwords and force users to choose new passwords that
have not recently been used. An account can also be specified to be locked out after a given number of
unsuccessful logon attempts. The lockout feature offers a few options:
– Lockout after n bad logon attempts, where n must be assigned a positive integer value.
– Reset count after m minutes, where m specifies how many minutes shall pass before the bad logon
counter is cleared.
– Lockout duration, where forever (i.e., until an administrator unlocks) or duration in minutes are the
possible choices.
Note, however, that the default administrator account cannot be locked in any way.
6 TCP Security
A secure system must permit only services that are proved secure and necessary [4]. In Windows NT, it
is therefore possible to block communication to both TCP and UDP ports. This implies that a system can
be configured to accept only packets sent to specific ports on which secure servers listen. Microsoft calls
this feature TCP security.
3.7 Auditing
The Security Reference Monitor (SRM) and the Local Security Authority (LSA) are responsible for
auditing in Windows NT together with the Event Logger. Different types of events are grouped into
event categories, and auditing is then done on the basis of these groups. There are seven types of event
groups [18]: System, Logon/Logoff, Object Access, Privilege Use, Detailed Tracking, Policy Change and
Account Management.
The auditing is based on audit records constructed on request from the responsible subsystem by SRM
(in some cases by LSA). Requests from the executive are always carried out, while servers need the Audit
Privilege for SRM to honour their requests. The request must be sent for each occurrence of an event.
The audit record is then sent to LSA, which in turn sends it to the Event Logger, after field expansions
and/or field compressions. Finally, the Event Logger commits the audit record to persistent storage.
CVE-2023-44216
PVRIC (PowerVR Image Compression) on Imagination 2018 and later GPU devices offers software-transparent
compression that enables cross-origin pixel-stealing attacks against feTurbulence and feBlend in the SVG Filter
specification, aka a GPU.zip issue. For example, attackers can sometimes accurately determine text contained on a
web page from one origin if they control a resource from a different origin.
CVE-2023-36913
CVE-2023-36912
CVE-2023-36911
CVE-2023-36910
CVE-2023-36909
CVE-2023-36908
CVE-2023-36907
CVE-2023-36906
CVE-2023-36905
Windows Wireless Wide Area Network Service (WwanSvc) Information Disclosure Vulnerability
CVE-2023-36903
CVE-2023-36900
CVE-2023-36697
CVE-2023-36606
CVE-2023-36593
CVE-2023-36592
CVE-2023-36591
CVE-2023-36590
CVE-2023-36589
CVE-2023-36583
With Address Space Layout Randomization, the base locations of DLLs depend on boot-time
randomization. Basically, this implies that the base locations of libraries will be randomized at the
following reboot. This is an Achilles heel that can be taken advantage of by assailants, essentially by
joining weaknesses like memory divulgence or animal power assaults.
ASLR isn't upheld when the executable or DLLs are not worked with ASLR support. In spite of the fact
that Windows 8 and Windows 10 attempt to defeat this limit (e.g., power ASLR in Windows 8), there are
still exemptions that multiple occasions render the ASLR assurance ineffectual. More established
renditions of Windows and inheritance programs are especially inclined to this restriction. Also, ASLR on
32-bit frameworks experiences low entropy, making it defenseless against animal power and comparative
assaults.
Address Space Layout Randomization expects to keep an assault from dependably arriving at its
objective memory address. ASLR doesn't zero in on catching the assault, rather on making the assault
improbable to work. Once the shellcode leaps to some unacceptable location during the endeavor
(because of the memory randomization), the program conduct is vague. The cycle may get an exemption,
crash, stall out, or just proceed with conflicting conduct subsequently.
ASLR doesn't give any alarms about assault endeavors. At the point when a weakness is taken
advantage of and fizzles (because of ASLR's memory randomization), no ready or assault sign is gotten.
Basically ASLR doesn't 'know' when an assault occurred.
Scientific data about an assault, abuse, and shellcode is pivotal for any genuine criminological
examination. Taken advantage of cycles, memory dumps, and call stacks can be utilized to recognize,
unique mark, and label takes advantage of. ASLR can't give this data since it couldn't say whether an
assault occurs or so, all things considered it was halted.
Since Address Space Layout Randomization was presented in Windows OS, it has been avoided on
many occasions by genuine endeavors and assaults. Assailants consistently foster new procedures to
overcome ASLR safeguard. Sidestep procedures incorporate utilizing ROP chain in non-ASLR modules
(e.g., CVE 2013-1347), JIT/NOP splashing (e.g., CVE-2013-3346), just as memory divulgence
weaknesses and different strategies (e.g., CVE-2015-1685, CVE-2015-2449, CVE-2013-2556, CVE-
2013-0640, CVE-2013-0634).
In 2016, scientists from SUNY Binghamton and the University of California, Riverside, introduced a paper
brought Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR. The paper subtleties an
approach to assault the Branch Target Buffer (BTB). The BTB is important for the processor that rates up
if proclamations by foreseeing the result. Utilizing the creators' technique, it is feasible to decide the areas
of known branch directions in a running project. The assault being referred to was performed on a Linux
machine with an Intel Haswell processor (first delivered in 2013), yet could almost certainly be applied to
any cutting edge working framework and processor.
All things considered, you shouldn't really surrender. The paper offered a couple of ways that equipment
and working framework engineers can alleviate this danger. More current, fine-grain ASLR methods
would require more exertion from the aggressor, and expanding the measure of entropy (haphazardness)
can take the Leap Over assault infeasible. In all probability, more up to date working frameworks and
processors will be insusceptible to this assault.
At the point when ASLR is empowered, you can utilize SAF approval to exclude chosen address spaces
from ASLR. To do this, grant SAF READ power to the IARRSM.EXEMPT.ASLR.jobname asset in the
FACILITY class to completely absolve the work or to the IARRSM.EXEMPT.ASLR24.jobname asset to
exclude the work from just 24-bit ASLR. The accompanying model shows the arrangement of orders to
completely absolve a task from ASLR:
Reclassify FACILITY IARRSM.EXEMPT.ASLR.jobname UACC(READ)
SETROPTS CLASSACT(FACILITY)
SETROPTS RACLIST(FACILITY) REFRESH
Certain framework address spaces, like MASTER, which instate ahead of schedule during the IPL
interaction are not randomized. High virtual stockpiling may not be randomized in address spaces with
instatement leaves that get high virtual stockpiling. Occupation steps that acquire high virtual stockpiling
and allot it to an undertaking not inside the program task tree of that work step limit the capacity of the
framework to set up randomization for the following position step if the got capacity continues across work
steps.
Endeavoring to sidestep ASLR
Regardless of its benefits, endeavors to sidestep ASLR are normal and appear to fall into a few classes:
Disable ASLR. This setting is applied if the kernel is booted with the norandmaps boot parameter.
Randomize the positions of the stack, virtual dynamic shared object (VDSO) page, and shared
memory regions. The base address of the data segment is located immediately after the end of
the executable code segment.
Randomize the positions of the stack, VDSO page, shared memory regions, and the data
segment. This is the default setting.
You can change the setting temporarily by writing a new value to /proc/sys/kernel/randomize_va_space,
for example:
To change the value permanently, add the setting to /etc/sysctl.conf, for example:
kernel.randomize_va_space = value
If you change the value of randomize_va_space, you should test your application stack to ensure that it is
compatible with the new setting.
If necessary, you can disable ASLR for a specific program and its child processes by using the following
command:
Tamperproofing the reference monitor would seem to be the easiest task in retrofitting an existing
system, but this also has proven to be difficult. The obvious approach is to include the reference monitor
itself in the kernel, so that it can enjoy the same tamper-protection that the kernel has (e.g., runs in ring
0).
There are two issues that make guaranteeing tamper-protection difficult. First, commercial operating
systems often provide a variety of ways to update the kernel. Consider that UNIX kernels have a device
file that can be used to access physical memory directly /dev/kmem. Thus, processes running outside of
the kernel may be able to tamper with the kernel memory, even though they run in a less-privileged
ring.Modern kernels include a variety of other interfaces to read and write kernel memory, such as
/proc, Sysfs file systems, and netlink sockets. Of course, such interfaces are only accessible to root
processes, but there are many processes in a UNIX system that run as root. Should any one get
compromised, then the kernel may be tampered. In effect, every root process must be part of a UNIX
system’s trusted computing base to ensure tamper-protection.
But the biggest challenge for retrofitting an operating system is providing verification that the resultant
reference monitor implementation enforces the required security goals.We must verify that mediation
is implemented correctly, that the policy enforces the expected security goal, that the reference monitor
implementation is correct, and that the rest of the trusted computing base will behave correctly.
Verifying that the mediation is done correctly aims to address the problems discussed above. Typically,
the mediation interface is designed manually. While tools have been developed that find bugs in
mediation interfaces [149, 351], proving the correctness of a reference monitor interface in an operating
system is intractable in general because they are written in nontype safe languages, such as C and
various assembly languages.
Policy verification can also be complex as there are a large number of distinct authorization queries in a
commercial operating system, and there are a large number of distinct processes. Some retrofitted
commercial operating systems use a multilevel security (MLS) model, such as BellLaPadula [23], but
many use access matrix mandatory access control (MAC) models, such as Type Enforcement [33]. The
latter models are more flexible, but they also result in more complex policies. A Bell-LaPadula policy is
fixed size, but an access matrix policy tends to grow with the number of distinct system programs. Such
models present a difficult challenge in verifying that each system is enforcing the desired security goals.
Finally, the implementation of a commercial operating system and the remaining trusted computing
base is too complex to verify whether the overall system protects the reference monitor. Commercial
operating systems are large, there are often several developers of the trusted computingbase software,
and the approaches used to build the software are not documented. The best that we can hope for is
that some model of the software can be constructed after the fact. The verification of Scomp’s
correctness required an evaluation that the design model enforced system security goals and that the
source correctly implemented the design. Many believe that it is not possible to build a sufficiently
precise design of a commercial system and a mapping between this design and the system’s source code
necessary to enable such verification. Clearly, current technologies would not support such a
verification.