<?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 10:40:30 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-330406</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-330406</link>
      <description>EUVD-2026-330406</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-330406</guid>
    </item>
    <item>
      <title>fkie_cve-2026-31978</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-31978</link>
      <description>&lt;p&gt;motionEye (mEye) is an online interface for motion software, which is a video surveillance program with motion detection. Versions prior to 0.44.0 are vulnerable to path traversal in the picture and movie API endpoints, suhc as /picture/{id}/preview/{filename}. Neither the API handlers, nor the mediafiles.py functions such as get_media_preview() check for .. sequences in the filename parameter, except for get_media_content(). This allows an authenticated user with normal (non-admin) privileges to read arbitrary files from the filesystem as the motionEye process user, such as:  /etc/passwd, /etc/shadow, motionEye config files containing password hashes and plaintext passwords, SSH keys, and other cameras&amp;#39; surveillance footage. This issue has been fixed in version 0.44.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;motionEye (mEye) is an online interface for motion software, which is a video surveillance program with motion detection. Versions prior to 0.44.0 are vulnerable to path traversal in the picture and movie API endpoints, suhc as /picture/{id}/preview/{filename}. Neither the API handlers, nor the mediafiles.py functions such as get_media_preview() check for .. sequences in the filename parameter, except for get_media_content(). This allows an authenticated user with normal (non-admin) privileges to read arbitrary files from the filesystem as the motionEye process user, such as:  /etc/passwd, /etc/shadow, motionEye config files containing password hashes and plaintext passwords, SSH keys, and other cameras&amp;#39; surveillance footage. This issue has been fixed in version 0.44.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-31978</guid>
    </item>
    <item>
      <title>GHSA-g9fx-5r4h-pcw3 — motionEye has an Arbitrary File Read via Path Traversal in Picture/Movie Preview Endpoint</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-g9fx-5r4h-pcw3</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: motioneye&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;motionEye v0.43.1 (latest stable) is vulnerable to path traversal in the picture and movie API endpoints, like `/picture/{id}/preview/{filename}`. Neither the API handlers, nor the `mediafiles.py` functions like `get_media_preview()` check for `..` sequences in the filename parameter, except `get_media_content()` which does. This allows an authenticated user with normal (non-admin) privileges to read arbitrary files from the filesystem as the motionEye process user.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The `get_media_content()` function properly validates the path:&lt;/p&gt;
&lt;p&gt;```python
# mediafiles.py ~line 506 — SAFE
def get_media_content(camera_config, path, media_type):
    target_dir = camera_config[&amp;#39;target_dir&amp;#39;]
    full_path = os.path.join(target_dir, path)&lt;/p&gt;
&lt;p&gt;if &amp;#39;..&amp;#39; in path:        # &amp;lt;-- PATH TRAVERSAL CHECK PRESENT
        return None
    ...
```&lt;/p&gt;
&lt;p&gt;But `get_media_preview()` does NOT:&lt;/p&gt;
&lt;p&gt;```python
# mediafiles.py ~line 910 — VULNERABLE
def get_media_preview(camera_config, path, media_type, ...):
    target_dir = camera_config[&amp;#39;target_dir&amp;#39;]
    full_path = os.path.join(target_dir, path)
    # &amp;lt;-- NO &amp;#39;..&amp;#39; CHECK
    ...
```&lt;/p&gt;
&lt;p&gt;Similarly, `del_media_content()` at line ~865 is also missing the check. This is a classic inconsistent fix pattern.&lt;/p&gt;
&lt;p&gt;The exploit requires `%2F`-encoded slashes (`..%2F..%2F`) which Tornado&amp;#39;s URL router does NOT normalize — it passes the raw `../` through to `os.path.join()`.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;**Step 1:** Authenticate as any user (normal or admin).&lt;/p&gt;
&lt;p&gt;**Step 2:** Compute the requ…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: motioneye&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;motionEye v0.43.1 (latest stable) is vulnerable to path traversal in the picture and movie API endpoints, like `/picture/{id}/preview/{filename}`. Neither the API handlers, nor the `mediafiles.py` functions like `get_media_preview()` check for `..` sequences in the filename parameter, except `get_media_content()` which does. This allows an authenticated user with normal (non-admin) privileges to read arbitrary files from the filesystem as the motionEye process user.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The `get_media_content()` function properly validates the path:&lt;/p&gt;
&lt;p&gt;```python
# mediafiles.py ~line 506 — SAFE
def get_media_content(camera_config, path, media_type):
    target_dir = camera_config[&amp;#39;target_dir&amp;#39;]
    full_path = os.path.join(target_dir, path)&lt;/p&gt;
&lt;p&gt;if &amp;#39;..&amp;#39; in path:        # &amp;lt;-- PATH TRAVERSAL CHECK PRESENT
        return None
    ...
```&lt;/p&gt;
&lt;p&gt;But `get_media_preview()` does NOT:&lt;/p&gt;
&lt;p&gt;```python
# mediafiles.py ~line 910 — VULNERABLE
def get_media_preview(camera_config, path, media_type, ...):
    target_dir = camera_config[&amp;#39;target_dir&amp;#39;]
    full_path = os.path.join(target_dir, path)
    # &amp;lt;-- NO &amp;#39;..&amp;#39; CHECK
    ...
```&lt;/p&gt;
&lt;p&gt;Similarly, `del_media_content()` at line ~865 is also missing the check. This is a classic inconsistent fix pattern.&lt;/p&gt;
&lt;p&gt;The exploit requires `%2F`-encoded slashes (`..%2F..%2F`) which Tornado&amp;#39;s URL router does NOT normalize — it passes the raw `../` through to `os.path.join()`.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;**Step 1:** Authenticate as any user (normal or admin).&lt;/p&gt;
&lt;p&gt;**Step 2:** Compute the requ…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-g9fx-5r4h-pcw3</guid>
    </item>
    <item>
      <title>PYSEC-2026-2664 — motionEye has an Arbitrary File Read via Path Traversal in Picture/Movie Preview Endpoint</title>
      <link>https://cve.radiocsirt.org/vuln/pysec-2026-2664</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: motioneye&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;motionEye v0.43.1 (latest stable) is vulnerable to path traversal in the picture and movie API endpoints, like `/picture/{id}/preview/{filename}`. Neither the API handlers, nor the `mediafiles.py` functions like `get_media_preview()` check for `..` sequences in the filename parameter, except `get_media_content()` which does. This allows an authenticated user with normal (non-admin) privileges to read arbitrary files from the filesystem as the motionEye process user.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The `get_media_content()` function properly validates the path:&lt;/p&gt;
