CVE-2026-54049

Source
https://cve.org/CVERecord?id=CVE-2026-54049
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-54049.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-54049
Aliases
Published
2026-10-01T19:42:50Z
Modified
2026-10-28T11:16:42Z
Severity
  • 8.7 (High) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N CVSS Calculator
Summary
Sakai Conversations has a Stored XSS Issue
Details

Sakai is a Collaboration and Learning Environment (CLE). From versions 23.0 to before 23.5, and versions 25.0 to before 25.3, the Sakai Conversations tool stores topic and post messages without HTML sanitization, and the frontend renders them using LitElement's unsafeHTML() directive, resulting in stored cross-site scripting (XSS). Any authenticated user with access to a site that has the Conversations tool enabled can inject arbitrary HTML and JavaScript that executes in the browsers of all other users who view that topic or post. This issue has been patched in versions 23.5, 25.3, and 26.0.

Database specific
{
    "cna_assigner":  "GitHub_M",
    "cwe_ids":  [
        "CWE-79"
    ],
    "osv_generated_from":  "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54049.json",
    "unresolved_ranges":  [
        {
            "extracted_events":  [
                {
                    "range":  [
                        {
                            "introduced":  "25.0"
                        },
                        {
                            "fixed":  "25.3"
                        }
                    ],
                    "source":  "AFFECTED_FIELD",
                    "strategy":  "StringRangeExpression"
                }
            ]
        }
    ]
}
References

Affected packages

Git / github.com/sakaiproject/sakai

Affected ranges

Type
GIT
Repo
https://github.com/sakaiproject/sakai
Events
Database specific
Show details
{
    "extracted_events":  [
        {
            "range":  [
                {
                    "introduced":  "23.0"
                },
                {
                    "fixed":  "23.5"
                }
            ],
            "source":  "AFFECTED_FIELD",
            "strategy":  "StringRangeExpression"
        },
        {
            "range":  [
                {
                    "fixed":  "2696b4b48cbef2e81512f52f84f7477adff78b27"
                }
            ],
            "source":  "REFERENCES_COMMIT"
        }
    ]
}

Affected versions

