<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-02T09:14:02.288733+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-77268</id>
    <title>CVE-2026-77268 — MCP Atlassian: Insecure File Permissions on OAuth Token Storage</title>
    <updated>2026-10-02T09:14:02.291740+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> sooperset mcp-atlassian</p>
<p>MCP Atlassian is a Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Prior to 0.22.0, the OAuth fallback token directory and JSON file are created without explicit owner-only modes. Local users or processes with access through the resulting group or world permission bits can read access and refresh tokens and reuse the associated Atlassian session. The advisory traces the vulnerable input and processing flow through ~/.mcp-atlassian, oauth-&lt;client_id&gt;.json, access_token, and refresh_token, which identify the affected entry points, controls, and code paths. This issue is fixed in version 0.22.0.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-77268"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-4596-2p6p-28cv</id>
    <title>GHSA-4596-2p6p-28cv — MCP Atlassian: Insecure File Permissions on OAuth Token Storage</title>
    <updated>2026-10-02T09:14:02.291837+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: mcp-atlassian</p>
<p>## Summary</p>
<p>The OAuth token fallback file storage in `OAuthConfig._save_tokens_to_file()` creates token files containing access tokens, refresh tokens, and cloud IDs with default filesystem permissions (typically `0644` on Linux, world-readable). Any local user on a shared system can read these files to obtain full Atlassian API credentials, enabling unauthorized access to the victim's Jira and Confluence data.</p>
<p>## Details</p>
<p>The vulnerability exists in `src/mcp_atlassian/utils/oauth.py` in the `_save_tokens_to_file` method.</p>
<p>**Step 1 -- Directory created without restrictive permissions:**</p>
<p>At line 402-403, the token directory is created with `mkdir(exist_ok=True)` which uses the default umask (typically creating directories with mode `0755`):</p>
<p>```python
# src/mcp_atlassian/utils/oauth.py:402-403
token_dir = Path.home() / ".mcp-atlassian"
token_dir.mkdir(exist_ok=True)
```</p>
<p>**Step 2 -- Token file written with default permissions:**</p>
<p>At line 417-418, the token file containing sensitive credentials is written using `open()` with no explicit mode, inheriting default umask permissions (typically `0644` on Linux):</p>
<p>```python
# src/mcp_atlassian/utils/oauth.py:406-418
token_path = token_dir / f"oauth-{self.client_id}.json"</p>
<p>if token_data is None:
    token_data = {
        "refresh_token": self.refresh_token,
        "access_token": self.access_token,
        "expires_at": self.expires_at,
        "cloud_id": self.cloud_id,
        "base_url": self.base_url,
    }</p>
<p>with open(token_p…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-4596-2p6p-28cv"/>
  </entry>
</feed>
