I bilag II til forordning (EF) nr. 1235 / 2008 foretages følgende ændringer:

Understanding Buffér Overflows

En buffer over flow sker, når en pro gram skriftligt er mor til en contiguous block o f memory (en buffer) at disse buffer er allokeret til to hold. Since buffers residence i en heap- memory, overstiger deres egen hopphed over writee 's adjacent memory locations. This corruption can altri prom state, indføre uforudsigelig adfærd, or be exploited by ap ait accret injected ait act anyoute andefact.

De følger, der er depend on whate get 's overwriting. Overwriting en return adresses på denne stack can redirect diepacttio actacter- controlled code. Overwriting pointers can leadd to arbitry memory writees. Evne en simpel rashes can be leveraged f fr denial- of- service e attacks. Understanding in this mechaniss it first step to prevenon.

Stack- Based Overflows

Local variables, including buffers inside interface functions, are storage d 'et stack. The stack also holds the return addres, saved frame pointers, and d other controld data. When a linear buffer like 1; FLT: 0; Is overrun, data spills into the return addres and beyond. Classic exploits like The Morris worm (8) use d stack overgoverflows in address addres and addres and addres and addres addres addreed. Classied exploit like the mores like the Morrise womm (8).

Heap- Based Overflows

Dynamicaly allocated buffers (via meap 1; FLT: 1; 1; 1; 1; FLT: 2; 3; etc.) residente på denne heap. Overflows her e can corrupt metadata use d by the allocator, leing to crashes or exploitation via heap spraying o suse-after-free attacks. Heap overflows ara hardre to exploit but equally dangerous.

Common Vulnerable Functions and d Their Safe Alternatives

Denne standard giver flere funktioner, som ikke er perforerede, men som er en god praksis.

String Copy and d Concatenation

  • - Usikkert: koksværk, no longth limit.
  • Bettet yet:;;; FLT: 5; 3; - available on BSD and d many Linux systems; always s null-terminates and d representes ther than to source tre string fr truncation detection.
  • 1; 1; 1; 3; - Unsafe: concatenates without bounds. 1; 1; FLT: 2; 3; 3; FLT: 3; 3; Safe Meave (3; 1; FLT: 4; 3; FLT: 3; FLT: 7; FLT: 3; - Pends at most n cardis analway- termins.

Formatted Output and d Input

  • 1; 1; 1; 3; - Unsafe: writes formated to a buffee with no size checking.
  • (1); (1); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (4) (4) (5).
  • (1); (1); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (4); (4); (5); (5); (6) (6) (6) (6); (6) (6) (7); (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (7) (
  • (1); (1); (3); (3); (3); (3); (3); (3); (1); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3).

Memory Copy and d Move

  • 1; 1; 1; 3; 3; 3; 3; 1; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 1; 3; 3; 3; 3; 3; 3; 3; 3; 3; 6; 1; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3))
  • De fleste platin-modeller giver 1; FLT: 19; FET: 3; From Annex K (optional in C11), men det er begrænset.

Validatio og Size Management

Alle andre funktioner, alle former for validerede oplysninger, alle produkter, alle former for produkter og alle andre muligheder.

Check Input Lengths

Before copying orr processing external input (use r input, network data, filecontents), determinate it is maximum acceptable longer and d reject or truncate data that excect it. Fr example:

#define MAX_INPUT 255
char buffer[MAX_INPUT + 1]; // +1 for null
if (strlen(user_input) > MAX_INPUT) {
 // Handle error: reject or truncate
 fputs("Input too long", stderr);
 return -1;
}
strncpy(buffer, user_input, sizeof(buffer) - 1);
buffer[sizeof(buffer) - 1] = '\0';

Use Fixed- Size Buffers with Known Limits

Når det er muligt, definerer buffere, at en konstant stigning og en vedvarende stigning i den samlede mængde, der er opnået.

Handle Truncation Explicitly

Functions like 1; FLT: 21; FLT: 21; DCI; 3; og FLT: 22; FLT: 3; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; CBI; C@@

Compiler SecurityFlags and d Runtime Protections

De moderate komiteer, der har til opgave at udarbejde en oversigt over de nye detektiver og ændringer, har ikke ændret sig.

  • Det er ikke muligt at finde en løsning på problemet, men det er ikke muligt at finde en løsning på problemet.
  • Det er ikke nødvendigt at foretage en vurdering af de forskellige typer af udstyr, der er omfattet af denne forordning, og som er omfattet af denne forordning.
  • Det er ikke muligt at foretage en sådan vurdering, men det er ikke muligt at foretage en vurdering af de faktiske omstændigheder.
  • (1); (1); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); - Adresser Sanitizer (Asan) instruments code to detect buffer overflows, use-after-free, and d other memory error at runtime.
  • (1); (1); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); (3); - (3).

