You are viewing this page in an unauthorized frame window.
This is a potential security issue, you are being redirected to
https://nvd.nist.gov
An official website of the United States government
Official websites use .gov
A .gov website belongs to an official government organization in the United States.
Secure .gov websites use HTTPS
A lock () or https:// means you've safely connected to the .gov website. Share sensitive information only on official, secure websites.
This CVE record is not being prioritized for NVD enrichment efforts due to resource or other concerns.
Description
Dulwich is a pure-Python implementation of the Git file formats and protocols. Starting in version 0.24.0 and prior to version 1.2.5, dulwich.porcelain.format_patch(outdir=...) derives each patch filename from the commit's subject line. Prior to this fix, get_summary only replaced spaces with dashes - path separators (/, \), parent-directory components (..), and other filename-hostile characters (e.g. :) were preserved verbatim and passed straight into os.path.join(outdir, f"{i:04d}-{summary}.patch"). A malicious commit subject could therefore direct the generated patch file outside the requested outdir. This is fixed in Dulwich 1.2.5. Users should upgrade to 1.2.5 or later. dulwich.patch.get_summary now mirrors git's format_sanitized_subject: only `[A-Za-z0-9._]` are kept, runs of other characters collapse to a single -, consecutive . collapse to a single ., trailing ./- are stripped, and the result is length-limited. This makes the returned string safe to embed as a filename component, so format_patch can no longer be steered out of outdir via the commit subject. Until upgrading, callers that pass untrusted commits to porcelain.format_patch can use stdout=True and write the patch to a destination they control, rather than letting format_patch choose the filename; validate the chosen path before opening - e.g. compare os.path.realpath(returned_path) against os.path.realpath(outdir) and reject any patch whose resolved path is not inside outdir; and/or pre-screen commits and refuse to format any whose subject's first line contains /, \, .., or other characters that are not safe on the target filesystem.
Metrics
NVD enrichment efforts reference publicly available information to associate
vector strings. CVSS information contributed by other sources is also
displayed.
By selecting these links, you will be leaving NIST webspace.
We have provided these links to other web sites because they
may have information that would be of interest to you. No
inferences should be drawn on account of other sites being
referenced, or not, from this page. There may be other web
sites that are more appropriate for your purpose. NIST does
not necessarily endorse the views expressed, or concur with
the facts presented on these sites. Further, NIST does not
endorse any commercial products that may be mentioned on
these sites. Please address comments about this page to [email protected].
Title: Dulwich de jelmer, Description: Dulwich es una implementación puramente en Python de los formatos de archivo y protocolos de Git. A partir de la versión 0.24.0 y antes de la versión 1.2.5, dulwich.porcelain.format_patch(outdir=...) deriva cada nombre de archivo de parche de la línea de asunto del commit. Antes de esta corrección, get_summary solo reemplazaba los espacios con guiones - los separadores de ruta (/, \), los componentes de directorio padre (..), y otros caracteres hostiles para nombres de archivo (p. ej. :) se conservaban textualmente y se pasaban directamente a os.path.join(outdir, f"{i:04d}-{summary}.patch"). Un asunto de commit malicioso podría, por lo tanto, dirigir el archivo de parche generado fuera del outdir solicitado. Esto se corrige en Dulwich 1.2.5. Los usuarios deberían actualizar a la versión 1.2.5 o posterior. dulwich.patch.get_summary ahora refleja el format_sanitized_subject de git: solo se mantienen '[A-Za-z0-9._]', las secuencias de otros caracteres se colapsan a un solo -, los puntos consecutivos se colapsan a un solo ., los ./- finales se eliminan, y el resultado tiene una longitud limitada. Esto hace que la cadena devuelta sea segura para incrustar como un componente de nombre de archivo, por lo que format_patch ya no puede ser dirigido fuera de outdir a través del asunto del commit. Hasta que se actualice, los llamadores que pasan commits no confiables a porcelain.format_patch pueden usar stdout=True y escribir el parche en un destino que controlen, en lugar de dejar que format_patch elija el nombre de archivo; validar la ruta elegida antes de abrir - p. ej. comparar os.path.realpath(returned_path) con os.path.realpath(outdir) y rechazar cualquier parche cuya ruta resuelta no esté dentro de outdir; y/o pre-filtrar commits y negarse a formatear cualquiera cuya primera línea del asunto contenga /, \, .., u otros caracteres que no sean seguros en el sistema de archivos de destino.
New CVE Received from GitHub, Inc.6/10/2026 7:16:48 PM
Action
Type
Old Value
New Value
Added
Description
Dulwich is a pure-Python implementation of the Git file formats and protocols. Starting in version 0.24.0 and prior to version 1.2.5, dulwich.porcelain.format_patch(outdir=...) derives each patch filename from the commit's subject line. Prior to this fix, get_summary only replaced spaces with dashes - path separators (/, \), parent-directory components (..), and other filename-hostile characters (e.g. :) were preserved verbatim and passed straight into os.path.join(outdir, f"{i:04d}-{summary}.patch"). A malicious commit subject could therefore direct the generated patch file outside the requested outdir. This is fixed in Dulwich 1.2.5. Users should upgrade to 1.2.5 or later. dulwich.patch.get_summary now mirrors git's format_sanitized_subject: only `[A-Za-z0-9._]` are kept, runs of other characters collapse to a single -, consecutive . collapse to a single ., trailing ./- are stripped, and the result is length-limited. This makes the returned string safe to embed as a filename component, so format_patch can no longer be steered out of outdir via the commit subject. Until upgrading, callers that pass untrusted commits to porcelain.format_patch can use stdout=True and write the patch to a destination they control, rather than letting format_patch choose the filename; validate the chosen path before opening - e.g. compare os.path.realpath(returned_path) against os.path.realpath(outdir) and reject any patch whose resolved path is not inside outdir; and/or pre-screen commits and refuse to format any whose subject's first line contains /, \, .., or other characters that are not safe on the target filesystem.