HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
kpwn
NULLGuard
C2015–2015
kpwn / NULLGuard

NULLGuard

kext kills all 32bit binaries lacking __PAGEZERO (required for exploitation of kernel NULL derefs)

2Distinct people
2Mentions
0Explicit recommenders
114GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

kext kills all 32bit binaries lacking __PAGEZERO (required for exploitation of kernel NULL derefs)

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by week2 dated mentions

Observed mentions: 2015-08-16 19:18:53 UTC to 2015-11-09 04:05:10 UTC. Weeks start Monday, UTC.

012015-08-10 00:00:00 UTC to 2015-08-17 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsAug 102015-08-17 00:00:00 UTC to 2015-08-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-08-24 00:00:00 UTC to 2015-08-31 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-08-31 00:00:00 UTC to 2015-09-07 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-09-07 00:00:00 UTC to 2015-09-14 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-09-14 00:00:00 UTC to 2015-09-21 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-09-21 00:00:00 UTC to 2015-09-28 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsSep 212015-09-28 00:00:00 UTC to 2015-10-05 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-10-05 00:00:00 UTC to 2015-10-12 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-10-12 00:00:00 UTC to 2015-10-19 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-10-19 00:00:00 UTC to 2015-10-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-10-26 00:00:00 UTC to 2015-11-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-11-02 00:00:00 UTC to 2015-11-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-11-09 00:00:00 UTC to 2015-11-16 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsNov 9

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Aug 102015-08-10 00:00:00 UTC2015-08-17 00:00:00 UTC101
Aug 172015-08-17 00:00:00 UTC2015-08-24 00:00:00 UTC000
Aug 242015-08-24 00:00:00 UTC2015-08-31 00:00:00 UTC000
Aug 312015-08-31 00:00:00 UTC2015-09-07 00:00:00 UTC000
Sep 72015-09-07 00:00:00 UTC2015-09-14 00:00:00 UTC000
Sep 142015-09-14 00:00:00 UTC2015-09-21 00:00:00 UTC000
Sep 212015-09-21 00:00:00 UTC2015-09-28 00:00:00 UTC000
Sep 282015-09-28 00:00:00 UTC2015-10-05 00:00:00 UTC000
Oct 52015-10-05 00:00:00 UTC2015-10-12 00:00:00 UTC000
Oct 122015-10-12 00:00:00 UTC2015-10-19 00:00:00 UTC000
Oct 192015-10-19 00:00:00 UTC2015-10-26 00:00:00 UTC000
Oct 262015-10-26 00:00:00 UTC2015-11-02 00:00:00 UTC000
Nov 22015-11-02 00:00:00 UTC2015-11-09 00:00:00 UTC000
Nov 92015-11-09 00:00:00 UTC2015-11-16 00:00:00 UTC101

What Hacker News says

2 sources
Generally it is not an "architecture" that makes this fail, it is a property of the operating system or even only the linker. If you look at a Mach-O executable on OS X, you will see a __PAGEZERO segment that explicitly causes the dynamic linker to put an invalid block of memory at address 0: for backwards compatibility reasons, in 32-bit processes, without that totally optional load command, and even with that command if you choose to override it at runtime using mmap or any number of mach memory management functions, you can allocate memory at that address. (Apple mitigates this in 64-bit processes by having the operating system disallow mapping memory to this location.) In fact, this is a technique commonly used in many kernel exploits on both Linux and OS X, and was even used just a few months ago in the "tpwn" exploit of OS X 10.10.5
Read the rest
, prompting the researcher who disclosed that vulnerability to also release NULLGuard, whose entire purpose is to help protect your system by disallowing processes from executing if they are missing a __PAGEZERO segment. https://github.com/kpwn/NULLGuard
In Avoid NULL

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.