<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Sat, 03 Oct 2026 19:40:15 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-68927 — MobSF: SSRF port restriction bypass in assetlinks_check</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2026-68927</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; MobSF Mobile-Security-Framework-MobSF&lt;/p&gt;
&lt;p&gt;MobSF is a mobile application security testing tool used. Prior to 4.5.1, get_browsable_activities in mobsf/StaticAnalyzer/views/android/manifest_analysis.py validates only an Android manifest android:host value with valid_host before appending a separately supplied android:port to the URL fetched by _check_url, allowing an authenticated user to upload a crafted APK that makes requests to an attacker-selected nonstandard port at /.well-known/assetlinks.json. With an attacker-controlled hostname and DNS rebinding between validation and the requests.get connection, the request can reach an internal service, although redirects remain disabled and the path is fixed. This issue is fixed in version 4.5.1.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; MobSF Mobile-Security-Framework-MobSF&lt;/p&gt;
&lt;p&gt;MobSF is a mobile application security testing tool used. Prior to 4.5.1, get_browsable_activities in mobsf/StaticAnalyzer/views/android/manifest_analysis.py validates only an Android manifest android:host value with valid_host before appending a separately supplied android:port to the URL fetched by _check_url, allowing an authenticated user to upload a crafted APK that makes requests to an attacker-selected nonstandard port at /.well-known/assetlinks.json. With an attacker-controlled hostname and DNS rebinding between validation and the requests.get connection, the request can reach an internal service, although redirects remain disabled and the path is fixed. This issue is fixed in version 4.5.1.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2026-68927</guid>
    </item>
    <item>
      <title>GHSA-95px-34x5-p37h — MobSF has SSRF port restriction bypass in assetlinks_check</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-95px-34x5-p37h</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: mobsf&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;MobSF&amp;#39;s Android App Link assetlinks checker validates only the manifest `android:host` value with `valid_host()`, but then appends the separate `android:port` value into the URL used for the server-side request. This bypasses the current port restriction in `valid_host()` and lets a crafted APK cause MobSF to fetch `http://host:&amp;lt;attacker-port&amp;gt;/.well-known/assetlinks.json` or `https://host:&amp;lt;attacker-port&amp;gt;/.well-known/assetlinks.json`.&lt;/p&gt;
&lt;p&gt;## Impact&lt;/p&gt;
&lt;p&gt;An authenticated user who can upload or trigger analysis of a crafted APK can cause the MobSF server to make an outbound request to an attacker-selected port during Android manifest analysis. When the host is controlled by the attacker and uses DNS rebinding, the validation lookup can resolve to a public IP while the later HTTP client lookup resolves to an internal address, allowing SSRF to internal services on non-80/443 ports.&lt;/p&gt;
&lt;p&gt;This is not arbitrary URL SSRF. The path remains fixed to `/.well-known/assetlinks.json`, and redirects are disabled. The bypass is that the final fetched URL is assembled after the host-only validation, so the current port guard is not applied to the actual URL.&lt;/p&gt;
&lt;p&gt;## Root cause&lt;/p&gt;
&lt;p&gt;`valid_host()` rejects ports other than 80 and 443 when a port is included in the string being validated:&lt;/p&gt;
&lt;p&gt;```python
port = parsed.port
...
if port and port not in (80, 443):
    return False
```&lt;/p&gt;
&lt;p&gt;In `get_browsable_activities()`, only the host attribute is passed to `valid_host()`:&lt;/p&gt;
&lt;p&gt;```python
host = data.getAttribute(f&amp;#39;{n…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: mobsf&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;MobSF&amp;#39;s Android App Link assetlinks checker validates only the manifest `android:host` value with `valid_host()`, but then appends the separate `android:port` value into the URL used for the server-side request. This bypasses the current port restriction in `valid_host()` and lets a crafted APK cause MobSF to fetch `http://host:&amp;lt;attacker-port&amp;gt;/.well-known/assetlinks.json` or `https://host:&amp;lt;attacker-port&amp;gt;/.well-known/assetlinks.json`.&lt;/p&gt;
&lt;p&gt;## Impact&lt;/p&gt;
&lt;p&gt;An authenticated user who can upload or trigger analysis of a crafted APK can cause the MobSF server to make an outbound request to an attacker-selected port during Android manifest analysis. When the host is controlled by the attacker and uses DNS rebinding, the validation lookup can resolve to a public IP while the later HTTP client lookup resolves to an internal address, allowing SSRF to internal services on non-80/443 ports.&lt;/p&gt;
&lt;p&gt;This is not arbitrary URL SSRF. The path remains fixed to `/.well-known/assetlinks.json`, and redirects are disabled. The bypass is that the final fetched URL is assembled after the host-only validation, so the current port guard is not applied to the actual URL.&lt;/p&gt;
&lt;p&gt;## Root cause&lt;/p&gt;
&lt;p&gt;`valid_host()` rejects ports other than 80 and 443 when a port is included in the string being validated:&lt;/p&gt;
&lt;p&gt;```python
port = parsed.port
...
if port and port not in (80, 443):
    return False
```&lt;/p&gt;
&lt;p&gt;In `get_browsable_activities()`, only the host attribute is passed to `valid_host()`:&lt;/p&gt;
&lt;p&gt;```python
host = data.getAttribute(f&amp;#39;{n…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-95px-34x5-p37h</guid>
    </item>
  </channel>
</rss>
