{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.1",
    "cveMetadata": {
        "cveId": "CVE-2025-59729",
        "assignerOrgId": "14ed7db2-1595-443d-9d34-6215bf890778",
        "state": "PUBLISHED",
        "assignerShortName": "Google",
        "dateReserved": "2025-09-19T08:11:37.549Z",
        "datePublished": "2025-10-06T08:08:46.060Z",
        "dateUpdated": "2025-10-06T16:28:37.534Z"
    },
    "containers": {
        "cna": {
            "affected": [
                {
                    "collectionURL": "https://git.ffmpeg.org/ffmpeg.git",
                    "defaultStatus": "unaffected",
                    "modules": [
                        "get_duration"
                    ],
                    "packageName": "DHAV",
                    "product": "FFmpeg",
                    "repo": "https://git.ffmpeg.org/ffmpeg.git",
                    "vendor": "FFmpeg",
                    "versions": [
                        {
                            "lessThan": "8.0",
                            "status": "affected",
                            "version": "a218cafe4d3be005ab0c61130f90db4d21afb5db",
                            "versionType": "custom"
                        }
                    ]
                }
            ],
            "credits": [
                {
                    "lang": "en",
                    "type": "finder",
                    "value": "Google Big Sleep"
                }
            ],
            "datePublic": "2025-07-21T22:00:00.000Z",
            "descriptions": [
                {
                    "lang": "en",
                    "supportingMedia": [
                        {
                            "base64": false,
                            "type": "text/html",
                            "value": "<p></p><p>When parsing the header for a DHAV file, there's an integer underflow in offset calculation that leads to reading the duration from before the start of the allocated buffer.</p><p>If we load a DHAV file that is larger than <code>MAX_DURATION_BUFFER_SIZE</code>&nbsp;bytes (<code>0x100000</code>) for example 0x101000 bytes, then at [0] we have <code>size = 0x101000</code>. At [1] we have <code>end_buffer_size = 0x100000</code>, and at [2] we have <code>end_buffer_pos = 0x1000</code>.</p><p>The loop then scans backwards through the buffer looking for the <code>dhav</code>&nbsp;tag; when it is found, we'll calculate <code>end_pos</code>&nbsp;based on a 32-bit offset read from the buffer.</p><p>There is subsequently a check [3] that <code>end_pos</code>&nbsp;is within the section of the file that has been copied into <code>end_buffer</code>, but it only correctly handles the cases where <code>end_pos</code>&nbsp;is <em>before the start of the file</em>&nbsp;or <em>after the section copied into <code>end_buffer</code></em>, and not the case where <code>end_pos</code>&nbsp;is within the the file, but before the section copied into <code>end_buffer</code>. If we provide such an offset, <code>(end_pos - end_buffer_pos)</code>&nbsp;can underflow, resulting in the subsequent access at [4] occurring before the beginning of the allocation.</p>We recommend upgrading to version 8.0 or beyond.<p></p><br>"
                        }
                    ],
                    "value": "When parsing the header for a DHAV file, there's an integer underflow in offset calculation that leads to reading the duration from before the start of the allocated buffer.\n\nIf we load a DHAV file that is larger than MAX_DURATION_BUFFER_SIZE bytes (0x100000) for example 0x101000 bytes, then at [0] we have size = 0x101000. At [1] we have end_buffer_size = 0x100000, and at [2] we have end_buffer_pos = 0x1000.\n\nThe loop then scans backwards through the buffer looking for the dhav tag; when it is found, we'll calculate end_pos based on a 32-bit offset read from the buffer.\n\nThere is subsequently a check [3] that end_pos is within the section of the file that has been copied into end_buffer, but it only correctly handles the cases where end_pos is before the start of the file or after the section copied into end_buffer, and not the case where end_pos is within the the file, but before the section copied into end_buffer. If we provide such an offset, (end_pos - end_buffer_pos) can underflow, resulting in the subsequent access at [4] occurring before the beginning of the allocation.\n\nWe recommend upgrading to version 8.0 or beyond."
                }
            ],
            "impacts": [
                {
                    "capecId": "CAPEC-100",
                    "descriptions": [
                        {
                            "lang": "en",
                            "value": "CAPEC-100 Overflow Buffers"
                        }
                    ]
                }
            ],
            "metrics": [
                {
                    "cvssV4_0": {
                        "Automatable": "NOT_DEFINED",
                        "Recovery": "NOT_DEFINED",
                        "Safety": "NOT_DEFINED",
                        "attackComplexity": "HIGH",
                        "attackRequirements": "PRESENT",
                        "attackVector": "ADJACENT",
                        "baseScore": 5.7,
                        "baseSeverity": "MEDIUM",
                        "privilegesRequired": "LOW",
                        "providerUrgency": "NOT_DEFINED",
                        "subAvailabilityImpact": "NONE",
                        "subConfidentialityImpact": "LOW",
                        "subIntegrityImpact": "HIGH",
                        "userInteraction": "PASSIVE",
                        "valueDensity": "NOT_DEFINED",
                        "vectorString": "CVSS:4.0/AV:A/AC:H/AT:P/PR:L/UI:P/VC:L/VI:H/VA:N/SC:L/SI:H/SA:N",
                        "version": "4.0",
                        "vulnAvailabilityImpact": "NONE",
                        "vulnConfidentialityImpact": "LOW",
                        "vulnIntegrityImpact": "HIGH",
                        "vulnerabilityResponseEffort": "NOT_DEFINED"
                    },
                    "format": "CVSS",
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "GENERAL"
                        }
                    ]
                }
            ],
            "problemTypes": [
                {
                    "descriptions": [
                        {
                            "cweId": "CWE-787",
                            "description": "CWE-787 Out-of-bounds Write",
                            "lang": "en",
                            "type": "CWE"
                        }
                    ]
                }
            ],
            "providerMetadata": {
                "orgId": "14ed7db2-1595-443d-9d34-6215bf890778",
                "shortName": "Google",
                "dateUpdated": "2025-10-06T08:08:46.060Z"
            },
            "references": [
                {
                    "url": "https://issuetracker.google.com/433513232"
                }
            ],
            "source": {
                "discovery": "EXTERNAL"
            },
            "title": "Heap-buffer-overflow read in FFmpeg DHAV get_duration",
            "x_generator": {
                "engine": "Vulnogram 0.2.0"
            }
        },
        "adp": [
            {
                "metrics": [
                    {
                        "other": {
                            "type": "ssvc",
                            "content": {
                                "timestamp": "2025-10-06T16:25:07.013593Z",
                                "id": "CVE-2025-59729",
                                "options": [
                                    {
                                        "Exploitation": "none"
                                    },
                                    {
                                        "Automatable": "no"
                                    },
                                    {
                                        "Technical Impact": "partial"
                                    }
                                ],
                                "role": "CISA Coordinator",
                                "version": "2.0.3"
                            }
                        }
                    }
                ],
                "title": "CISA ADP Vulnrichment",
                "providerMetadata": {
                    "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
                    "shortName": "CISA-ADP",
                    "dateUpdated": "2025-10-06T16:28:37.534Z"
                }
            }
        ]
    }
}