Skip to content
Heist/ feed
Back to feed
High

Lychee: Missing rate limiting on album password unlock endpoint allows brute-force attacks

Type: advisorySources: OSV

Lychee is a free, open-source photo-management tool. Prior to 7.6.1, POST /api/v2/Album::unlock has no throttle, attempt counter, backoff, CAPTCHA, or lockout. UnlockAlbumRequest::authorize() permits any caller to submit attempts, and app/Actions/Album/Unlock.php verifies each guess with Hash::check without limiting repeated failures. A remote unauthenticated attacker who knows or can obtain an album identifier can automate password guesses against a password-protected album and, if the password is recovered, gain access to its private photo collection. This issue is fixed in version 7.6.1.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-61611
Confirmed fixed CVEs
Not specified
Updated in this feed
8 Nov 2026, 01:19 UTC · Revision 1

Source evidence

Lychee: Missing rate limiting on album password unlock endpoint allows brute-force attacks

core-osv · Original source

Published 15 Oct 2026, 16:25 UTC

Lychee is a free, open-source photo-management tool. Prior to 7.6.1, POST /api/v2/Album::unlock has no throttle, attempt counter, backoff, CAPTCHA, or lockout. UnlockAlbumRequest::authorize() permits any caller to submit attempts, and app/Actions/Album/Unlock.php verifies each guess with Hash::check without limiting repeated failures. A remote unauthenticated attacker who knows or can obtain an album identifier can automate password guesses against a password-protected album and, if the password is recovered, gain access to its private photo collection. This issue is fixed in version 7.6.1.

osv:CVE-2026-61611
Complete source record
{
  "id": "b9927394f33afd67e3186d1eadd61146df2ff36ed2391ad4fb09b7eb98fca8b6",
  "url": "https://osv.dev/vulnerability/CVE-2026-61611",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Lychee: Missing rate limiting on album password unlock endpoint allows brute-force attacks",
    "summary": "Lychee is a free, open-source photo-management tool. Prior to 7.6.1, POST /api/v2/Album::unlock has no throttle, attempt counter, backoff, CAPTCHA, or lockout. UnlockAlbumRequest::authorize() permits any caller to submit attempts, and app/Actions/Album/Unlock.php verifies each guess with Hash::check without limiting repeated failures. A remote unauthenticated attacker who knows or can obtain an album identifier can automate password guesses against a password-protected album and, if the password is recovered, gain access to its private photo collection. This issue is fixed in version 7.6.1.",
    "evidence": "osv:CVE-2026-61611",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-61611",
      "aliases": [
        "CVE-2026-61611",
        "GHSA-48vf-fwx6-2ph6"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/lycheeorg/lychee",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "7434aad416d3304fd0910059d43a6c87d5ccfca9"
                },
                {
                  "fixed": "592291458a3373114a21412956fd23cfcda32aba"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "7.6.1"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "592291458a3373114a21412956fd23cfcda32aba"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "7434aad416d3304fd0910059d43a6c87d5ccfca9"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v7.6.1"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v7.6.0",
            "v7.5.4",
            "v7.5.3",
            "v7.5.2",
            "v7.5.1",
            "v7.5.0",
            "v7.4.2",
            "v7.4.1",
            "v7.4.0",
            "v7.3.3",
            "v7.3.2",
            "v7.3.1",
            "v7.3.0",
            "v7.2.1",
            "v7.2.0",
            "v7.1.2",
            "v7.1.1",
            "v7.1.0",
            "v7.0.1",
            "v7.0.0",
            "v6.10.4",
            "v6.10.3",
            "v6.10.2",
            "v6.10.1",
            "v6.10.0",
            "v6.9.4",
            "v6.9.3",
            "v6.9.2",
            "v6.9.1",
            "v6.9.0",
            "v6.8.1",
            "v6.8.0",
            "v6.7.2",
            "v6.7.1",
            "v6.7.0",
            "v6.6.14",
            "v6.6.13",
            "v6.6.12",
            "v6.6.11",
            "v6.6.10",
            "v6.6.9",
            "v6.6.8",
            "v6.6.7",
            "v6.6.6",
            "v6.6.5",
            "v6.6.4",
            "v6.6.3",
            "v6.6.2",
            "v6.6.1",
            "v6.6.0",
            "v6.5.3",
            "v6.5.2",
            "v6.5.1",
            "v6.5.0",
            "v6.4.2",
            "v6.4.1",
            "v6.4.0",
            "v6.3.5",
            "v6.3.4",
            "v6.3.3",
            "v6.3.2",
            "v6.3.1",
            "v6.3.0",
            "v6.2.0",
            "v6.1.2",
            "v6.1.1",
            "v6.1.0",
            "v6.0.1",
            "v6.0.0",
            "v5.5.1",
            "v5.5.0",
            "v5.4.0",
            "v5.3.1",
            "v5.3.0",
            "v5.2.2",
            "v5.2.1",
            "v5.2.0",
            "v5.1.2",
            "v5.1.1",
            "v5.1.0",
            "v5.0.3",
            "v5.0.2",
            "v5.0.1",
            "v5.0.0",
            "v5.0.0-beta",
            "v4.13.0",
            "v4.12.0",
            "v4.11.1",
            "v4.11.0",
            "v4.10.0",
            "v4.9.4",
            "v4.9.3",
            "v4.9.3-RC",
            "v4.9.2",
            "v4.9.1",
            "v4.9.0",
            "v4.8.1",
            "v4.8.0",
            "v4.7.4",
            "v4.7.3",
            "v4.7.2",
            "v4.7.1",
            "v4.7.0",
            "v4.6.5",
            "v4.6.4",
            "v4.6.3-RC1",
            "v4.6.2",
            "v4.6.2-RC2",
            "v4.6.2-RC1",
            "v4.6.1-RC2",
            "v4.6.1",
            "v4.6.1-RC1",
            "v4.6.0",
            "v4.6.0-RC3",
            "v4.6.0-RC2",
            "v4.6.0-RC",
            "v4.5.3",
            "v4.5.2",
            "v4.5.1",
            "v4.5.0",
            "v4.4.0",
            "v4.3.6",
            "v4.3.5",
            "v4.3.4",
            "v4.3.0",
            "v4.2.2",
            "v4.2.1",
            "v4.2.0",
            "v4.1.0",
            "v4.0.8",
            "v4.0.7",
            "v4.0.6",
            "v4.0.5",
            "v4.0.4",
            "v4.0.3",
            "v4.0.2",
            "v4.0.1",
            "v4.0.0",
            "v4.0.0-beta.2",
            "v4.0.0-beta.1",
            "v4.0.0-alpha.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-61611.json"
          }
        }
      ],
      "modified": "2026-10-31T02:30:44.613632929Z",
      "provider": "osv",
      "references": [
        "https://github.com/LycheeOrg/Lychee/releases/tag/v7.6.1",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/61xxx/CVE-2026-61611.json",
        "https://github.com/LycheeOrg/Lychee/security/advisories/GHSA-48vf-fwx6-2ph6",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-61611",
        "https://github.com/LycheeOrg/Lychee/commit/592291458a3373114a21412956fd23cfcda32aba",
        "https://github.com/LycheeOrg/Lychee/pull/4448"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-307"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/61xxx/CVE-2026-61611.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-61611",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 521285,
  "published_at": "2026-10-15T16:25:24.968+00:00"
}