&lt;p&gt;```python
# mediafiles.py ~line 506 — SAFE
def get_media_content(camera_config, path, media_type):
    target_dir = camera_config[&amp;#39;target_dir&amp;#39;]
    full_path = os.path.join(target_dir, path)&lt;/p&gt;
&lt;p&gt;if &amp;#39;..&amp;#39; in path:        # &amp;lt;-- PATH TRAVERSAL CHECK PRESENT
        return None
    ...
```&lt;/p&gt;
&lt;p&gt;But `get_media_preview()` does NOT:&lt;/p&gt;
&lt;p&gt;```python
# mediafiles.py ~line 910 — VULNERABLE
def get_media_preview(camera_config, path, media_type, ...):
    target_dir = camera_config[&amp;#39;target_dir&amp;#39;]
    full_path = os.path.join(target_dir, path)
    # &amp;lt;-- NO &amp;#39;..&amp;#39; CHECK
    ...
```&lt;/p&gt;
&lt;p&gt;Similarly, `del_media_content()` at line ~865 is also missing the check. This is a classic inconsistent fix pattern.&lt;/p&gt;
&lt;p&gt;The exploit requires `%2F`-encoded slashes (`..%2F..%2F`) which Tornado&amp;#39;s URL router does NOT normalize — it passes the raw `../` through to `os.path.join()`.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;**Step 1:** Authenticate as any user (normal or admin).&lt;/p&gt;
&lt;p&gt;**Step 2:** Compute the requ…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: motioneye&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;motionEye v0.43.1 (latest stable) is vulnerable to path traversal in the picture and movie API endpoints, like `/picture/{id}/preview/{filename}`. Neither the API handlers, nor the `mediafiles.py` functions like `get_media_preview()` check for `..` sequences in the filename parameter, except `get_media_content()` which does. This allows an authenticated user with normal (non-admin) privileges to read arbitrary files from the filesystem as the motionEye process user.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The `get_media_content()` function properly validates the path:&lt;/p&gt;
&lt;p&gt;```python
# mediafiles.py ~line 506 — SAFE
def get_media_content(camera_config, path, media_type):
    target_dir = camera_config[&amp;#39;target_dir&amp;#39;]
    full_path = os.path.join(target_dir, path)&lt;/p&gt;
&lt;p&gt;if &amp;#39;..&amp;#39; in path:        # &amp;lt;-- PATH TRAVERSAL CHECK PRESENT
        return None
    ...
```&lt;/p&gt;
&lt;p&gt;But `get_media_preview()` does NOT:&lt;/p&gt;
&lt;p&gt;```python
# mediafiles.py ~line 910 — VULNERABLE
def get_media_preview(camera_config, path, media_type, ...):
    target_dir = camera_config[&amp;#39;target_dir&amp;#39;]
    full_path = os.path.join(target_dir, path)
    # &amp;lt;-- NO &amp;#39;..&amp;#39; CHECK
    ...
```&lt;/p&gt;
&lt;p&gt;Similarly, `del_media_content()` at line ~865 is also missing the check. This is a classic inconsistent fix pattern.&lt;/p&gt;
&lt;p&gt;The exploit requires `%2F`-encoded slashes (`..%2F..%2F`) which Tornado&amp;#39;s URL router does NOT normalize — it passes the raw `../` through to `os.path.join()`.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;**Step 1:** Authenticate as any user (normal or admin).&lt;/p&gt;
&lt;p&gt;**Step 2:** Compute the requ…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/pysec-2026-2664</guid>
    </item>
  </channel>
</rss>
