cve-2024-55603
Vulnerability from cvelistv5
Published
2024-12-18 23:52
Modified
2024-12-20 20:12
Severity ?
EPSS score ?
Summary
Insufficient session invalidation in Kanboard
References
{ "containers": { "adp": [ { "metrics": [ { "other": { "content": { "id": "CVE-2024-55603", "options": [ { "Exploitation": "none" }, { "Automatable": "yes" }, { "Technical Impact": "partial" } ], "role": "CISA Coordinator", "timestamp": "2024-12-20T20:10:11.562584Z", "version": "2.0.3" }, "type": "ssvc" } } ], "providerMetadata": { "dateUpdated": "2024-12-20T20:12:10.648Z", "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP" }, "title": "CISA ADP Vulnrichment" } ], "cna": { "affected": [ { "product": "kanboard", "vendor": "kanboard", "versions": [ { "status": "affected", "version": "\u003c 1.2.43" } ] } ], "descriptions": [ { "lang": "en", "value": "Kanboard is project management software that focuses on the Kanban methodology. In affected versions sessions are still usable even though their lifetime has exceeded. Kanboard implements a cutom session handler (`app/Core/Session/SessionHandler.php`), to store the session data in a database. Therefore, when a `session_id` is given, kanboard queries the data from the `sessions` sql table. At this point, it does not correctly verify, if a given `session_id` has already exceeded its lifetime (`expires_at`).\nThus, a session which\u0027s lifetime is already `\u003e time()`, is still queried from the database and hence a valid login. The implemented **SessionHandlerInterface::gc** function, that does remove invalid sessions, is called only **with a certain probability** (_Cleans up expired sessions. Called by `session_start()`, based on `session.gc_divisor`, `session.gc_probability` and `session.gc_maxlifetime` settings_) accordingly to the php documentation. In the official Kanboard docker image these values default to: session.gc_probability=1, session.gc_divisor=1000. Thus, an expired session is only terminated with probability 1/1000. This issue has been addressed in release 1.2.43 and all users are advised to upgrade. There are no known workarounds for this vulnerability." } ], "metrics": [ { "cvssV3_1": { "attackComplexity": "LOW", "attackVector": "NETWORK", "availabilityImpact": "NONE", "baseScore": 6.5, "baseSeverity": "MEDIUM", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "privilegesRequired": "NONE", "scope": "UNCHANGED", "userInteraction": "NONE", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N", "version": "3.1" } } ], "problemTypes": [ { "descriptions": [ { "cweId": "CWE-613", "description": "CWE-613: Insufficient Session Expiration", "lang": "en", "type": "CWE" } ] } ], "providerMetadata": { "dateUpdated": "2024-12-18T23:52:57.327Z", "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "shortName": "GitHub_M" }, "references": [ { "name": "https://github.com/kanboard/kanboard/security/advisories/GHSA-gv5c-8pxr-p484", "tags": [ "x_refsource_CONFIRM" ], "url": "https://github.com/kanboard/kanboard/security/advisories/GHSA-gv5c-8pxr-p484" }, { "name": "https://github.com/kanboard/kanboard/commit/7ce61c34d962ca8b5dce776289ddf4b207be6e78", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/kanboard/kanboard/commit/7ce61c34d962ca8b5dce776289ddf4b207be6e78" }, { "name": "https://github.com/kanboard/kanboard/blob/main/app/Core/Session/SessionHandler.php#L40", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/kanboard/kanboard/blob/main/app/Core/Session/SessionHandler.php#L40" }, { "name": "https://www.php.net/manual/en/function.session-start.php", "tags": [ "x_refsource_MISC" ], "url": "https://www.php.net/manual/en/function.session-start.php" }, { "name": "https://www.php.net/manual/en/session.configuration.php#ini.session.gc-divisor", "tags": [ "x_refsource_MISC" ], "url": "https://www.php.net/manual/en/session.configuration.php#ini.session.gc-divisor" }, { "name": "https://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime", "tags": [ "x_refsource_MISC" ], "url": "https://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime" }, { "name": "https://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability", "tags": [ "x_refsource_MISC" ], "url": "https://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability" }, { "name": "https://www.php.net/manual/en/sessionhandlerinterface.gc.php", "tags": [ "x_refsource_MISC" ], "url": "https://www.php.net/manual/en/sessionhandlerinterface.gc.php" } ], "source": { "advisory": "GHSA-gv5c-8pxr-p484", "discovery": "UNKNOWN" }, "title": "Insufficient session invalidation in Kanboard" } }, "cveMetadata": { "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "assignerShortName": "GitHub_M", "cveId": "CVE-2024-55603", "datePublished": "2024-12-18T23:52:57.327Z", "dateReserved": "2024-12-09T14:22:52.524Z", "dateUpdated": "2024-12-20T20:12:10.648Z", "state": "PUBLISHED" }, "dataType": "CVE_RECORD", "dataVersion": "5.1", "meta": { "nvd": "{\"cve\":{\"id\":\"CVE-2024-55603\",\"sourceIdentifier\":\"security-advisories@github.com\",\"published\":\"2024-12-19T00:15:06.713\",\"lastModified\":\"2025-03-12T17:42:31.367\",\"vulnStatus\":\"Analyzed\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"Kanboard is project management software that focuses on the Kanban methodology. In affected versions sessions are still usable even though their lifetime has exceeded. Kanboard implements a cutom session handler (`app/Core/Session/SessionHandler.php`), to store the session data in a database. Therefore, when a `session_id` is given, kanboard queries the data from the `sessions` sql table. At this point, it does not correctly verify, if a given `session_id` has already exceeded its lifetime (`expires_at`).\\nThus, a session which\u0027s lifetime is already `\u003e time()`, is still queried from the database and hence a valid login. The implemented **SessionHandlerInterface::gc** function, that does remove invalid sessions, is called only **with a certain probability** (_Cleans up expired sessions. Called by `session_start()`, based on `session.gc_divisor`, `session.gc_probability` and `session.gc_maxlifetime` settings_) accordingly to the php documentation. In the official Kanboard docker image these values default to: session.gc_probability=1, session.gc_divisor=1000. Thus, an expired session is only terminated with probability 1/1000. This issue has been addressed in release 1.2.43 and all users are advised to upgrade. There are no known workarounds for this vulnerability.\"},{\"lang\":\"es\",\"value\":\"Kanboard es un software de gesti\u00f3n de proyectos que se centra en la metodolog\u00eda Kanban. En las versiones afectadas, las sesiones a\u00fan se pueden utilizar aunque su vida \u00fatil haya excedido. Kanboard implementa un gestionador de sesi\u00f3n personalizado (`app/Core/Session/SessionHandler.php`), para almacenar los datos de la sesi\u00f3n en una base de datos. Por lo tanto, cuando se proporciona un `session_id`, Kanboard consulta los datos de la tabla SQL `sessions`. En este punto, no verifica correctamente si un `session_id` dado ya ha excedido su vida \u00fatil (`expires_at`). Por lo tanto, una sesi\u00f3n cuya vida \u00fatil ya es `\u0026gt; time()`, a\u00fan se consulta desde la base de datos y, por lo tanto, es un inicio de sesi\u00f3n v\u00e1lido. La funci\u00f3n **SessionHandlerInterface::gc** implementada, que elimina sesiones no v\u00e1lidas, se llama solo **con cierta probabilidad** (_Limpia sesiones caducadas. Llamada por `session_start()`, basada en las configuraciones `session.gc_divisor`, `session.gc_probability` y `session.gc_maxlifetime`_) de acuerdo con la documentaci\u00f3n de php. En la imagen oficial de Docker de Kanboard, estos valores predeterminados son: session.gc_probability=1, session.gc_divisor=1000. Por lo tanto, una sesi\u00f3n caducada solo se termina con una probabilidad de 1/1000. Este problema se ha solucionado en la versi\u00f3n 1.2.43 y se recomienda a todos los usuarios que actualicen. No existen workarounds conocidos para esta vulnerabilidad.\"}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N\",\"baseScore\":6.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"LOW\",\"integrityImpact\":\"LOW\",\"availabilityImpact\":\"NONE\"},\"exploitabilityScore\":3.9,\"impactScore\":2.5},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N\",\"baseScore\":6.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"LOW\",\"integrityImpact\":\"LOW\",\"availabilityImpact\":\"NONE\"},\"exploitabilityScore\":3.9,\"impactScore\":2.5}]},\"weaknesses\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-613\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:kanboard:kanboard:*:*:*:*:*:*:*:*\",\"versionEndExcluding\":\"1.2.43\",\"matchCriteriaId\":\"79E29EC0-1572-49D5-8077-7803D7AD75C3\"}]}]}],\"references\":[{\"url\":\"https://github.com/kanboard/kanboard/blob/main/app/Core/Session/SessionHandler.php#L40\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Product\"]},{\"url\":\"https://github.com/kanboard/kanboard/commit/7ce61c34d962ca8b5dce776289ddf4b207be6e78\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Patch\"]},{\"url\":\"https://github.com/kanboard/kanboard/security/advisories/GHSA-gv5c-8pxr-p484\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Exploit\",\"Vendor Advisory\"]},{\"url\":\"https://www.php.net/manual/en/function.session-start.php\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Product\"]},{\"url\":\"https://www.php.net/manual/en/session.configuration.php#ini.session.gc-divisor\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Product\"]},{\"url\":\"https://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Product\"]},{\"url\":\"https://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Product\"]},{\"url\":\"https://www.php.net/manual/en/sessionhandlerinterface.gc.php\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Product\"]}]}}" } }
Loading...
Loading...
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.