Knowledge (XXG)

Executable-space protection

Source 📝

866:. Each page may be individually flagged as executable or non-executable. Despite the lack of previous x86 hardware support, both executable and non-executable page settings have been provided since the beginning. On pre-NX CPUs, the presence of the 'executable' attribute has no effect. It was documented as if it did function, and, as a result, most programmers used it properly. In the PE file format, each section can specify its executability. The execution flag has existed since the beginning of the format and standard 415:
cycles of overhead during context switches, which is for all intents and purposes immeasurable. For legacy CPUs without an NX bit, Exec Shield fails to protect pages below the code segment limit; an mprotect() call to mark higher memory, such as the stack, executable will mark all memory below that limit executable as well. Thus, in these situations, Exec Shield's schemes fails. This is the cost of Exec Shield's low overhead. Exec Shield checks for two
479:
also has the effect of halving the task's virtual address space, allowing the task to access less memory than it normally could. This is not a problem until the task requires access to more than half the normal address space, which is rare. SEGMEXEC does not cause programs to use more system memory (i.e. RAM), it only restricts how much they can access. On 32-bit CPUs, this becomes 1.5 GB rather than 3 GB.
36: 843:" (SafeSEH). For properly compiled applications, SafeSEH checks that, when an exception is raised during program execution, the exception's handler is one defined by the application as it was originally compiled. The effect of this protection is that an attacker is not able to add his own exception handler which he has stored in a data page through unchecked program input. 524:
the program will normally mprotect() the stack on load. This may not always be true; for situations where this fails, simply disabling both PAGEEXEC and SEGMEXEC will effectively remove all executable space restrictions, giving the task the same protections on its executable space as a non-PaX system.
870:
have always used this flag correctly, even long before the NX bit. Because of this, Windows is able to enforce the NX bit on old programs. Assuming the programmer complied with "best practices", applications should work correctly now that NX is actually enforced. Only in a few cases have there been
478:
PaX provides two methods of NX bit emulation, called SEGMEXEC and PAGEEXEC. The SEGMEXEC method imposes a measurable but low overhead, typically less than 1%, which is a constant scalar incurred due to the virtual memory mirroring used for the separation between execution and data accesses. SEGMEXEC
414:
on May 2, 2003, but was rejected for merging with the base kernel because it involved some intrusive changes to core code in order to handle the complex parts of the emulation. Exec Shield's legacy CPU support approximates NX emulation by tracking the upper code segment limit. This imposes only a few
383:
NX memory protection has always been available in Ubuntu for any systems that had the hardware to support it and ran the 64-bit kernel or the 32-bit server kernel. The 32-bit PAE desktop kernel (linux-image-generic-pae) in Ubuntu 9.10 and later, also provides the PAE mode needed for hardware with the
823:
in 32-bit Windows and the native support on 64-bit kernels. Windows Vista DEP works by marking certain parts of memory as being intended to hold only data, which the NX or XD bit enabled processor then understands as non-executable. In Windows, from version Vista, whether DEP is enabled or disabled
482:
PaX supplies a method similar to Exec Shield's approximation in the PAGEEXEC as a speedup; however, when higher memory is marked executable, this method loses its protections. In these cases, PaX falls back to the older, variable-overhead method used by PAGEEXEC to protect pages below the CS limit,
523:
PaX ignores both PT_GNU_STACK and PT_GNU_HEAP. In the past, PaX had a configuration option to honor these settings but that option has been removed for security reasons, as it was deemed not useful. The same results of PT_GNU_STACK can normally be attained by disabling mprotect() restrictions, as
419:
header markings, which dictate whether the stack or heap needs to be executable. These are called PT_GNU_STACK and PT_GNU_HEAP respectively. Exec Shield allows these controls to be set for both binary executables and for libraries; if an executable loads a library requiring a given restriction
800:
documentation elaborates on why ASLR is necessary; a proof-of-concept was produced detailing a method by which DEP could be circumvented in the absence of ASLR. It may be possible to develop a successful attack if the address of prepared data such as corrupted images or
598:
for Intel supports the NX bit on all CPUs supported by Apple (from Mac OS X 10.4.4 – the first Intel release – onwards). Mac OS X 10.4 only supported NX stack protection. In Mac OS X 10.5, all 64-bit executables have NX stack and heap; W^X protection. This includes
232:
will be functional on all processors which aren't hardware supported. The "Other Supported" line is for processors which allow some grey-area method, where an explicit NX bit doesn't exist yet hardware allows one to be emulated in some way.
156:(no-execute bit), or in some cases software emulation of those features. However, technologies that emulate or supply an NX bit will usually impose a measurable overhead while using a hardware-supplied NX bit imposes no measurable overhead. 384:
NX CPU feature. For systems that lack NX hardware, the 32-bit kernels now provide an approximation of the NX CPU feature via software emulation that can help block many exploits an attacker might run from stack or heap memory.
931:
section (no code should be after this point in normal circumstances). Starting with version 51xx, this change was also implemented into the kernel of new Xboxes. This broke the techniques old exploits used to become a
784:
processor supported this feature in hardware, then the NX features were turned on automatically in Windows XP/Server 2003 by default. If the feature was not supported by the x86 processor, then no protection was given.
304:
The availability of the NX bit on 32-bit x86 kernels, which may run on both 32-bit x86 CPUs and 64-bit IA-32-compatible CPUs, is significant because a 32-bit x86 kernel would not normally expect the NX bit that an
205:
Many operating systems implement or have an available executable space protection policy. Here is a list of such systems in alphabetical order, each with technologies ordered from newest to oldest.
747:
has supported globally disabling stack execution on SPARC processors since Solaris 2.6 (1997); in Solaris 9 (2002), support for disabling stack execution on a per-executable basis was added.
289:
processors that support it, such as modern 64-bit processors made by AMD, Intel, Transmeta and VIA. The support for this feature in the 64-bit mode on x86-64 CPUs was added in 2004 by
167:, each word of memory had an associated, hidden tag bit designating it code or data. Thus user programs cannot write or even read a program word, and data words cannot be executed. 755:
The first implementation of a non-executable stack for Windows (NT 4.0, 2000 and XP) was published by SecureWave via their SecureStack product in 2001, based on the work of PaX
163:
offered hardware support for executable-space protection on its introduction in 1961; that capability remained in its successors until at least 2006. In its implementation of
1338: 672:
Other architectures do not benefit from non-executable stack or heap; NetBSD does not by default use any software emulation to offer these features on those architectures.
1260:"A detailed description of the Data Execution Prevention (DEP) feature in Windows XP Service Pack 2, Windows XP Tablet PC Edition 2005, and Windows Server 2003" 471:
The PaX NX technology can emulate NX functionality, or use a hardware NX bit. PaX works on x86 CPUs that do not have the NX bit, such as 32-bit x86. The Linux
53: 936:. However, new exploits were quickly released supporting this new kernel version because the fundamental vulnerability in the Xbox kernel was unaffected. 1289: 332:, do not enable the HIGHMEM64 option by default in their default kernels, which is required to gain access to the NX bit in 32-bit mode, because the 487:. When the PAGEEXEC method is used on a CPU supplying a hardware NX bit, the hardware NX bit is used, thus no significant overhead is incurred. 1185: 100: 197:
worms. These attacks rely on some part of memory, usually the stack, being both writable and executable; if it is not, the attack fails.
933: 208:
For some technologies, there is a summary which gives the major features each technology supports. The summary is structured as below.
72: 1368: 789: 697:
processors, the code segment is set to include only part of the address space, to provide some level of executable space protection.
1020: 119: 79: 1345: 380:
do not support PAE on the guest. Fedora Core 6 and Ubuntu 9.10 and later provide a kernel-PAE package which supports PAE and NX.
490:
PaX supplies mprotect() restrictions to prevent programs from marking memory in ways that produce memory useful for a potential
846:
When NX is supported, it is enabled by default. Windows allows programs to control which pages disallow execution through its
1135: 387:
Non-execute functionality has also been present for other non-x86 processors supporting this functionality for many releases.
416: 245:
2.3 and later, architectures which support it have non-executable pages by default, including non-executable stack and heap.
86: 57: 669:
Architectures that can only support these with region granularity are: i386 (without PAE), other powerpc (such as macppc).
1259: 840: 221:
Standard Distribution: (No) or (Yes) or (Comma separated list of distributions or versions which support the technology)
68: 955: 491: 186: 1231: 1007: 987: 972: 817: 744: 643: 333: 242: 46: 982: 820: 472: 411: 325: 179: 450: 377: 693:, known as W^X, marks writable pages by default as non-executable on processors that support that. On 32-bit 494:. This policy causes certain applications to cease to function, but it can be disabled for affected programs. 1297: 1160: 194: 160: 829: 510: 190: 497:
PaX allows individual control over the following functions of the technology for each binary executable:
93: 793: 484: 369: 298: 924: 623:
2.0 and later (December 9, 2004), architectures which support it have non-executable stack and heap.
465: 373: 313:
supplies; the NX enabler patch assures that these kernels will attempt to use the NX bit if present.
1320: 1189: 958:
can allow an attacker to execute arbitrary code even when executable space protection is enforced.
851: 813: 773:
architecture. Executable space protection on Windows is called "Data Execution Prevention" (DEP).
766: 164: 1044: 884: 867: 365: 317: 174:
can mark some or all writable regions of memory as non-executable, it may be able to prevent the
149: 948:
is a prominent example—the compiler can potentially be used to produce exploit code (e.g. using
290: 541: 361: 133: 215:
Emulation: (No) or (Architecture Independent) or (Comma separated list of CPU architectures)
690: 353: 171: 1122: 17: 967: 777: 183: 141: 297:
added support for it in 32-bit mode on 64-bit CPUs. These features have been part of the
920: 399: 294: 1362: 977: 871:
problems; Microsoft's own .NET Runtime had problems with the NX bit and was updated.
809: 420:
relaxed, the executable will inherit that marking and have that restriction relaxed.
1139: 945: 762: 581: 475:
still does not ship with PaX (as of May, 2007); the patch must be merged manually.
428: 321: 278: 145: 769:
Service Pack 1 (2005), the NX features were implemented for the first time on the
269:-CURRENT on June 8, 2004. It has been in FreeBSD releases since the 5.3 release. 608: 446: 403: 337: 35: 1267: 1093: 905: 759: 189:
from succeeding, particularly those that inject and execute code, such as the
175: 1263: 949: 888: 705: 627: 529: 348:
processors without NX support. Other processors that do not support PAE are
345: 341: 1210: 952:) that has been flagged for execution and therefore would not be trapped. 212:
Hardware Supported Processors: (Comma separated list of CPU architectures)
329: 229: 796:
that could have been feasibly used to disable DEP during an attack. The
1068: 892: 713: 687: 647: 635: 604: 570: 549: 545: 395: 266: 218:
Other Supported: (None) or (Comma separated list of CPU architectures)
1235: 876: 836: 663: 659: 651: 631: 620: 600: 533: 407: 357: 349: 306: 282: 258: 254: 153: 816:. On this platform, DEP is implemented through the automatic use of 336:
mode that is required to use the NX bit causes boot failures on pre-
923:, although the CPU does not have the NX bit, newer versions of the 776:
Under Windows XP or Server 2003 NX protection was used on critical
700:
OpenBSD 3.3 shipped May 1, 2003, and was the first to include W^X.
182:
memory areas from being executable. This helps to prevent certain
1164: 880: 855: 854:. In the API, runtime access to the NX bit is exposed through the 723: 717: 709: 655: 639: 595: 574: 559: 553: 537: 432: 310: 286: 262: 681: 1161:"Homepage of PaX - the PAGE_EXEC flag implementation for IA-32" 1321:"Interpreter Exploitation: Pointer Inference And JIT Spraying" 1215: 847: 802: 797: 781: 770: 694: 563: 436: 29: 1290:"Yasm User Manual, win32: Safe Structured Exception Handling" 927:
set the code segment limit to the beginning of the kernel's
483:
which may become quite a high-overhead operation in certain
424:
Hardware Supported Processors: All that Linux supports NX on
144:
regions as non-executable, such that an attempt to execute
301:
since the release of kernel version 2.6.8 in August 2004.
626:
Architectures that have per-page granularity consist of:
835:
Windows implements software DEP (without the use of the
410:
x86 CPUs. The Exec Shield patch was released to the
60:. Unsourced material may be challenged and removed. 1339:"Writing JIT-Spray Shellcode for fun and profit" 944:Where code is written and executed at runtime—a 228:A technology supplying Architecture Independent 152:. It makes use of hardware features such as the 1294:Tortall Networks: Open Source and Free Software 406:to approximate and utilize NX functionality on 824:for a particular process can be viewed on the 265:processors that support it, first appeared in 8: 1021:"Android code change enabling NX by default" 850:as well as through the section headers in a 1254: 1252: 1006:"Memory Management Security Enhancements", 1045:"Android Compatibility Requirement for NX" 464:"PaX" redirects here. For other uses, see 788:Early implementations of DEP provided no 120:Learn how and when to remove this message 999: 427:Emulation: NX approximation using the 808:Microsoft added ASLR functionality in 224:Release Date: (Date of first release) 7: 1211:"address space layout randomization" 402:released a Linux kernel patch named 58:adding citations to reliable sources 934:terminate-and-stay-resident program 790:address space layout randomization 25: 1337:Alexey Sintsov (March 5, 2010). 1025:Android Source Repository Change 792:(ASLR), which allowed potential 34: 875:Hardware Supported Processors: 780:exclusively by default. If the 704:Hardware Supported Processors: 528:Hardware Supported Processors: 148:in these regions will cause an 45:needs additional citations for 1232:"Uninformed - vol 2 article 4" 805:can be known by the attacker. 586:Release Date: October 1, 2000 1: 1123:Non-executable stack and heap 910:Release Date: August 6, 2004 841:Structured Exception Handling 603:(Core 2 or later) and 64-bit 372:versions older than 4.0, and 69:"Executable-space protection" 1266:. 2006-09-26. Archived from 1163:. 2001-03-31. Archived from 1138:. 2001-03-31. Archived from 1094:"PaX SEGMEXEC documentation" 904:Standard Distribution: Post 839:) through Microsoft's "Safe 340:(including Pentium MMX) and 27:Concept in computer security 956:Return-oriented programming 732:Standard Distribution: Yes 293:, and later the same year, 138:executable-space protection 18:Executable space protection 1385: 988:Uncontrolled format string 973:Buffer overflow protection 735:Release Date: May 1, 2003 679: 516:Randomized executable base 463: 455:Release Date: May 2, 2003 1369:Operating system security 1008:Android Security Overview 983:Stack-smashing protection 412:Linux kernel mailing list 368:versions older than 4.0, 451:Red Hat Enterprise Linux 253:Initial support for the 1136:"SecureWave | SecureNT" 1125:, retrieved 2011/07/14. 1010:, retrieved 2012/07/29. 580:Standard Distribution: 507:mprotect() restrictions 445:Standard Distribution: 281:supports the NX bit on 901:Other Supported: None 879:(AMD64 and Intel 64), 794:return-to-libc attacks 729:Other Supported: None 519:Randomized mmap() base 485:memory access patterns 442:Other Supported: None 1186:"Blog on Cyberterror" 370:Parallels Workstation 299:Linux kernel mainline 1103:. September 10, 2004 1069:"Linux kernel 2.6.8" 830:Windows Task Manager 686:A technology in the 466:Pax (disambiguation) 374:Microsoft Virtual PC 54:improve this article 1049:Android Code Review 891:(later revisions), 814:Windows Server 2008 767:Windows Server 2003 318:Linux distributions 165:tagged architecture 1300:on January 2, 2015 1101:pax.grsecurity.net 569:Other Supported: 366:VMware Workstation 201:OS implementations 1073:kernelnewbies.org 895:(later revisions) 826:Processes/Details 573:(32 and 64 bit), 544:(32 and 64 bit), 398:kernel developer 360:and earlier, and 134:computer security 130: 129: 122: 104: 16:(Redirected from 1376: 1353: 1352: 1350: 1344:. Archived from 1343: 1334: 1328: 1327: 1325: 1316: 1310: 1309: 1307: 1305: 1296:. Archived from 1288:Johnson, Peter. 1285: 1279: 1278: 1276: 1275: 1256: 1247: 1246: 1244: 1243: 1234:. Archived from 1228: 1222: 1221: 1207: 1201: 1200: 1198: 1197: 1188:. Archived from 1182: 1176: 1175: 1173: 1172: 1157: 1151: 1150: 1148: 1147: 1132: 1126: 1119: 1113: 1112: 1110: 1108: 1098: 1090: 1084: 1083: 1081: 1080: 1065: 1059: 1058: 1056: 1055: 1041: 1035: 1034: 1032: 1031: 1017: 1011: 1004: 865: 861: 778:Windows services 691:operating system 439:) and compatible 354:Transmeta Crusoe 172:operating system 125: 118: 114: 111: 105: 103: 62: 38: 30: 21: 1384: 1383: 1379: 1378: 1377: 1375: 1374: 1373: 1359: 1358: 1357: 1356: 1348: 1341: 1336: 1335: 1331: 1323: 1319:Dion Blazakis. 1318: 1317: 1313: 1303: 1301: 1287: 1286: 1282: 1273: 1271: 1258: 1257: 1250: 1241: 1239: 1230: 1229: 1225: 1209: 1208: 1204: 1195: 1193: 1184: 1183: 1179: 1170: 1168: 1159: 1158: 1154: 1145: 1143: 1134: 1133: 1129: 1120: 1116: 1106: 1104: 1096: 1092: 1091: 1087: 1078: 1076: 1067: 1066: 1062: 1053: 1051: 1043: 1042: 1038: 1029: 1027: 1019: 1018: 1014: 1005: 1001: 996: 968:Buffer overflow 964: 942: 919:In Microsoft's 917: 898:Emulation: Yes 863: 859: 753: 742: 684: 678: 617: 593: 577:(32 and 64 bit) 469: 462: 393: 275: 251: 239: 203: 184:buffer overflow 126: 115: 109: 106: 63: 61: 51: 39: 28: 23: 22: 15: 12: 11: 5: 1382: 1380: 1372: 1371: 1361: 1360: 1355: 1354: 1351:on 2016-03-04. 1329: 1311: 1280: 1248: 1223: 1202: 1177: 1152: 1127: 1114: 1085: 1060: 1036: 1012: 998: 997: 995: 992: 991: 990: 985: 980: 975: 970: 963: 960: 941: 938: 916: 913: 912: 911: 908: 902: 899: 896: 864:VirtualProtect 758:Starting with 752: 749: 741: 738: 737: 736: 733: 730: 727: 720: 680:Main article: 677: 674: 616: 613: 592: 589: 588: 587: 584: 578: 567: 556: 521: 520: 517: 514: 508: 505: 502: 461: 458: 457: 456: 453: 443: 440: 425: 392: 389: 378:Virtual Server 274: 271: 250: 247: 238: 235: 226: 225: 222: 219: 216: 213: 202: 199: 161:Burroughs 5000 128: 127: 42: 40: 33: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 1381: 1370: 1367: 1366: 1364: 1347: 1340: 1333: 1330: 1322: 1315: 1312: 1299: 1295: 1291: 1284: 1281: 1270:on 2014-09-11 1269: 1265: 1261: 1255: 1253: 1249: 1238:on 2016-03-12 1237: 1233: 1227: 1224: 1219: 1217: 1212: 1206: 1203: 1192:on 2012-02-09 1191: 1187: 1181: 1178: 1167:on 2001-03-31 1166: 1162: 1156: 1153: 1142:on 2001-03-31 1141: 1137: 1131: 1128: 1124: 1118: 1115: 1102: 1095: 1089: 1086: 1074: 1070: 1064: 1061: 1050: 1046: 1040: 1037: 1026: 1022: 1016: 1013: 1009: 1003: 1000: 993: 989: 986: 984: 981: 979: 978:Heap overflow 976: 974: 971: 969: 966: 965: 961: 959: 957: 953: 951: 947: 939: 937: 935: 930: 926: 922: 914: 909: 907: 903: 900: 897: 894: 890: 886: 882: 878: 874: 873: 872: 869: 857: 853: 849: 844: 842: 838: 833: 831: 827: 822: 819: 815: 811: 810:Windows Vista 806: 804: 799: 795: 791: 786: 783: 779: 774: 772: 768: 765:2 (2004) and 764: 761: 756: 750: 748: 746: 739: 734: 731: 728: 725: 721: 719: 715: 711: 707: 703: 702: 701: 698: 696: 692: 689: 683: 675: 673: 670: 667: 665: 661: 657: 653: 649: 645: 641: 637: 633: 629: 624: 622: 614: 612: 610: 606: 602: 597: 590: 585: 583: 579: 576: 572: 568: 565: 561: 557: 555: 551: 547: 543: 539: 535: 531: 527: 526: 525: 518: 515: 512: 509: 506: 503: 500: 499: 498: 495: 493: 488: 486: 480: 476: 474: 467: 459: 454: 452: 448: 444: 441: 438: 434: 430: 426: 423: 422: 421: 418: 413: 409: 405: 401: 397: 390: 388: 385: 381: 379: 375: 371: 367: 363: 359: 355: 352:and earlier, 351: 347: 343: 339: 335: 331: 327: 323: 319: 316:Some desktop 314: 312: 308: 302: 300: 296: 292: 288: 284: 280: 272: 270: 268: 264: 260: 256: 248: 246: 244: 236: 234: 231: 223: 220: 217: 214: 211: 210: 209: 206: 200: 198: 196: 192: 188: 185: 181: 177: 173: 168: 166: 162: 157: 155: 151: 147: 143: 139: 135: 124: 121: 113: 102: 99: 95: 92: 88: 85: 81: 78: 74: 71: –  70: 66: 65:Find sources: 59: 55: 49: 48: 43:This article 41: 37: 32: 31: 19: 1346:the original 1332: 1314: 1304:27 September 1302:. Retrieved 1298:the original 1293: 1283: 1272:. Retrieved 1268:the original 1240:. Retrieved 1236:the original 1226: 1214: 1205: 1194:. Retrieved 1190:the original 1180: 1169:. Retrieved 1165:the original 1155: 1144:. Retrieved 1140:the original 1130: 1117: 1105:. Retrieved 1100: 1088: 1077:. Retrieved 1075:. 2004-08-14 1072: 1063: 1052:. Retrieved 1048: 1039: 1028:. Retrieved 1024: 1015: 1002: 954: 946:JIT compiler 943: 928: 918: 860:VirtualAlloc 845: 834: 825: 807: 787: 775: 763:Service Pack 757: 754: 743: 722:Emulation: 699: 685: 671: 668: 666:), sparc64. 625: 618: 594: 582:Alpine Linux 558:Emulation: 522: 496: 489: 481: 477: 470: 429:code segment 394: 386: 382: 315: 303: 279:Linux kernel 276: 252: 240: 227: 207: 204: 169: 158: 146:machine code 137: 131: 116: 107: 97: 90: 83: 76: 64: 52:Please help 47:verification 44: 1107:January 25, 940:Limitations 893:AMD Sempron 828:tab in the 447:Fedora Core 404:Exec Shield 400:Ingo Molnár 391:Exec Shield 364:GX and LX. 338:Pentium Pro 295:Ingo Molnár 1274:2008-07-11 1242:2010-03-19 1196:2008-01-08 1171:2023-12-27 1146:2023-12-27 1079:2015-08-01 1054:2019-08-27 1030:2019-08-27 994:References 906:Windows XP 858:API calls 760:Windows XP 650:(ibm4xx), 511:Trampoline 320:, such as 291:Andi Kleen 110:April 2013 80:newspapers 1264:Microsoft 950:JIT Spray 889:Pentium M 513:emulation 431:limit on 346:Pentium M 342:Celeron M 230:emulation 150:exception 1363:Category 1121:NetBSD, 962:See also 885:Efficeon 504:SEGMEXEC 501:PAGEEXEC 330:openSUSE 187:exploits 1218:project 868:linkers 852:PE file 751:Windows 745:Solaris 740:Solaris 688:OpenBSD 676:OpenBSD 648:powerpc 607:on the 605:PowerPC 571:PowerPC 550:PowerPC 546:PA-RISC 492:exploit 396:Red Hat 267:FreeBSD 249:FreeBSD 243:Android 237:Android 195:Blaster 94:scholar 877:x86-64 837:NX bit 821:kernel 642:(with 621:NetBSD 619:As of 615:NetBSD 611:Macs. 601:x86-64 473:kernel 408:32-bit 358:VIA C3 350:AMD K6 326:Ubuntu 322:Fedora 283:x86-64 259:x86-64 255:NX bit 241:As of 191:Sasser 170:If an 154:NX bit 142:memory 140:marks 96:  89:  82:  75:  67:  1349:(PDF) 1342:(PDF) 1324:(PDF) 1097:(TXT) 929:.data 881:IA-64 856:Win32 726:(x86) 724:IA-32 718:SPARC 710:AMD64 706:Alpha 664:sun4d 660:sun4m 656:sparc 632:amd64 628:alpha 596:macOS 591:macOS 575:SPARC 560:IA-32 554:SPARC 538:IA-64 534:AMD64 530:Alpha 433:IA-32 362:Geode 311:IA-64 307:AMD64 287:IA-32 273:Linux 263:IA-32 257:, on 176:stack 101:JSTOR 87:books 1306:2015 1109:2015 921:Xbox 915:Xbox 862:and 812:and 803:MP3s 714:HPPA 640:i386 636:hppa 542:MIPS 449:and 376:and 344:and 328:and 285:and 277:The 261:and 193:and 180:heap 178:and 159:The 73:news 1216:PaX 925:XDK 848:API 818:PAE 798:PaX 782:x86 771:x86 695:x86 682:W^X 652:sh5 646:), 644:PAE 564:x86 460:PaX 437:x86 417:ELF 334:PAE 309:or 132:In 56:by 1365:: 1292:. 1262:. 1251:^ 1213:. 1099:. 1071:. 1047:. 1023:. 887:, 883:, 832:. 716:, 712:, 708:, 662:, 654:, 638:, 634:, 630:, 609:G5 552:, 548:, 540:, 536:, 532:, 356:, 324:, 136:, 1326:. 1308:. 1277:. 1245:. 1220:. 1199:. 1174:. 1149:. 1111:. 1082:. 1057:. 1033:. 658:( 566:) 562:( 468:. 435:( 123:) 117:( 112:) 108:( 98:· 91:· 84:· 77:· 50:. 20:)

Index

Executable space protection

verification
improve this article
adding citations to reliable sources
"Executable-space protection"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
computer security
memory
machine code
exception
NX bit
Burroughs 5000
tagged architecture
operating system
stack
heap
buffer overflow
exploits
Sasser
Blaster
emulation
Android
NX bit
x86-64

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.