CARVIEW |
Select Language
HTTP/2 200
date: Wed, 23 Jul 2025 20:04:40 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"7ee4bf341bc044cea9a1db8825015e68"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=%2F1IbKca0rrUf9ox5ydEC8NchaqQAmUe4s3B3HUPB0VD9RzWdxpRvNYqfkOzmJLZ3Jc3T0bKLJY%2F9QwojpzI9aqg9ZuPiR2VF4Frxu1fyXEZ2tHlwGV3GwnAH1uvMADsRwe0KTSiDjoKmzrzW6CDEYlk9lQR0vKO5xZR5RAjv3bfxZxcG6bvKaritkWE7Vd8%2FVTkt9SGbUd3yT0WsGhAXwMZ5vepaAViATGG4BTvlusldbNtHXR6NAVr0ArWmvJtjfyZilc8Dm%2B3qmlUnx0W7Gg%3D%3D--1bZw25zumB87ithf--JY1Ule8TpeBI%2BdkSo2%2F8rA%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.690598717.1753301080; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 20:04:40 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 20:04:40 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: A21C:12F48D:10931C0:13A8CA3:68814058
XSS by <iframe>'ing a vulnerable same-origin page in a feed entry · Advisory · FreshRSS/FreshRSS · GitHub
Skip to content
Navigation Menu
{{ message }}
-
-
Notifications
You must be signed in to change notification settings - Fork 977
XSS by <iframe>'ing a vulnerable same-origin page in a feed entry
Moderate
Package
No package listed
Affected versions
<=1.26.1
Patched versions
1.26.2
Description
Severity
Moderate
/ 10
CVSS v3 base metrics
Attack vector
Network
Attack complexity
High
Privileges required
Low
User interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
Low
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:L
CVE ID
CVE-2025-31136
Weaknesses
Weakness CWE-79
Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users. Learn more on MITRE.Credits
-
Inverle Reporter
You can’t perform that action at this time.
Summary
By combining an XSS occurring in
f.php
when SVG favicons are downloaded from an attacker-controlled feed containing<script>
tags inside of them that aren't sanitized, and the lack of CSP inf.php
by embedding the malicious favicon in an iframe (that hassandbox="allow-scripts allow-same-origin"
set as its attribute) it's possible to run arbitrary JS code on the main page.Details
An attacker needs to control one of the feeds that the victim is subscribed to, and also must have an account on the FreshRSS instance.
Other than that, the iframe payload can be embedded either as
<iframe src="https://attacker.com/redir.php"></iframe>
or<iframe srcdoc="<meta http-equiv='Refresh' content='0;url=https://attacker.com/redir.php'>"></iframe>
The first payload requires user interaction (the user clicking on the malicious feed entry) with default user configuration, and the second payload fires instantly right after the user adds the feed or logs into the account while the feed entry is still visible.
This is because of lazy image loading functionality, which the second payload bypasses.
PoC
Detailed steps are shown in the video, the malicious feed and favicon, as well as the other files are in the zip with a README.txt
poc_frss.zip
poc.mp4
Impact
An attacker can gain access to the victim's account by exploiting this vulnerability. If the victim is an admin it would be possible to delete all users (cause damage) or execute arbitrary code on the server by modifying the update URL using fetch() via the XSS.