Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

please give description too Set-UID. Do your attacks in Step I still work? Please describe and explain your observations 2.9 Task 9: Capability Leaking To

image text in transcribed
image text in transcribed
please give description too
Set-UID. Do your attacks in Step I still work? Please describe and explain your observations 2.9 Task 9: Capability Leaking To follow the Principle of Least Privilege, Set-UID programs often permanently relinquish their root privileges if such privileges are not needed anymore. Moreover, sometimes, the program needs to hand over its control to the user, in this case, root privileges must be revoked. The setuid() system call can be used to revoke the privileges. According to the manual, "setuid() sets the effective user ID of the calling process. If the effective UID of the caller is root, the real UID and saved set-user-ID are also set". Therefore, if a Set-UID program with effective UID O calls setuid (n), the process will become a normal process, with all its UIDs being set to n. When revoking the privilege, one of the common mistakes is capability leaking. The process may have gained some privileged capabilities when it was still privileged; when the privilege is downgraded, if the program does not clean up those capabilities, they may still be accessible by the non-privileged process. In other words, although the effective user ID of the process becomes non-privileged, the process is still privileged because it possesses privileged capabilities. Compile the following program, change its owner to root, and make it a Set-UID program. Run the program as a normal user, and describe what you have observed. Will the file /etc/zzz be modified? Please explain your observation. #include #include #include void main() int fd; 1. Assume that /etc/zzz is an important system file, and it is owned by root with permission 0644. Before running this program, you should creat - the file /etc/zzz tirst. / Ed open(/etc/zaz", O_RDWR 1 O_APPEND); if (fd -- -1) printf("Cannot open /etc/zzz "); exit(0); ) /* Simulate the tasks conducted by the program +/ sleep (1); 1. After the task, the root privileges are no longer needed, it's time to relinquish the root privileges permanently. */ setuid (getuid()); /* getuid() returns the real uid */ if (fork()) { /* In the parent process */ close (fd); exit(0); } else { /* in the child process +/ /* Now, assume that the child process is compromised, malicious attackers have injected the following statements into this process / write (fd, "Malicious Data ", 15); close(fd)

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Programming The Perl DBI Database Programming With Perl

Authors: Tim Bunce, Alligator Descartes

1st Edition

1565926994, 978-1565926998

More Books

Students also viewed these Databases questions

Question

What was the role of the team leader? How was he or she selected?

Answered: 1 week ago

Question

1. Signs and symbols of the map Briefly by box ?

Answered: 1 week ago

Question

Types of physical Maps?

Answered: 1 week ago

Question

Explain Intermediate term financing in detail.

Answered: 1 week ago

Question

What are Measures in OLAP Cubes?

Answered: 1 week ago

Question

How do OLAP Databases provide for Drilling Down into data?

Answered: 1 week ago

Question

How are OLAP Cubes different from Production Relational Databases?

Answered: 1 week ago