23.*
23.0
23.1
23.2
23.3
23.4

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-54049.json"
vanir_signatures
[
    {
        "deprecated":  false,
        "digest":  {
            "line_hashes":  [
                "101259056187312825788930762830607571516",
                "312368484106069428452823664203788928676",
                "227703463880820058109252092666362476707",
                "44137127768289319324801642760346338342",
                "258136003190864844942553089244886680918",
                "193985773515104549295006801786572327611",
                "124477827776904710718225925688241669488",
                "131581889231249819159237365881736936757",
                "77356783349616852266154485344110275248",
                "93765412025096693870713615080552179292",
                "264774187605726708795580238210868338218",
                "85015236890949443939806857122766294858",
                "315792925117112877270609573227326846655"
            ],
            "threshold":  0.9
        },
        "id":  "CVE-2026-54049-0c8ca354",
        "signature_type":  "Line",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "kernel/kernel-impl/src/test/java/org/sakaiproject/tasks/impl/test/TaskServiceTest.java"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "line_hashes":  [
                "98726854308763418630577469661636414697",
                "169554898811659638847636701896321486883",
                "309069441175786486887713985893380713765",
                "297619646947852691958942899494533394900",
                "40837522323103095770312061761132546745",
                "176967658666418875571787777987295225254",
                "206455884238431058635428470439556313532",
                "20115785199258691232419693922761576191",
                "237789928573935065040883902455052950449",
                "323793426126965860845848176880459551171",
                "250490083320921525201825475456670503252",
                "154490217061670764553876652524727994387",
                "79071899960034696492821085167661027516",
                "86189230826496955387360965516656457905",
                "321961027821634345703718748370209883387",
                "258506538441575998882149953813772487501",
                "123348780559105828493116647244697199296",
                "150728726572306565486076894310954212481",
                "32985874924837116326221007768721469165",
                "31865048976515313288008763292706370472",
                "70554024175548302196460215431316612389",
                "339296925423463956224353994666528252426",
                "40352823512531482365271593936240099646",
                "326826914917288694782639411632978059262",
                "92509037305901984117483299176334881686",
                "119959263889146693397032239881520917296",
                "18951152010270615913044996991923072407",
                "333867649627700950198136910108896976054",
                "274442473316191531998811068752877929844",
                "181363797643943171473091591965365526235",
                "123516966206738424248676096146458050229",
                "6028176505988833280801224164669777350",
                "34662481257338095573109630527931469264",
                "100536719221604835794885563027904343816",
                "293416464388775085696008541353300688604",
                "95119790538805474431464757199742544282",
                "130547097478982795100120918596206317228",
                "1968878801249601002097357580648823585",
                "333477919636317386096029752764210366490"
            ],
            "threshold":  0.9
        },
        "id":  "CVE-2026-54049-2839cd06",
        "signature_type":  "Line",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "rubrics/impl/src/main/java/org/sakaiproject/rubrics/impl/RubricsServiceImpl.java"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "line_hashes":  [
                "42269327430353571699259782643742026085",
                "58806374019343200545027293493188118251",
                "320481536160531867436966870907406991481",
                "33252768569683357988049642737319210901",
                "317664103131851655029809142409910517658",
                "297803319396230689002513049416095208519",
                "299433147722133973843180726897059966328",
                "134652164056892219028457169188250458651",
                "151499422381605415311010545170884821714",
                "40485186227412864021379083810896485312",
                "138962775981371067785099515794211377727",
                "62516993527163356622320633542324540278",
                "291628340066844536387540914983130256313",
                "100831160986755802957821670096562076593",
                "157038165476240359170313826968977814075",
                "43192328699838248752679766285492376421",
                "71591892727452595682460447719239779461",
                "197497106372775514400759775112187327344",
                "206523005391814610136235113534340456491",
                "121573201235764390761176100815000156605",
                "270040548272645211623825117410275347765",
                "52520754943936789596584185627342916135",
                "233559105233822778596662001854473351595",
                "260807130862070243139942242966766986293",
                "35117131641499055386598708916663221629",
                "201367142726014109274327700588258487291",
                "96458215341707003021255325993122652505"
            ],
            "threshold":  0.9
        },
        "id":  "CVE-2026-54049-2c930a91",
        "signature_type":  "Line",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "webapi/src/test/java/org/sakaiproject/webapi/test/DashboardControllerTests.java"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "253422615702256252988751400284305729625",
            "length":  5200
        },
        "id":  "CVE-2026-54049-38277f14",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "conversations/impl/src/main/java/org/sakaiproject/conversations/impl/ConversationsServiceImpl.java",
            "function":  "savePost"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "line_hashes":  [
                "57174204851312681828320663892227984712",
                "173022112264940306019472330366783842333",
                "188358197031738594479270223581063150879",
                "220120872688492498441084091820061930694",
                "331878193258014369540276822562275536217",
                "10908732848357376299656062427574371896",
                "34212111023423527847975508706217474922",
                "232042041258754288841883390638907986153",
                "223392191374298597689543270558465137393",
                "172627429771976516099713915732599774097",
                "165989749771137523333923986411707668472",
                "308729634631895681278806842193115608848",
                "276351191991650056810522721408098446871",
                "258431336393446628147414877773938376102",
                "234064085944386061420017129380307499694",
                "153991718714466190221377393843571095865",
                "258199923684413984525902978848645664803",
                "263908687840635179777451836293617485131",
                "36479569261781063067530268380583280347"
            ],
            "threshold":  0.9
        },
        "id":  "CVE-2026-54049-3dbf0ff5",
        "signature_type":  "Line",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "conversations/impl/src/test/org/sakaiproject/conversations/impl/ConversationsServiceTests.java"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "line_hashes":  [
                "276030088760861563912787394889172520063",
                "124082149222000928383245850025732402588",
                "60020589417256556557931627928819790752",
                "217862495586264615579583588836222420026",
                "210592911261615590881492545885850558829",
                "272736493938218487302102779012716381180",
                "184647436682305303278431092017419361597",
                "162747032173592825673139614764495809306",
                "72398711414967459005386012671309017580",
                "22358050180359012957571885357281759989",
                "26391731896583522615561377035729516022",
                "139914962825341528194484454210046329983",
                "196679228475588366847209612422240736600",
                "46874971710025562963623629128852061896",
                "314775368555023877572291977561739797569",
                "222097503932537610935220863442917001462",
                "35018952535250493961483678232530281353",
                "335841537866599333243263334848139871065",
                "82865822498976609244169318366058141306",
                "29929812531475913559069740445494434417",
                "72375422241271516876858549790801090646",
                "230328774545763989743085980797804284022",
                "50827921740836687375656708859882172780",
                "204065206499753216912165989071926925146"
            ],
            "threshold":  0.9
        },
        "id":  "CVE-2026-54049-50d5dfbe",
        "signature_type":  "Line",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "conversations/impl/src/main/java/org/sakaiproject/conversations/impl/ConversationsServiceImpl.java"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "299295849024641951507492173306806054872",
            "length":  3003
        },
        "id":  "CVE-2026-54049-5338387b",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "conversations/impl/src/test/org/sakaiproject/conversations/impl/ConversationsServiceTests.java",
            "function":  "setup"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "314515746816952646805458706879712379914",
            "length":  1152
        },
        "id":  "CVE-2026-54049-56a596b5",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "webapi/src/test/java/org/sakaiproject/webapi/test/DashboardControllerTests.java",
            "function":  "setup"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "126404898242078542557085990144469658099",
            "length":  984
        },
        "id":  "CVE-2026-54049-6074ce0c",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "rubrics/impl/src/main/java/org/sakaiproject/rubrics/impl/RubricsServiceImpl.java",
            "function":  "copyCriterion"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "340137924975331204494440707144324828342",
            "length":  189
        },
        "id":  "CVE-2026-54049-65b08b72",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "kernel/kernel-impl/src/main/java/org/sakaiproject/tasks/impl/TaskServiceImpl.java",
            "function":  "createUserTask"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "line_hashes":  [
                "192038758999382479683096511284373050518",
                "31035787963176639485368005022269188102",
                "64641852209665623961182992369880064022",
                "48410278460983747571449659914805420691",
                "245239628295357859905557472342882931508",
                "265861613025475933740944374564915278670",
                "35601640639757344667777668236462045591",
                "210360509078278852567658511663627448321",
                "132038570438994688111415812491387622740",
                "27986630156917146206047856313966950189",
                "175035828099478815335539210429951071546"
            ],
            "threshold":  0.9
        },
        "id":  "CVE-2026-54049-6d13f66f",
        "signature_type":  "Line",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "conversations/impl/src/test/org/sakaiproject/conversations/impl/ConversationsTestConfiguration.java"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "34094926990897859545891339542060261765",
            "length":  3423
        },
        "id":  "CVE-2026-54049-7eb316b2",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "rubrics/impl/src/main/java/org/sakaiproject/rubrics/impl/RubricsServiceImpl.java",
            "function":  "saveRubric"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "223061653160289471670772854300456158799",
            "length":  643
        },
        "id":  "CVE-2026-54049-921e9edc",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "rubrics/impl/src/main/java/org/sakaiproject/rubrics/impl/RubricsServiceImpl.java",
            "function":  "updateRating"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "232100080220634063114102903236040365030",
            "length":  867
        },
        "id":  "CVE-2026-54049-92dc0e8f",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "rubrics/impl/src/main/java/org/sakaiproject/rubrics/impl/RubricsServiceImpl.java",
            "function":  "updateCriterion"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "131860650633696026365336664206044601805",
            "length":  1892
        },
        "id":  "CVE-2026-54049-947b4b18",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "webapi/src/main/java/org/sakaiproject/webapi/controllers/DashboardController.java",
            "function":  "transferCopyEntities"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "35204070931485242023838804033491603095",
            "length":  537
        },
        "id":  "CVE-2026-54049-9a911d1b",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "webapi/src/main/java/org/sakaiproject/webapi/controllers/DashboardController.java",
            "function":  "saveSiteDashboard"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "14680799113760078778155787912885789143",
            "length":  497
        },
        "id":  "CVE-2026-54049-aa01ccbb",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "kernel/kernel-impl/src/main/java/org/sakaiproject/tasks/impl/TaskServiceImpl.java",
            "function":  "saveUserTask"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "line_hashes":  [
                "41330151464742486195116261747488504078",
                "290171035039065759880881273173788454554",
                "45440430880121034743691154232596710513",
                "146653212194456442576742703465435152889",
                "170240097461795588606371076050171304252",
                "251890866519270218403387025900775068632",
                "62086573551907622245730023010372997697",
                "269139889943705379659685060172159816923",
                "126761449907709455579845201339272206421",
                "289966177636799445987997835856900280091",
                "10083540623630342158153603581884814313",
                "333996861745408591758259494401426198050",
                "307232625543102055096986866736975702680",
                "148887629655706963034259269355260309455",
                "324052358840105393127731529058941095077",
                "87199299589155063049062535922528997776",
                "314112830337459132933635788935270970497",
                "48250922832226494019716993049248061531"
            ],
            "threshold":  0.9
        },
        "id":  "CVE-2026-54049-b0bfa691",
        "signature_type":  "Line",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "webapi/src/main/java/org/sakaiproject/webapi/controllers/DashboardController.java"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "172837345964312057297173734910432590348",
            "length":  1060
        },
        "id":  "CVE-2026-54049-b529cb7c",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "conversations/impl/src/main/java/org/sakaiproject/conversations/impl/ConversationsServiceImpl.java",
            "function":  "saveSettings"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "211348157050294503363598700219215646476",
            "length":  3905
        },
        "id":  "CVE-2026-54049-bdb17ff0",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "conversations/impl/src/main/java/org/sakaiproject/conversations/impl/ConversationsServiceImpl.java",
            "function":  "saveTopic"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "231509456685028467331662595163871225690",
            "length":  658
        },
        "id":  "CVE-2026-54049-be345a6f",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "rubrics/impl/src/main/java/org/sakaiproject/rubrics/impl/RubricsServiceImpl.java",
            "function":  "copyRubricToSite"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "line_hashes":  [
                "14170777716476869175060826560727276516",
                "31939923106181116096209718623153255546",
                "74597053056520487733241252786375757877",
                "298770762217400132442861069345797671014",
                "325838866137577881155597889702289541355",
                "308707200162359456120911471014811606957",
                "148384126608666169778596249751611003125",
                "295565954737883063548716212527177228972",
                "7261471844471225272359317690847246975",
                "162043209960749867069531309174467390302",
                "308643022489926012542140345195694778386",
                "50503004659720889446411500038458254052",
                "170276281637883811526191399709904711212",
                "204775897761959650807860189310809412930",
                "122545575482018886818518231303771843126",
                "298135996008430901713455433859990751998",
                "52685257665308783689503439565277961345",
                "111036632640859752480356762733417737034",
                "32142713483224050413193886078308385695",
                "101420477797799355657793073719625128271",
                "190319380215657511091102519448865572169",
                "132038874542173402548016576637883087623",
                "334751774382302790535812577362538417152"
            ],
            "threshold":  0.9
        },
        "id":  "CVE-2026-54049-c076e3a2",
        "signature_type":  "Line",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "kernel/kernel-impl/src/main/java/org/sakaiproject/tasks/impl/TaskServiceImpl.java"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "24836746959876342924989752877145906366",
            "length":  458
        },
        "id":  "CVE-2026-54049-c82d08e4",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "kernel/kernel-impl/src/main/java/org/sakaiproject/tasks/impl/TaskServiceImpl.java",
            "function":  "createSingleUserTask"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "89564381450309189818597452783309956461",
            "length":  4298
        },
        "id":  "CVE-2026-54049-cc1dbbd3",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "rubrics/impl/src/main/java/org/sakaiproject/rubrics/impl/RubricsServiceImpl.java",
            "function":  "saveEvaluation"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "line_hashes":  [
                "40527574393500028884985726252622259957",
                "268037586866550746550129516182622532707",
                "101800184447092988390464799259812743339",
                "79847073616135794757846611955841743054",
                "139694060984875599170865098332452493125",
                "318566959661620249183479358787706376731",
                "128592407165353798313421136158207101037",
                "180622471556867091466938177810635660317",
                "42929587614791108775010842225384683580"
            ],
            "threshold":  0.9
        },
        "id":  "CVE-2026-54049-d1f3f4fa",
        "signature_type":  "Line",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "kernel/kernel-impl/src/test/java/org/sakaiproject/tasks/impl/test/TaskServiceTestConfiguration.java"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "line_hashes":  [
                "226239650397828568005375498741015575640",
                "294810434605454054459608764204094757637",
                "151842226220820982059236448162483549286",
                "106911520410552058543064978764918826412",
                "78441388875938066059777978367732389402",
                "296169105989013119784099003561517398264",
                "78001004234466074035923671009143773990",
                "101245505637520363085127392258407089164"
            ],
            "threshold":  0.9
        },
        "id":  "CVE-2026-54049-f0d68986",
        "signature_type":  "Line",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "rubrics/impl/src/test/org/sakaiproject/rubrics/impl/test/RubricsTestConfiguration.java"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "217738185724973713004344849816066647247",
            "length":  2154
        },
        "id":  "CVE-2026-54049-f0e45884",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "rubrics/impl/src/main/java/org/sakaiproject/rubrics/impl/RubricsServiceImpl.java",
            "function":  "merge"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "line_hashes":  [
                "301061411071208110310997100268446788023",
                "166483209206733557418003135824554392836",
                "245138858600804510163753336324850737823",
                "54685801954503434945855827179426434827",
                "331878193258014369540276822562275536217",
                "10908732848357376299656062427574371896",
                "34212111023423527847975508706217474922",
                "232042041258754288841883390638907986153",
                "243803597486620339048756356477819735570",
                "317654905587880700418808650107626483894",
                "260173870350361764579737501527201610206",
                "186212670579244841187493641573534983572",
                "15114131248594703595382893243979375557",
                "193021147990627760912706970441554924965",
                "45172861294284238157395885080130589227"
            ],
            "threshold":  0.9
        },
        "id":  "CVE-2026-54049-f13ff9e9",
        "signature_type":  "Line",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "rubrics/impl/src/test/org/sakaiproject/rubrics/impl/test/RubricsServiceTests.java"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "19885972610754462883919626071763302295",
            "length":  714
        },
        "id":  "CVE-2026-54049-f33fb638",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "rubrics/impl/src/main/java/org/sakaiproject/rubrics/impl/RubricsServiceImpl.java",
            "function":  "transferCopyEntities"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "304715811924033923681748365663777420167",
            "length":  1777
        },
        "id":  "CVE-2026-54049-f90f7835",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "conversations/impl/src/main/java/org/sakaiproject/conversations/impl/ConversationsServiceImpl.java",
            "function":  "saveComment"
        }
    },
    {
        "deprecated":  false,
        "digest":  {
            "function_hash":  "187649466723709916098385217887523158148",
            "length":  1069
        },
        "id":  "CVE-2026-54049-ff66d4cf",
        "signature_type":  "Function",
        "signature_version":  "v1",
        "source":  "https://github.com/sakaiproject/sakai/commit/2696b4b48cbef2e81512f52f84f7477adff78b27",
        "target":  {
            "file":  "rubrics/impl/src/main/java/org/sakaiproject/rubrics/impl/RubricsServiceImpl.java",
            "function":  "cancelDraftEvaluation"
        }
    }
]
vanir_signatures_modified
"2026-10-28T11:16:42Z"