{"answers":{"affected":"It affects 1 product.","exploited":"There is no known exploitation of CVE-2026-28228 in the wild and no public exploit code.","fix":"No fix has been published for CVE-2026-28228 yet. Limit exposure of the affected software until one is available.","what":"CVE-2026-28228 is a high-severity code injection vulnerability in OpenOLAT, published on 30 Mar 2026. Any signed-in user can exploit it over the network, with no action from the victim."},"fix_prompt":"Check this codebase for CVE-2026-28228 and fix it if it is affected.\n\nWhat it is: CVE-2026-28228 is a high-severity code injection vulnerability in OpenOLAT, published on 30 Mar 2026. Any signed-in user can exploit it over the network, with no action from the victim.\nExploitation: There is no known exploitation of CVE-2026-28228 in the wild and no public exploit code.\n\nAffected product: OpenOLAT. No package-level version data is available, so check the vendor advisory linked from the reference page.\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-28228/ (Markdown: https://insights.sbomify.com/CVE-2026-28228/index.md)","id":"CVE-2026-28228","markdown":"https://insights.sbomify.com/CVE-2026-28228/index.md","name":"CVE-2026-28228","record":{"aliases":["GHSA-55qg-vvgj-ffh4"],"analysis":{"component_type":"web_application","fix_type":"patch","impacts":["code_execution"],"network_reachable":"yes","non_default_config":false,"product_category":"OpenOLAT e-learning platform","requires_auth":"low_privilege","summary":"Authenticated authors can inject Velocity directives into email templates to execute arbitrary OS commands via Java reflection, requiring immediate patching.","user_interaction":"not_required","vuln_class":"code_injection"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"GitHub_M","cpe":[{"product":"openolat","vendor":"frentix"}],"cvss":{"score":8.8,"severity":"high","source":"cna","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","version":"3.1"},"cwes":[{"id":"CWE-1336","name":"Improper Neutralization of Special Elements Used in a Template Engine"}],"description":"OpenOlat is an open source web-based e-learning platform for teaching, learning, assessment and communication. Prior to versions 19.1.31, 20.1.18, and 20.2.5, an authenticated user with the Author role can inject Velocity directives into a reminder email template. When the reminder is processed (either triggered manually or via the daily cron job), the injected directives are evaluated server-side. By chaining Velocity's #set directive with Java reflection, an attacker can instantiate arbitrary Java classes such as java.lang.ProcessBuilder and execute operating system commands with the privileges of the Tomcat process (typically root in containerized deployments). This issue has been patched in versions 19.1.31, 20.1.18, and 20.2.5.","ecosystems":[],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":false,"headline":"OpenOLAT: Server-Side Template Injection (SSTI) in Velocity templates allows Remote Code Execution","id":"CVE-2026-28228","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":null,"product":null,"products":[],"type":"code_injection","year":"2026"},"n_packages":0,"n_references":1,"next":{"headline":"Argo Workflows has unauthorized access to Argo Workflows Template","id":"CVE-2026-28229"},"packages":[],"prev":{"headline":"Discourse Vulnerable to Unauthorized Topic Creation in Staff-Only Categories via Topic Timer publish_to_category","id":"CVE-2026-28227"},"products":["OpenOLAT"],"published":"2026-03-30","related":[{"cvss_score":9.8,"headline":"OpenOLAT: Authentication bypass via forged JWT in OIDC implicit flow","id":"CVE-2026-31946","kev_date_added":null,"published":"2026-03-30"},{"cvss_score":8.8,"headline":"Unsafe Deserialization of User Data Using XStream","id":"CVE-2021-39181","kev_date_added":null,"published":"2021-09-01"},{"cvss_score":8.1,"headline":"Path Traversal in some REST methods leading to file upload to arbitrary places","id":"CVE-2021-41242","kev_date_added":null,"published":"2021-12-10"},{"cvss_score":8.1,"headline":"Path Traversal in Archive Handling Leading to Code Execution","id":"CVE-2021-39180","kev_date_added":null,"published":"2021-08-31"},{"cvss_score":7.7,"headline":"Path Traversal in Folder Component Leading to Local File Inclusion","id":"CVE-2021-41152","kev_date_added":null,"published":"2021-10-18"},{"cvss_score":5.4,"headline":"Multiple Stored Cross-Site Scripting Vulnerabilities","id":"CVE-2024-25973","kev_date_added":null,"published":"2024-02-20"}],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"US public information, NVD API terms","name":"NVD"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"no","exploitation":"none","technical_impact":"total"},"state":"PUBLISHED","updated":"2026-03-31","vendors":["OpenOLAT"]},"summary":"Authenticated authors can inject Velocity directives into email templates to execute arbitrary OS commands via Java reflection, requiring immediate patching.","url":"https://insights.sbomify.com/CVE-2026-28228/"}