Skip to content

CodiMD <2.5.4 - Insecure Filename Randomization

ID: CVE-2024-38353

Severity: medium

Author: denandz,PulseSecurity.co.nz

Tags: cve,cve2024,file-upload,intrusive,codimd

CodiMD does not require valid authentication to access uploaded images or to upload new image data. An attacker who can determine an uploaded image’s URL can gain unauthorised access to uploaded image data. Due to the insecure random filename generation in the underlying Formidable library, an attacker can determine the filenames for previously uploaded images and the likelihood of this issue being exploited is increased.

id: CVE-2024-38353
info:
name: CodiMD <2.5.4 - Insecure Filename Randomization
author: denandz,PulseSecurity.co.nz
severity: medium
description: |
CodiMD does not require valid authentication to access uploaded images or to upload new image data. An attacker who can determine an uploaded image's URL can gain unauthorised access to uploaded image data. Due to the insecure random filename generation in the underlying Formidable library, an attacker can determine the filenames for previously uploaded images and the likelihood of this issue being exploited is increased.
impact: |
An attacker can gain unauthorised access to images uploaded to CodiMD.
remediation: |
Update CodiMD to version 2.5.4 or later
reference:
- https://github.com/hackmdio/codimd/security/advisories/GHSA-2764-jppc-p2hm
- https://pulsesecurity.co.nz/advisories/codimd-missing-image-access-controls
- https://nvd.nist.gov/vuln/detail/CVE-2024-38353
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
cvss-score: 5.3
cve-id: CVE-2024-38353
cwe-id: CWE-338
epss-score: 0.00043
epss-percentile: 0.10941
metadata:
verified: true
max-request: 1
shodan-query: html:"CodiMD"
tags: cve,cve2024,file-upload,intrusive,codimd
variables:
filename: "{{to_lower(rand_text_alpha(5))}}"
http:
- raw:
- |
POST /uploadimage HTTP/1.1
Host: {{Hostname}}
Content-Type: multipart/form-data; boundary=---------------------------92633278134516118923780781161
-----------------------------92633278134516118923780781161
Content-Disposition: form-data; name="image"; filename="{{filename}}.gif"
Content-Type: image/gif
{{base64_decode("R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==")}}
-----------------------------92633278134516118923780781161--
matchers-condition: and
matchers:
- type: regex
part: body
regex:
- '"link":"/uploads/[a-z0-9]{25,25}.gif"'
- type: status
status:
- 200
extractors:
- type: regex
part: body
group: 1
regex:
- '"link":"(/uploads/[a-z0-9]{25,25}.gif)"'
# digest: 4a0a00473045022031ead4ab3d59d6003b67dae0c0c7d4dedf1655da51245cc08668471d25382885022100ba92d71ff8601bd7de5ef290061dc587c41e6fa0f92460c368c3081636a88ba0:922c64590222798bb761d5b6d8e72950

This template is used to detect vulnerabilities in web applications. It can be used with the Nuclei tool to scan for specific patterns or behaviors.

Terminal window
$ nuclei -u "URL" -t "http/cves/2024/CVE-2024-38353.yaml"

View on Github