Stack-based Buffer Overflow Affecting biosig package, versions *


Severity

Recommended
low

Based on Debian security rating.

Threat Intelligence

EPSS
0.1% (28th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk IDSNYK-DEBIAN12-BIOSIG-12194963
  • published26 Aug 2025
  • disclosed25 Aug 2025

Introduced: 25 Aug 2025

CVE-2025-54489  (opens in a new tab)
CWE-121  (opens in a new tab)

How to fix?

There is no fixed version for Debian:12 biosig.

NVD Description

Note: Versions mentioned in the description apply only to the upstream biosig package and not the biosig package as distributed by Debian. See How to fix? for Debian:12 relevant fixed versions and status.

A stack-based buffer overflow vulnerability exists in the MFER parsing functionality of The Biosig Project libbiosig 3.9.0 and Master Branch (35a819fa). A specially crafted MFER file can lead to arbitrary code execution. An attacker can provide a malicious file to trigger this vulnerability.This vulnerability manifests on line 8970 of biosig.c on the current master branch (35a819fa), when the Tag is 63:

            else if (tag==63) {
                uint8_t tag2=255, len2=255;

            count = 0;
            while ((count<len) && !(FlagInfiniteLength && len2==0 && tag2==0)){
                curPos += ifread(&tag2,1,1,hdr);
                curPos += ifread(&len2,1,1,hdr);
                if (VERBOSE_LEVEL==9)
                    fprintf(stdout,"MFER: tag=%3i chan=%2i len=%-4i tag2=%3i len2=%3i curPos=%i %li count=%4i\n",tag,chan,len,tag2,len2,curPos,iftell(hdr),(int)count);

                if (FlagInfiniteLength && len2==0 && tag2==0) break;

                count  += (2+len2);
                curPos += ifread(&buf,1,len2,hdr);

Here, the number of bytes read is not the Data Length decoded from the current frame in the file (len) but rather is a new length contained in a single octet read from the same input file (len2). Despite this, a stack-based buffer overflow condition can still occur, as the destination buffer is still buf, which has a size of only 128 bytes, while len2 can be as large as 255.

CVSS Base Scores

version 3.1