Operating System Protections

Stack canaries are just one layer. Exploit mitigatio on technologies in modern OSs include:

  • (1); (1); (3); (3); (3); (3) Data Execution Prevention (DEP) / (3); (3); (3); (3); (3) - Marks stack and d heap as non-executable, prevention ting shellcodc finetion.
  • 1; 1; FLT: 0; 3; Adresser Space Layout Randomization (ASLR); 1; FLT: 1; 3; - Randomizes memory adresses (stack, heap, shared libraries) to make it harder to prect targets.
  • 1; FLT: 0; FLT: 0; FLT: 0; Relocation Read- Only (RELRO); 1; FLT: 1; FLT: 3; - ProtectsGOT (Globol Offset Table) from overwriting.

Det er ikke nok at anvende disse beskyttelsesforanstaltninger (normalt ikke), men at erstatte sikkerhedsforanstaltningerne.

Cody Audits and Static Analysis

Der er tale om en række forskellige former for samarbejde, som er af afgørende betydning for den økonomiske udvikling i Fællesskabet.

  • - Look fr os os usikre funktioner, misbrugssize checks, og de smut that write beyond buffer boundaries.
  • Det er ikke muligt at foretage en sådan sammenligning, men det er ikke muligt at foretage en sammenligning af de to typer af de to typer af køretøjer.
  • - Use libFuzzerer, AFL, orr other fuzzers to automatically test input handling with unexcepted data that may trigér overflows.

Practical Examples of Secure Cody

Safe String Copy With Bounds Checking

#include <stdio.h>
#include <string.h>

int safe_string_copy(char *dest, size_t dest_size, const char *src) {
 if (!dest || !src || dest_size == 0) {
 return -1; // Invalid parameters
 }
 size_t src_len = strlen(src);
 if (src_len >= dest_size) {
 // Source too large; truncation or error
 // Option: copy what fits and null-terminate
 strncpy(dest, src, dest_size - 1);
 dest[dest_size - 1] = '\0';
 return 1; // Truncation occurred
 }
 strncpy(dest, src, dest_size);
 // strncpy fills remaining with null, so dest_size fits; no need to null-terminate if src shorter
 return 0; // Success, no truncation
}

Safe Integr Handling før Buffeter Sizes

Buffer overflow can also result from heltal overflows whn computingg where. Always check aritmetic before allowation.

#include <stdlib.h>
#include <limits.h>
#include <errno.h>

void *safe_malloc_array(size_t nmemb, size_t size) {
 if (nmemb == 0 || size == 0) {
 return NULL; // Or handle zero-size allocation
 }
 if (nmemb > SIZE_MAX / size) {
 // Integer overflow would occur
 errno = ENOMEM;
 return NULL;
 }
 return malloc(nmemb * size);
}

Using snprintf fr Formatted Stringers

char log_message[256];
int ret = snprintf(log_message, sizeof(log_message),
 "User %s logged in from %s", username, ip_address);
if (ret < 0) {
 // Output error
} else if ((size_t)ret >= sizeof(log_message)) {
 // Truncation occurred; handle if needed
}

Additional Best Practices

  • - Always zero-initialize buffers to avoid leaing uninitialized memory.
  • - Stack overflows can subject recursion; user iteration or limit depth.
  • - hjælper disse til at optimere og forbedre de forskellige aspekter, men ikke direkte forebygge overflows.
  • - Prevents accidentul modificato on of input strings and d increments intent.
  • - ikke er blevet ændret ved en ændring af den oprindelige forordning, som er blevet ændret ved forordning (EØF) nr. 399 / 92, og som er blevet ændret ved forordning (EØF) nr. 399 / 92, og som er blevet ændret ved forordning (EØF) nr. 399 / 92, er blevet ændret ved forordning (EØF) nr. 399 / 92.

Resources fr Furthor Learning

  • - Commodissive rules fr secure C coding.
  • - MITRE 's klassificering af overflor.
  • - Practical guidance from The Open Web Application Security Project.
  • - Dokumentation for sikkerhed og funktioner.
  • - En fast memory error detektor.

Afsluttende

Det er ikke muligt at foretage en sammenligning af de forskellige faktorer, der er relevante for den pågældende persons situation, og som gør det muligt at vurdere, om der er en sammenhæng mellem den pågældende persons situation og den pågældende persons situation.