Memory corruption (original) (raw)
La corrupción de memoria ocurre en un programa cuando los contenido de una dirección de memoria involuntariamente se modifican debido a errores de programación; esto se conoce como violación de la seguridad de memoria. Cuando los contenidos corruptos de memoria se usan más tarde en el programa, conduce a un accidente del programa o a un comportamiento extraño del mismo. Casi el 10% de accidentes de aplicación en sistemas de Windows es debido a la corrupción del stack. La corrupción de memoria es una de la clase de errores de programación más insuperable debido a dos motivos:
Property | Value |
---|---|
dbo:abstract | La corrupción de memoria ocurre en un programa cuando los contenido de una dirección de memoria involuntariamente se modifican debido a errores de programación; esto se conoce como violación de la seguridad de memoria. Cuando los contenidos corruptos de memoria se usan más tarde en el programa, conduce a un accidente del programa o a un comportamiento extraño del mismo. Casi el 10% de accidentes de aplicación en sistemas de Windows es debido a la corrupción del stack. Los lenguajes de programación modernos como C y C++ tienen rasgos potentes de direcciones de memoria explícita y aritmética de punteros. Estos rasgos se diseñan para desarrollar aplicaciones eficientes y software del sistema. Sin embargo, la utilización de estos rasgos incorrectamente puede llevar a errores de corrupción de memoria. La corrupción de memoria es una de la clase de errores de programación más insuperable debido a dos motivos: 1. * La fuente de la corrupción de la memoria y su manifestación pueden estar muy separados, por lo que es difícil relacionar la causa y el efecto. 2. * Los síntomas aparecen en condiciones inusuales, por lo que es difícil de reproducir constantemente el error. (es) Memory corruption occurs in a computer program when the contents of a memory location are modified due to programmatic behavior that exceeds the intention of the original programmer or program/language constructs; this is termed as violation of memory safety. The most likely causes of memory corruption are programming errors (software bugs). When the corrupted memory contents are used later in that program, it leads either to program crash or to strange and bizarre program behavior. Nearly 10% of application crashes on Windows systems are due to heap corruption. Modern programming languages like C and C++ have powerful features of explicit memory management and pointer arithmetic. These features are designed for developing efficient applications and system software. However, using these features incorrectly may lead to memory corruption errors. Memory corruption is one of the most intractable class of programming errors, for two reasons: 1. * The source of the memory corruption and its manifestation may be far apart, making it hard to correlate the cause and the effect. 2. * Symptoms appear under unusual conditions, making it hard to consistently reproduce the error. Memory corruption errors can be broadly classified into four categories: 1. * Using uninitialized memory: Contents of uninitialized memory are treated as garbage values. Using such values can lead to unpredictable program behavior. 2. * Using non-owned memory: It is common to use pointers to access and modify memory. If such a pointer is a null pointer, dangling pointer (pointing to memory that has already been freed), or to a memory location outside of current stack or heap bounds, it is referring to memory that is not then possessed by the program. Using such pointers is a serious programming flaw. Accessing such memory usually causes operating system exceptions, that most commonly lead to a program crash (unless suitable memory protection software is being used). 3. * Using memory beyond the memory that was allocated (buffer overflow): If an array is used in a loop, with incorrect terminating condition, memory beyond the array bounds may be accidentally manipulated. Buffer overflow is one of the most common programming flaws exploited by computer viruses, causing serious computer security issues (e.g. return-to-libc attack, stack-smashing protection) in widely used programs. In some cases programs can also incorrectly access the memory before the start of a buffer. 4. * Faulty heap memory management: Memory leaks and freeing non-heap or un-allocated memory are the most frequent errors caused by faulty heap memory management. Many memory debuggers such as Purify, Valgrind, Insure++, Parasoft C/C++test, AddressSanitizer are available to detect memory corruption errors. (en) |
dbo:wikiPageExternalLink | https://www.proggen.org/doku.php%3Fid=security:memory-corruption:start |
dbo:wikiPageID | 452305 (xsd:integer) |
dbo:wikiPageLength | 4023 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1071069189 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Programmer dbr:Memory_address dbr:Memory_debugger dbr:Memory_leak dbr:Computer_security dbc:Software_bugs dbr:Dangling_pointer dbc:Computer_security_exploits dbr:Computer_program dbr:Pointer_(computer_programming) dbr:C++ dbr:C_(programming_language) dbr:AddressSanitizer dbc:Computer_memory dbr:Parasoft_C/C++test dbr:Heap_(memory_management) dbr:Stack-smashing_protection dbr:Buffer_overflow dbr:Insure++ dbr:Software_bug dbr:Memory_safety dbr:Valgrind dbr:Uninitialized_variable dbr:Storage_violation dbr:Return-to-libc_attack dbr:Purify_(software) |
dbp:wikiPageUsesTemplate | dbt:Multiple_issues dbt:Original_research dbt:Refimprove dbt:Program_execution |
dct:subject | dbc:Software_bugs dbc:Computer_security_exploits dbc:Computer_memory |
gold:hypernym | dbr:Safety |
rdf:type | yago:WikicatSoftwareBugs yago:Animal100015388 yago:Arthropod101767661 yago:Bug102236355 yago:Insect102159955 yago:Invertebrate101905661 yago:LivingThing100004258 yago:Object100002684 yago:Organism100004475 yago:PhysicalEntity100001930 yago:Whole100003553 |
rdfs:comment | La corrupción de memoria ocurre en un programa cuando los contenido de una dirección de memoria involuntariamente se modifican debido a errores de programación; esto se conoce como violación de la seguridad de memoria. Cuando los contenidos corruptos de memoria se usan más tarde en el programa, conduce a un accidente del programa o a un comportamiento extraño del mismo. Casi el 10% de accidentes de aplicación en sistemas de Windows es debido a la corrupción del stack. La corrupción de memoria es una de la clase de errores de programación más insuperable debido a dos motivos: (es) Memory corruption occurs in a computer program when the contents of a memory location are modified due to programmatic behavior that exceeds the intention of the original programmer or program/language constructs; this is termed as violation of memory safety. The most likely causes of memory corruption are programming errors (software bugs). When the corrupted memory contents are used later in that program, it leads either to program crash or to strange and bizarre program behavior. Nearly 10% of application crashes on Windows systems are due to heap corruption. (en) |
rdfs:label | Corrupción de memoria (es) Memory corruption (en) |
owl:sameAs | freebase:Memory corruption yago-res:Memory corruption wikidata:Memory corruption dbpedia-es:Memory corruption dbpedia-he:Memory corruption https://global.dbpedia.org/id/2hirc |
prov:wasDerivedFrom | wikipedia-en:Memory_corruption?oldid=1071069189&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Memory_corruption |
is dbo:wikiPageRedirects of | dbr:Heap_corruption dbr:Computer_memory_hacking |
is dbo:wikiPageWikiLink of | dbr:Pwnie_Awards dbr:List_of_video_games_notable_for_speedrunning dbr:Debugging dbr:Dynamic_application_security_testing dbr:AddressSanitizer dbr:Address_space_layout_randomization dbr:ATS_(programming_language) dbr:Crash_(computing) dbr:Runtime_error_detection dbr:IOS dbr:Heap_corruption dbr:Computer_memory_hacking |
is foaf:primaryTopic of | wikipedia-en:Memory_corruption |