@blamejs/exceptd-skills 0.13.113 → 0.13.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/data/_indexes/_meta.json +9 -9
- package/data/_indexes/activity-feed.json +2 -2
- package/data/_indexes/catalog-summaries.json +2 -2
- package/data/_indexes/chains.json +300 -0
- package/data/atlas-ttps.json +2 -0
- package/data/attack-techniques.json +12 -3
- package/data/cve-catalog.json +208 -0
- package/data/cwe-catalog.json +8 -2
- package/data/framework-control-gaps.json +16 -0
- package/data/zeroday-lessons.json +100 -0
- package/manifest.json +44 -44
- package/package.json +2 -2
- package/sbom.cdx.json +25 -25
package/data/cve-catalog.json
CHANGED
|
@@ -17908,6 +17908,214 @@
|
|
|
17908
17908
|
"_intake_method": "manual-verified-curation",
|
|
17909
17909
|
"_kev_short_description": "Dify's RemoteFileUploadApi fetches user-supplied URLs without destination validation, letting an unauthenticated attacker reach internal/cloud-metadata services (CWE-918 SSRF); no fixed version published - validate/allowlist the fetch destination."
|
|
17910
17910
|
},
|
|
17911
|
+
"CVE-2025-1796": {
|
|
17912
|
+
"name": "Dify Weak-PRNG Password Reset Account Takeover",
|
|
17913
|
+
"type": "Account Takeover",
|
|
17914
|
+
"cvss_score": 8.8,
|
|
17915
|
+
"cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
|
|
17916
|
+
"cvss_note": "NIST (NVD) CVSS v3.1 base 8.8 (HIGH); huntr.dev (CNA) rates it 7.5 (HIGH, AC:H). Dify generates password-reset codes with a weak pseudo-random number generator (random.randint instead of a cryptographically secure source), so an attacker predicts the reset code and takes over any account, including administrators (CWE-338 weak PRNG + CWE-640 weak password-recovery mechanism).",
|
|
17917
|
+
"cisa_kev": false,
|
|
17918
|
+
"poc_available": true,
|
|
17919
|
+
"poc_description": "Documented in the disclosing huntr.dev advisory (https://github.com/advisories/GHSA-cvg9-334x-w586): predict the weak-PRNG reset code and complete a password reset for any account.",
|
|
17920
|
+
"ai_discovered": false,
|
|
17921
|
+
"ai_discovery_source": "human_researcher",
|
|
17922
|
+
"ai_discovery_notes": "Disclosed via huntr.dev (https://github.com/advisories/GHSA-cvg9-334x-w586). The abused surface is Dify, a widely used low-code LLM application-development platform.",
|
|
17923
|
+
"ai_assisted_weaponization": false,
|
|
17924
|
+
"ai_assisted_notes": "No AI-assisted weaponization; the flaw is a weak password-recovery mechanism in an LLM app platform.",
|
|
17925
|
+
"active_exploitation": "none",
|
|
17926
|
+
"active_exploitation_notes": "Advisory disclosure; no confirmed in-the-wild exploitation reported as of curation. No fixed version is published, so exposed instances remain vulnerable.",
|
|
17927
|
+
"affected": "Dify 0.10.1.",
|
|
17928
|
+
"affected_versions": [
|
|
17929
|
+
"Dify 0.10.1"
|
|
17930
|
+
],
|
|
17931
|
+
"vector": "Dify's password-reset flow generates the reset code with a weak pseudo-random number generator (random.randint) rather than a cryptographically secure RNG. An attacker predicts the reset code for any account - including administrator accounts - and completes a password reset to take it over (CWE-338 / CWE-640). Disclosed via huntr.dev.",
|
|
17932
|
+
"complexity": "low",
|
|
17933
|
+
"complexity_notes": "NVD AV:N / AC:L / PR:L - a low-privilege account suffices to trigger and predict the reset code; the takeover reaches admin.",
|
|
17934
|
+
"patch_available": false,
|
|
17935
|
+
"patch_required_reboot": false,
|
|
17936
|
+
"live_patch_available": false,
|
|
17937
|
+
"live_patch_tools": [],
|
|
17938
|
+
"live_patch_notes": "No fixed version is published as of curation; mitigation is replacing the reset-token generation with a CSPRNG and verifying the reset token server-side (see vendor_update_paths).",
|
|
17939
|
+
"vendor_update_paths": [
|
|
17940
|
+
"No fixed Dify release is published. Generate password-reset tokens with a cryptographically secure RNG (e.g. secrets / os.urandom), make them long and single-use with short expiry, and rate-limit reset attempts so a code cannot be predicted or brute-forced."
|
|
17941
|
+
],
|
|
17942
|
+
"framework_control_gaps": {
|
|
17943
|
+
"NIST-800-53-IA-2": "Identification/authentication is undermined: the LLM app's password-recovery flow lets an attacker authenticate as any user, including admin.",
|
|
17944
|
+
"NIST-800-53-AC-3": "Access enforcement is bypassed: a predictable reset code grants control of any account.",
|
|
17945
|
+
"ISO-27001-2022-A.5.15": "Access control does not constrain the password-recovery path in the LLM app platform.",
|
|
17946
|
+
"NIS2-Art21-identity-management": "Article 21 identity/access measures do not cover weak password-recovery in AI apps.",
|
|
17947
|
+
"DORA-Art-9": "ICT protection measures do not model AI-app account takeover via password recovery as an ICT-risk event.",
|
|
17948
|
+
"UK-CAF-B2": "Identity and Access Control objective has no objective for secure password-recovery in AI app platforms.",
|
|
17949
|
+
"AU-ISM-1546": "Patch-application control does not single out LLM app platforms.",
|
|
17950
|
+
"ALL-AI-PIPELINE-INTEGRITY": "No framework treats an LLM app platform's password-recovery flow as an authentication-integrity control whose failure yields full (admin) account takeover."
|
|
17951
|
+
},
|
|
17952
|
+
"atlas_refs": [
|
|
17953
|
+
"AML.T0049"
|
|
17954
|
+
],
|
|
17955
|
+
"attack_refs": [
|
|
17956
|
+
"T1190",
|
|
17957
|
+
"T1212",
|
|
17958
|
+
"T1078"
|
|
17959
|
+
],
|
|
17960
|
+
"rwep_score": 44,
|
|
17961
|
+
"rwep_factors": {
|
|
17962
|
+
"cisa_kev": 0,
|
|
17963
|
+
"poc_available": 20,
|
|
17964
|
+
"ai_factor": 0,
|
|
17965
|
+
"active_exploitation": 0,
|
|
17966
|
+
"blast_radius": 24,
|
|
17967
|
+
"patch_available": 0,
|
|
17968
|
+
"live_patch_available": 0,
|
|
17969
|
+
"reboot_required": 0
|
|
17970
|
+
},
|
|
17971
|
+
"rwep_notes": "Elevated (RWEP 44, \"patch within 7 days\" band per lib/scoring.js timeline). Not KEV, no confirmed in-the-wild exploitation, and no fixed version published so no patch credit (Hard Rule #3). poc_available=20 + blast_radius=24 (full account/admin takeover). The weakness is in the password-recovery mechanism - predictable reset code.",
|
|
17972
|
+
"epss_score": null,
|
|
17973
|
+
"epss_date": "2026-05-26",
|
|
17974
|
+
"epss_note": "EPSS not pulled for this entry; retrieve via FIRST EPSS API in a future refresh.",
|
|
17975
|
+
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2025-1796",
|
|
17976
|
+
"cwe_refs": [
|
|
17977
|
+
"CWE-338",
|
|
17978
|
+
"CWE-640"
|
|
17979
|
+
],
|
|
17980
|
+
"iocs": {
|
|
17981
|
+
"behavioral": [
|
|
17982
|
+
"Repeated Dify password-reset requests followed by reset attempts cycling through predictable code values.",
|
|
17983
|
+
"Dify account passwords (including admin) changed without the legitimate owner initiating a reset.",
|
|
17984
|
+
"Dify 0.10.1 with the password-reset flow reachable - the exposed precondition."
|
|
17985
|
+
],
|
|
17986
|
+
"_ioc_source_note": "Behavioral signatures anchored to the huntr.dev advisory (https://github.com/advisories/GHSA-cvg9-334x-w586) and NVD CVE-2025-1796 (CWE-338/CWE-640)."
|
|
17987
|
+
},
|
|
17988
|
+
"source_verified": "2026-05-26",
|
|
17989
|
+
"verification_sources": [
|
|
17990
|
+
"https://nvd.nist.gov/vuln/detail/CVE-2025-1796",
|
|
17991
|
+
"https://github.com/advisories/GHSA-cvg9-334x-w586"
|
|
17992
|
+
],
|
|
17993
|
+
"vendor_advisories": [
|
|
17994
|
+
{
|
|
17995
|
+
"vendor": "GitHub Security Advisory",
|
|
17996
|
+
"advisory_id": "CVE-2025-1796",
|
|
17997
|
+
"url": "https://github.com/advisories/GHSA-cvg9-334x-w586",
|
|
17998
|
+
"severity": "high",
|
|
17999
|
+
"published_date": "2025-03-20"
|
|
18000
|
+
},
|
|
18001
|
+
{
|
|
18002
|
+
"vendor": "NVD",
|
|
18003
|
+
"advisory_id": "CVE-2025-1796",
|
|
18004
|
+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2025-1796",
|
|
18005
|
+
"severity": "high",
|
|
18006
|
+
"published_date": "2025-03-20"
|
|
18007
|
+
}
|
|
18008
|
+
],
|
|
18009
|
+
"last_updated": "2026-05-26",
|
|
18010
|
+
"discovery_attribution_note": "Manually curated from the huntr.dev advisory (https://github.com/advisories/GHSA-cvg9-334x-w586, CWE-338/CWE-640) + NVD (CVSS v3.1 8.8) / huntr (CNA 7.5). Dify LLM-app-platform password-recovery flaw; introduces the AI-app password-recovery-integrity control NEW-CTRL-108.",
|
|
18011
|
+
"_auto_imported": false,
|
|
18012
|
+
"_intake_method": "manual-verified-curation",
|
|
18013
|
+
"_kev_short_description": "Dify generates password-reset codes with a weak PRNG (random.randint), so an attacker predicts the code and takes over any account incl. admin (CWE-338/CWE-640); no fixed version published - use a CSPRNG for reset tokens."
|
|
18014
|
+
},
|
|
18015
|
+
"CVE-2024-12776": {
|
|
18016
|
+
"name": "Dify Unverified Password-Reset Endpoint Account Takeover",
|
|
18017
|
+
"type": "Account Takeover",
|
|
18018
|
+
"cvss_score": 8.1,
|
|
18019
|
+
"cvss_vector": "CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
|
|
18020
|
+
"cvss_note": "huntr.dev (CNA) CVSS v3.0 base 8.1 (HIGH); NVD has not published its own assessed score. Dify's /forgot-password/resets endpoint does not verify the password-reset code before allowing the reset, so an attacker resets the password of any user - including administrators - and takes over the account (CWE-287 improper authentication; NVD classifies it CWE-305 authentication bypass by primary weakness; both map to the catalogued CWE-640 weak password-recovery mechanism).",
|
|
18021
|
+
"cisa_kev": false,
|
|
18022
|
+
"poc_available": true,
|
|
18023
|
+
"poc_description": "Documented in the disclosing huntr.dev advisory (https://github.com/advisories/GHSA-g394-qpx6-x7rr): call /forgot-password/resets without a valid reset code to reset any user's password.",
|
|
18024
|
+
"ai_discovered": false,
|
|
18025
|
+
"ai_discovery_source": "human_researcher",
|
|
18026
|
+
"ai_discovery_notes": "Disclosed via huntr.dev (https://github.com/advisories/GHSA-g394-qpx6-x7rr). The abused surface is Dify, a widely used low-code LLM application-development platform.",
|
|
18027
|
+
"ai_assisted_weaponization": false,
|
|
18028
|
+
"ai_assisted_notes": "No AI-assisted weaponization; the flaw is a weak password-recovery mechanism in an LLM app platform.",
|
|
18029
|
+
"active_exploitation": "none",
|
|
18030
|
+
"active_exploitation_notes": "Advisory disclosure; no confirmed in-the-wild exploitation reported as of curation. No fixed version is published, so exposed instances remain vulnerable.",
|
|
18031
|
+
"affected": "Dify 0.10.1.",
|
|
18032
|
+
"affected_versions": [
|
|
18033
|
+
"Dify 0.10.1"
|
|
18034
|
+
],
|
|
18035
|
+
"vector": "Dify's /forgot-password/resets endpoint does not verify the password-reset code before performing the reset, so an attacker resets the password of any user - including administrators - without possessing a valid reset code, taking over the account (CWE-287 / CWE-640). Disclosed via huntr.dev.",
|
|
18036
|
+
"complexity": "high",
|
|
18037
|
+
"complexity_notes": "huntr CNA AV:N / AC:H / PR:N - unauthenticated, but the reset flow requires some setup (AC:H); the takeover reaches admin.",
|
|
18038
|
+
"patch_available": false,
|
|
18039
|
+
"patch_required_reboot": false,
|
|
18040
|
+
"live_patch_available": false,
|
|
18041
|
+
"live_patch_tools": [],
|
|
18042
|
+
"live_patch_notes": "No fixed version is published as of curation; mitigation is replacing the reset-token generation with a CSPRNG and verifying the reset token server-side (see vendor_update_paths).",
|
|
18043
|
+
"vendor_update_paths": [
|
|
18044
|
+
"No fixed Dify release is published. Verify the password-reset code server-side before accepting a new password at /forgot-password/resets, bind the code to the requesting user and a short expiry, and invalidate it after use."
|
|
18045
|
+
],
|
|
18046
|
+
"framework_control_gaps": {
|
|
18047
|
+
"NIST-800-53-IA-2": "Identification/authentication is undermined: the LLM app's password-recovery flow lets an attacker authenticate as any user, including admin.",
|
|
18048
|
+
"NIST-800-53-AC-3": "Access enforcement is bypassed: an unverified reset endpoint grants control of any account.",
|
|
18049
|
+
"ISO-27001-2022-A.5.15": "Access control does not constrain the password-recovery path in the LLM app platform.",
|
|
18050
|
+
"NIS2-Art21-identity-management": "Article 21 identity/access measures do not cover weak password-recovery in AI apps.",
|
|
18051
|
+
"DORA-Art-9": "ICT protection measures do not model AI-app account takeover via password recovery as an ICT-risk event.",
|
|
18052
|
+
"UK-CAF-B2": "Identity and Access Control objective has no objective for secure password-recovery in AI app platforms.",
|
|
18053
|
+
"AU-ISM-1546": "Patch-application control does not single out LLM app platforms.",
|
|
18054
|
+
"ALL-AI-PIPELINE-INTEGRITY": "No framework treats an LLM app platform's password-recovery flow as an authentication-integrity control whose failure yields full (admin) account takeover."
|
|
18055
|
+
},
|
|
18056
|
+
"atlas_refs": [
|
|
18057
|
+
"AML.T0049"
|
|
18058
|
+
],
|
|
18059
|
+
"attack_refs": [
|
|
18060
|
+
"T1190",
|
|
18061
|
+
"T1078",
|
|
18062
|
+
"T1556"
|
|
18063
|
+
],
|
|
18064
|
+
"rwep_score": 44,
|
|
18065
|
+
"rwep_factors": {
|
|
18066
|
+
"cisa_kev": 0,
|
|
18067
|
+
"poc_available": 20,
|
|
18068
|
+
"ai_factor": 0,
|
|
18069
|
+
"active_exploitation": 0,
|
|
18070
|
+
"blast_radius": 24,
|
|
18071
|
+
"patch_available": 0,
|
|
18072
|
+
"live_patch_available": 0,
|
|
18073
|
+
"reboot_required": 0
|
|
18074
|
+
},
|
|
18075
|
+
"rwep_notes": "Elevated (RWEP 44, \"patch within 7 days\" band per lib/scoring.js timeline). Not KEV, no confirmed in-the-wild exploitation, and no fixed version published so no patch credit (Hard Rule #3). poc_available=20 + blast_radius=24 (full account/admin takeover). The weakness is in the password-recovery mechanism - unverified reset endpoint.",
|
|
18076
|
+
"epss_score": null,
|
|
18077
|
+
"epss_date": "2026-05-26",
|
|
18078
|
+
"epss_note": "EPSS not pulled for this entry; retrieve via FIRST EPSS API in a future refresh.",
|
|
18079
|
+
"epss_source": "https://api.first.org/data/v1/epss?cve=CVE-2024-12776",
|
|
18080
|
+
"cwe_refs": [
|
|
18081
|
+
"CWE-287",
|
|
18082
|
+
"CWE-640"
|
|
18083
|
+
],
|
|
18084
|
+
"iocs": {
|
|
18085
|
+
"behavioral": [
|
|
18086
|
+
"Dify /forgot-password/resets calls that succeed without a preceding valid reset-code issuance/verification.",
|
|
18087
|
+
"Dify account passwords (including admin) changed without the legitimate owner initiating a reset.",
|
|
18088
|
+
"Dify 0.10.1 with the password-reset flow reachable - the exposed precondition."
|
|
18089
|
+
],
|
|
18090
|
+
"_ioc_source_note": "Behavioral signatures anchored to the huntr.dev advisory (https://github.com/advisories/GHSA-g394-qpx6-x7rr) and NVD CVE-2024-12776 (CWE-287/CWE-640; NVD CWE-305)."
|
|
18091
|
+
},
|
|
18092
|
+
"source_verified": "2026-05-26",
|
|
18093
|
+
"verification_sources": [
|
|
18094
|
+
"https://nvd.nist.gov/vuln/detail/CVE-2024-12776",
|
|
18095
|
+
"https://github.com/advisories/GHSA-g394-qpx6-x7rr"
|
|
18096
|
+
],
|
|
18097
|
+
"vendor_advisories": [
|
|
18098
|
+
{
|
|
18099
|
+
"vendor": "GitHub Security Advisory",
|
|
18100
|
+
"advisory_id": "CVE-2024-12776",
|
|
18101
|
+
"url": "https://github.com/advisories/GHSA-g394-qpx6-x7rr",
|
|
18102
|
+
"severity": "high",
|
|
18103
|
+
"published_date": "2024-12-17"
|
|
18104
|
+
},
|
|
18105
|
+
{
|
|
18106
|
+
"vendor": "NVD",
|
|
18107
|
+
"advisory_id": "CVE-2024-12776",
|
|
18108
|
+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2024-12776",
|
|
18109
|
+
"severity": "high",
|
|
18110
|
+
"published_date": "2024-12-17"
|
|
18111
|
+
}
|
|
18112
|
+
],
|
|
18113
|
+
"last_updated": "2026-05-26",
|
|
18114
|
+
"discovery_attribution_note": "Manually curated from the huntr.dev advisory (https://github.com/advisories/GHSA-g394-qpx6-x7rr, CWE-287/CWE-640; NVD assigns CWE-305, mapped to catalogued CWE-640) + huntr (CNA, CVSS v3.0 8.1; NVD unscored). Dify LLM-app-platform password-recovery flaw; introduces the AI-app password-recovery-integrity control NEW-CTRL-108.",
|
|
18115
|
+
"_auto_imported": false,
|
|
18116
|
+
"_intake_method": "manual-verified-curation",
|
|
18117
|
+
"_kev_short_description": "Dify's /forgot-password/resets endpoint does not verify the reset code, letting an attacker reset any user's password incl. admin (CWE-287/CWE-640; NVD CWE-305); no fixed version published - verify the reset token server-side."
|
|
18118
|
+
},
|
|
17911
18119
|
"CVE-2026-41091": {
|
|
17912
18120
|
"name": "Microsoft Defender (Malware Protection Engine) Link-Following LPE to SYSTEM",
|
|
17913
18121
|
"type": "LPE",
|
package/data/cwe-catalog.json
CHANGED
|
@@ -717,6 +717,7 @@
|
|
|
717
717
|
"CVE-2020-10148",
|
|
718
718
|
"CVE-2021-32030",
|
|
719
719
|
"CVE-2023-27351",
|
|
720
|
+
"CVE-2024-12776",
|
|
720
721
|
"CVE-2024-1709",
|
|
721
722
|
"CVE-2025-32975",
|
|
722
723
|
"CVE-2025-3935",
|
|
@@ -1025,7 +1026,9 @@
|
|
|
1025
1026
|
"CAPEC-485"
|
|
1026
1027
|
],
|
|
1027
1028
|
"skills_referencing": [],
|
|
1028
|
-
"evidence_cves": [
|
|
1029
|
+
"evidence_cves": [
|
|
1030
|
+
"CVE-2025-1796"
|
|
1031
|
+
],
|
|
1029
1032
|
"framework_controls_partially_addressing": [
|
|
1030
1033
|
"NIST-800-53-SC-13"
|
|
1031
1034
|
],
|
|
@@ -3513,7 +3516,10 @@
|
|
|
3513
3516
|
"CWE-2000"
|
|
3514
3517
|
],
|
|
3515
3518
|
"related_weaknesses": [],
|
|
3516
|
-
"evidence_cves": [
|
|
3519
|
+
"evidence_cves": [
|
|
3520
|
+
"CVE-2024-12776",
|
|
3521
|
+
"CVE-2025-1796"
|
|
3522
|
+
],
|
|
3517
3523
|
"last_verified": "2026-05-19",
|
|
3518
3524
|
"notes": "Bulk-imported v0.13.18 from the canonical MITRE Top 25 + commonly-referenced-class expansion.",
|
|
3519
3525
|
"_auto_imported": true,
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"CVE-2024-11393",
|
|
53
53
|
"CVE-2024-11394",
|
|
54
54
|
"CVE-2024-12366",
|
|
55
|
+
"CVE-2024-12776",
|
|
55
56
|
"CVE-2024-13059",
|
|
56
57
|
"CVE-2024-1561",
|
|
57
58
|
"CVE-2024-21575",
|
|
@@ -73,6 +74,7 @@
|
|
|
73
74
|
"CVE-2024-9526",
|
|
74
75
|
"CVE-2025-1550",
|
|
75
76
|
"CVE-2025-1753",
|
|
77
|
+
"CVE-2025-1796",
|
|
76
78
|
"CVE-2025-23254",
|
|
77
79
|
"CVE-2025-23266",
|
|
78
80
|
"CVE-2025-25297",
|
|
@@ -3875,8 +3877,10 @@
|
|
|
3875
3877
|
"CVE-2023-48022",
|
|
3876
3878
|
"CVE-2023-6019",
|
|
3877
3879
|
"CVE-2023-6021",
|
|
3880
|
+
"CVE-2024-12776",
|
|
3878
3881
|
"CVE-2024-4889",
|
|
3879
3882
|
"CVE-2024-6587",
|
|
3883
|
+
"CVE-2025-1796",
|
|
3880
3884
|
"CVE-2025-64513",
|
|
3881
3885
|
"CVE-2026-24206",
|
|
3882
3886
|
"CVE-2026-24207",
|
|
@@ -5114,6 +5118,7 @@
|
|
|
5114
5118
|
"CVE-2024-11393",
|
|
5115
5119
|
"CVE-2024-11394",
|
|
5116
5120
|
"CVE-2024-12366",
|
|
5121
|
+
"CVE-2024-12776",
|
|
5117
5122
|
"CVE-2024-13059",
|
|
5118
5123
|
"CVE-2024-1561",
|
|
5119
5124
|
"CVE-2024-21513",
|
|
@@ -5137,6 +5142,7 @@
|
|
|
5137
5142
|
"CVE-2024-9526",
|
|
5138
5143
|
"CVE-2025-1550",
|
|
5139
5144
|
"CVE-2025-1753",
|
|
5145
|
+
"CVE-2025-1796",
|
|
5140
5146
|
"CVE-2025-23254",
|
|
5141
5147
|
"CVE-2025-23266",
|
|
5142
5148
|
"CVE-2025-25297",
|
|
@@ -5225,7 +5231,9 @@
|
|
|
5225
5231
|
"CVE-2023-43791",
|
|
5226
5232
|
"CVE-2023-47117",
|
|
5227
5233
|
"CVE-2023-6038",
|
|
5234
|
+
"CVE-2024-12776",
|
|
5228
5235
|
"CVE-2024-1709",
|
|
5236
|
+
"CVE-2025-1796",
|
|
5229
5237
|
"CVE-2025-25297",
|
|
5230
5238
|
"CVE-2025-3248",
|
|
5231
5239
|
"CVE-2025-3466",
|
|
@@ -5526,6 +5534,8 @@
|
|
|
5526
5534
|
"CVE-2023-47117",
|
|
5527
5535
|
"CVE-2023-6016",
|
|
5528
5536
|
"CVE-2023-6038",
|
|
5537
|
+
"CVE-2024-12776",
|
|
5538
|
+
"CVE-2025-1796",
|
|
5529
5539
|
"CVE-2025-3248",
|
|
5530
5540
|
"CVE-2026-33017",
|
|
5531
5541
|
"CVE-2026-6973"
|
|
@@ -5815,6 +5825,7 @@
|
|
|
5815
5825
|
"CVE-2024-11393",
|
|
5816
5826
|
"CVE-2024-11394",
|
|
5817
5827
|
"CVE-2024-12366",
|
|
5828
|
+
"CVE-2024-12776",
|
|
5818
5829
|
"CVE-2024-13059",
|
|
5819
5830
|
"CVE-2024-1561",
|
|
5820
5831
|
"CVE-2024-21513",
|
|
@@ -5838,6 +5849,7 @@
|
|
|
5838
5849
|
"CVE-2024-9526",
|
|
5839
5850
|
"CVE-2025-1550",
|
|
5840
5851
|
"CVE-2025-1753",
|
|
5852
|
+
"CVE-2025-1796",
|
|
5841
5853
|
"CVE-2025-23254",
|
|
5842
5854
|
"CVE-2025-23266",
|
|
5843
5855
|
"CVE-2025-25297",
|
|
@@ -6097,6 +6109,8 @@
|
|
|
6097
6109
|
"CVE-2023-47117",
|
|
6098
6110
|
"CVE-2023-48022",
|
|
6099
6111
|
"CVE-2023-6038",
|
|
6112
|
+
"CVE-2024-12776",
|
|
6113
|
+
"CVE-2025-1796",
|
|
6100
6114
|
"CVE-2025-3248",
|
|
6101
6115
|
"CVE-2025-55241",
|
|
6102
6116
|
"CVE-2026-24206",
|
|
@@ -6173,10 +6187,12 @@
|
|
|
6173
6187
|
"CVE-2023-6019",
|
|
6174
6188
|
"CVE-2023-6021",
|
|
6175
6189
|
"CVE-2023-6038",
|
|
6190
|
+
"CVE-2024-12776",
|
|
6176
6191
|
"CVE-2024-1709",
|
|
6177
6192
|
"CVE-2024-2912",
|
|
6178
6193
|
"CVE-2024-4889",
|
|
6179
6194
|
"CVE-2024-6587",
|
|
6195
|
+
"CVE-2025-1796",
|
|
6180
6196
|
"CVE-2025-27520",
|
|
6181
6197
|
"CVE-2025-3248",
|
|
6182
6198
|
"CVE-2025-64513",
|
|
@@ -4811,6 +4811,106 @@
|
|
|
4811
4811
|
"_auto_imported": false,
|
|
4812
4812
|
"_intake_method": "manual-verified-curation"
|
|
4813
4813
|
},
|
|
4814
|
+
"CVE-2025-1796": {
|
|
4815
|
+
"name": "Dify Weak-PRNG Password Reset Account Takeover",
|
|
4816
|
+
"lesson_date": "2026-05-26",
|
|
4817
|
+
"attack_vector": {
|
|
4818
|
+
"description": "Dify generates password-reset codes with a weak PRNG (random.randint) rather than a cryptographically secure RNG, so an attacker predicts the reset code and takes over any account, including administrators.",
|
|
4819
|
+
"privileges_required": "low (an account to trigger the predictable reset; takeover reaches admin)",
|
|
4820
|
+
"complexity": "low",
|
|
4821
|
+
"ai_factor": "The abused surface is Dify, a low-code LLM application-development platform. The lesson: an AI app's password-recovery flow is an authentication-integrity control - the predictable reset-code half of a takeover chain that ends in full admin control; reset tokens must be CSPRNG-generated AND verified server-side."
|
|
4822
|
+
},
|
|
4823
|
+
"framework_coverage": {
|
|
4824
|
+
"NIST-800-53-IA-2": {
|
|
4825
|
+
"covered": true,
|
|
4826
|
+
"adequate": false,
|
|
4827
|
+
"gap": "The LLM app's password-recovery flow lets an attacker authenticate as any user, including admin."
|
|
4828
|
+
},
|
|
4829
|
+
"NIST-800-53-AC-3": {
|
|
4830
|
+
"covered": true,
|
|
4831
|
+
"adequate": false,
|
|
4832
|
+
"gap": "A predictable reset code grants control of any account."
|
|
4833
|
+
},
|
|
4834
|
+
"ALL-AI-PIPELINE-INTEGRITY": {
|
|
4835
|
+
"covered": false,
|
|
4836
|
+
"adequate": false,
|
|
4837
|
+
"gap": "No framework treats an LLM app platform's password-recovery flow as an authentication-integrity control whose failure yields full account takeover."
|
|
4838
|
+
}
|
|
4839
|
+
},
|
|
4840
|
+
"compliance_exposure_score": {
|
|
4841
|
+
"percent_audit_passing_orgs_still_exposed": 82,
|
|
4842
|
+
"basis": "LLM app platforms ship self-service password recovery; reset-token generation and verification are rarely audited, and weak PRNG / missing verification persist.",
|
|
4843
|
+
"theater_pattern": "ai_app_weak_password_recovery"
|
|
4844
|
+
},
|
|
4845
|
+
"ai_discovered_zeroday": false,
|
|
4846
|
+
"ai_discovery_source": "human_researcher",
|
|
4847
|
+
"ai_assist_factor": "none",
|
|
4848
|
+
"new_control_requirements": [
|
|
4849
|
+
{
|
|
4850
|
+
"id": "NEW-CTRL-108",
|
|
4851
|
+
"name": "AI-APP-PASSWORD-RECOVERY-INTEGRITY",
|
|
4852
|
+
"description": "An AI application's password-reset / account-recovery flow must (1) generate reset tokens with a cryptographically secure RNG (e.g. secrets / os.urandom - never random.randint or another predictable PRNG), making them long, single-use, and short-lived; and (2) verify the reset token server-side, bound to the requesting account, before accepting a new password - the reset endpoint must never perform a reset without a valid, matching, unexpired token. Rate-limit reset attempts. The distinguishing test: on a staging instance, request a reset and confirm the code is unpredictable across requests, and confirm POSTing to the reset endpoint with a wrong/absent code is rejected - an AI app whose recovery flow uses a weak PRNG or skips token verification permits takeover of any account, including administrators.",
|
|
4853
|
+
"evidence": "https://github.com/advisories/GHSA-cvg9-334x-w586",
|
|
4854
|
+
"gap_closes": [
|
|
4855
|
+
"NIST-800-53-IA-2",
|
|
4856
|
+
"NIST-800-53-AC-3",
|
|
4857
|
+
"ALL-AI-PIPELINE-INTEGRITY"
|
|
4858
|
+
]
|
|
4859
|
+
}
|
|
4860
|
+
],
|
|
4861
|
+
"_auto_imported": false,
|
|
4862
|
+
"_intake_method": "manual-verified-curation"
|
|
4863
|
+
},
|
|
4864
|
+
"CVE-2024-12776": {
|
|
4865
|
+
"name": "Dify Unverified Password-Reset Endpoint Account Takeover",
|
|
4866
|
+
"lesson_date": "2026-05-26",
|
|
4867
|
+
"attack_vector": {
|
|
4868
|
+
"description": "Dify's /forgot-password/resets endpoint does not verify the reset code before allowing a password reset, so an attacker resets any user's password (including admin) without a valid code.",
|
|
4869
|
+
"privileges_required": "none (unauthenticated reset of any account)",
|
|
4870
|
+
"complexity": "high",
|
|
4871
|
+
"ai_factor": "The abused surface is Dify, a low-code LLM application-development platform. The lesson: an AI app's password-recovery flow is an authentication-integrity control - the unverified-reset-endpoint half of a takeover chain that ends in full admin control; reset tokens must be CSPRNG-generated AND verified server-side."
|
|
4872
|
+
},
|
|
4873
|
+
"framework_coverage": {
|
|
4874
|
+
"NIST-800-53-IA-2": {
|
|
4875
|
+
"covered": true,
|
|
4876
|
+
"adequate": false,
|
|
4877
|
+
"gap": "The LLM app's password-recovery flow lets an attacker authenticate as any user, including admin."
|
|
4878
|
+
},
|
|
4879
|
+
"NIST-800-53-AC-3": {
|
|
4880
|
+
"covered": true,
|
|
4881
|
+
"adequate": false,
|
|
4882
|
+
"gap": "An unverified reset endpoint grants control of any account."
|
|
4883
|
+
},
|
|
4884
|
+
"ALL-AI-PIPELINE-INTEGRITY": {
|
|
4885
|
+
"covered": false,
|
|
4886
|
+
"adequate": false,
|
|
4887
|
+
"gap": "No framework treats an LLM app platform's password-recovery flow as an authentication-integrity control whose failure yields full account takeover."
|
|
4888
|
+
}
|
|
4889
|
+
},
|
|
4890
|
+
"compliance_exposure_score": {
|
|
4891
|
+
"percent_audit_passing_orgs_still_exposed": 82,
|
|
4892
|
+
"basis": "LLM app platforms ship self-service password recovery; reset-token generation and verification are rarely audited, and weak PRNG / missing verification persist.",
|
|
4893
|
+
"theater_pattern": "ai_app_weak_password_recovery"
|
|
4894
|
+
},
|
|
4895
|
+
"ai_discovered_zeroday": false,
|
|
4896
|
+
"ai_discovery_source": "human_researcher",
|
|
4897
|
+
"ai_assist_factor": "none",
|
|
4898
|
+
"new_control_requirements": [
|
|
4899
|
+
{
|
|
4900
|
+
"id": "NEW-CTRL-108",
|
|
4901
|
+
"name": "AI-APP-PASSWORD-RECOVERY-INTEGRITY",
|
|
4902
|
+
"description": "An AI application's password-reset / account-recovery flow must (1) generate reset tokens with a cryptographically secure RNG (e.g. secrets / os.urandom - never random.randint or another predictable PRNG), making them long, single-use, and short-lived; and (2) verify the reset token server-side, bound to the requesting account, before accepting a new password - the reset endpoint must never perform a reset without a valid, matching, unexpired token. Rate-limit reset attempts. The distinguishing test: on a staging instance, request a reset and confirm the code is unpredictable across requests, and confirm POSTing to the reset endpoint with a wrong/absent code is rejected - an AI app whose recovery flow uses a weak PRNG or skips token verification permits takeover of any account, including administrators.",
|
|
4903
|
+
"evidence": "https://github.com/advisories/GHSA-g394-qpx6-x7rr",
|
|
4904
|
+
"gap_closes": [
|
|
4905
|
+
"NIST-800-53-IA-2",
|
|
4906
|
+
"NIST-800-53-AC-3",
|
|
4907
|
+
"ALL-AI-PIPELINE-INTEGRITY"
|
|
4908
|
+
]
|
|
4909
|
+
}
|
|
4910
|
+
],
|
|
4911
|
+
"_auto_imported": false,
|
|
4912
|
+
"_intake_method": "manual-verified-curation"
|
|
4913
|
+
},
|
|
4814
4914
|
"CVE-2025-56520": {
|
|
4815
4915
|
"name": "Dify Remote File Upload Server-Side Request Forgery",
|
|
4816
4916
|
"lesson_date": "2026-05-26",
|