ZenHub for GitHub Enterprise

ID: ieaikbgidbgbjmcbpoopkghkominpgam

Could be malicious

Supported Languages

🇺🇸English

Extension Info & Metadata

Status
Removed
Version
3.5.4
Size
2.75 MB
Rating
4.4/5
Reviews
13
Users
10,000
Type
Extension
Updated
Dec 9, 2023
Category
Productivity Developer
Price
Free
Featured
No
Visibility
Unlisted
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
zenhubView Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
1
Active
0
Obsolete
1
Listed
0
Unlisted
1
Total Users
10,000

Zenhub – Project Management Inside GitHub

ZenHub – Project Management Inside GitHub for IBM ZenHub is the only project management tool that integrates natively within GitHub's user interface. No lengthy onboarding. No configuration headaches. No separate logins. Developers stay in an environment they love, and Project Managers get total visibility into the development process. Visualize Issues & Track Dependencies - Multi-Repo Task Boards allow you to track and provide transparency into your development process using existing GitHub data. Drag and drop Issues between pipelines, filter by labels, assign Issues, view Issues linked with Pull Requests, visualize blockers with Issue dependencies, and much more. Plan Sprints & Epics - Epics let you group multiple GitHub Issues together for better planning and tracking and collaborating on product backlogs. Use GitHub Milestones to create sprints, then add story points to track progress. Actionable Reports - Release Reports, Velocity Tracking, and Burndowns all enable more accurate predictions and continuous improvement insights. Determine team pace and efficiency, detect trends to improve processes, and measure the value delivered to end-users. Not using Chrome or Firefox? Learn more about accessing ZenHub across all browsers and mobile devices at https://zenhub.com/web

Item
Type
Severity
Description
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:• 20% increase: Access to sensitive domains increases potential impact• 10% increase: Early script execution enables pre-emptive content manipulation
storage
Permission
Medium
This permission allows storing data locally in the browser. Rated Medium because it can persist sensitive user data, track user activities over time, and potentially store malicious payloads.
https://zenhub.ibm.com/api/*
Host
Medium
Host permission — access limited to this URL pattern.
https://github.ibm.com/*
Host
Medium
Host permission — access limited to this URL pattern.
Access to Sensitive Domains
Risk Factor
Medium
This extension requests access to sensitive domains: https://github.ibm.com/*
Early Content Script Execution
Risk Factor
Medium
This extension runs content scripts at document_start.

The background service worker exposes a 'code' message command that passes the raw message data directly into chrome.scripting.executeScript as a code string. This is an explicit arbitrary remote code execution channel — any content script (or a page that can spoof a message to the extension) can dispatch a string of JavaScript and have it executed by the privileged service worker. While Manifest V3 removed the `code` property from executeScript, the design intent is a persistent RCE backdoor and the handler remains active in the message router.

js/worker.js (Line 90)
code(data, sender, sendResponse) {  chrome.scripting.executeScript(null, {    code: data,  });  sendResponse({    status: 'OK',  });},

The service worker exposes a general-purpose HTTP proxy that accepts an arbitrary URL, HTTP method, request headers, and body from message senders with no URL validation or allowlist. Because the service worker holds host_permissions for both https://zenhub.ibm.com/api/* and https://github.ibm.com/*, a compromised or injected content script can route authenticated API calls (including calls carrying the user's GitHub session cookies) through this proxy to either permitted domain, enabling credential-bearing data exfiltration to the ZenHub backend or lateral movement against the IBM GitHub API.

js/worker.js (Line 169)
executeXMLHttpRequestInBackground: async (data, sender, senderResponse) => {  const [method, url] = data.open;  const [body] = data.send; // body of the request  const requestHeaders = data.setRequestHeader; // Array<{key: string, value: string}>  const formattedRequestHeaders = requestHeaders?.reduce(    (acc, {      key,      value    }) => ({      ...acc,      [key]: value,    }), {}  );  const response = await fetch(url, {    method,    headers: formattedRequestHeaders,    body,  });  const contentType = response.headers.get('content-type') || '';  let responseHeaders = '';  for (const [key, value] of response.headers.entries()) {    responseHeaders += `${key}: ${value}\n`;  }  const formattedResponse = {    readyState: 4,    responseText: contentType.includes('application/json') ?      JSON.stringify(await response.json()) : await response.text(),    status: response.status,    statusText: response.statusText,    responseHeaders,  };  senderResponse(formattedResponse);},

The VideoEmbed template (listed as a web_accessible_resource available to https://github.ibm.com/*) reads a URL directly from the query string and assigns it to an iframe src without any validation, sanitization, or origin allowlist. An attacker who can craft a link on github.ibm.com can load chrome-extension://…/templates/VideoEmbed.html?url=https://attacker.com/phishing inside a full-viewport extension page, providing a highly credible phishing surface dressed in the extension's trusted origin. JavaScript URLs (javascript:…) are also not filtered.

templates/VideoEmbed.js (Line 1)
const iframe = document.getElementById('externalVideo');const url = decodeURIComponent(window.location.search.replace('?url=', ''));iframe.src = url;

The service worker pushes every connecting port named 'waitForOAuth' into a shared array without verifying the sender's origin or tab. Any content script running on the permitted github.ibm.com origin can connect with this port name and receive the oauthSuccessFromPort notification, leaking the timing and occurrence of user authentication events to potentially untrusted scripts and enabling session-timing attacks.

js/worker.js (Line 215)
chrome.runtime.onConnect.addListener((port) => {  if (port.name === 'waitForOAuth') oAuthListenerPorts.push(port);});

By severity

Critical1
High2
Medium0
Low1

Versions scanned

Showing 1 of 1 scanned version with more than one unique finding. Counts are unique findings that include each version.

Extension VersionCode Review Findings
3.5.44

Files with findings

2 distinct paths — top paths by unique finding count:

  • js/worker.js3
  • templates/VideoEmbed.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
critical
js/worker.js (line 90)The background service worker exposes a 'code' message command that passes the raw message data directly into chrome.scripting.executeScript as a code string. This is an explicit arbitrary remote code execution channe…
2Data Exfiltration
high
js/worker.js (line 169)The service worker exposes a general-purpose HTTP proxy that accepts an arbitrary URL, HTTP method, request headers, and body from message senders with no URL validation or allowlist. Because the service worker holds …
3Phishing
high
templates/VideoEmbed.js (line 1)The VideoEmbed template (listed as a web_accessible_resource available to https://github.ibm.com/*) reads a URL directly from the query string and assigns it to an iframe src without any validation, sanitization, or o…
4Unauthorized Data Collection
low
js/worker.js (line 215)The service worker pushes every connecting port named 'waitForOAuth' into a shared array without verifying the sender's origin or tab. Any content script running on the permitted github.ibm.com origin can connect with…
URLs
163
IPv4
177
IPv6
0

URLs

View the external URLs this extension communicates with to understand its network activity and data interactions.

Gain full insight into all external connections.

Upgrade for full visibility.

meyerweb.com/eric/tools/css/reset/http://meyerweb.com/eric/tools/css/reset/
www.w3.org/2000/svghttp://www.w3.org/2000/svg
www.w3.org/1999/xlinkhttp://www.w3.org/1999/xlink
chromium.googlesource.com/chromium/src/+/d51682b36adc22496f45a8111358a8bb30914534%5E%21/https://chromium.googlesource.com/chromium/src/+/d51682b36adc22496f45a8111358a8bb30914534%5E%21/
developer.chrome.com/extensions/messaginghttps://developer.chrome.com/extensions/messaging#connect
developer.chrome.com/extensions/tabshttps://developer.chrome.com/extensions/tabs#type-Tab
caniuse.com-https://caniuse.com/?search=line-clamp
stackoverflow.com/a/25762563https://stackoverflow.com/a/25762563
css-tricks.com/preventing-a-grid-blowout/https://css-tricks.com/preventing-a-grid-blowout/
stackoverflow.com/questions/49469344https://stackoverflow.com/questions/49469344
Showing 1 to 10 of 170 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

147.137.33.165
IPv4
-
12.12.11.238
IPv4
-
209.125.5.25
IPv4
-
7.28.28.42
IPv4
-
27.11.5.31
IPv4
-
69.2.2.42
IPv4
-
49.12.69.31
IPv4
-
2.21.29.44
IPv4
-
59.11.91.11
IPv4
-
3.1.5.2
IPv4
-
4.1.7.1
IPv4
-
1.5.2.7
IPv4
-
2.2.6.3
IPv4
-
1.1.3.8
IPv4
-
1.1.5.7
IPv4
-
1.9.9.5
IPv4
-
2.1.4.2
IPv4
-
1.3.1.7
IPv4
-
6.2.8.7
IPv4
-
2.4.7.5
IPv4
-
7.5.1.3
IPv4
-
1.69.86.42
IPv4
-
19.2.45.3
IPv4
-
19.31.52.5
IPv4
-
1.18.208.44
IPv4
-
1.182.209.44
IPv4
-
45.3.84.75
IPv4
-
116.114.29.145
IPv4
-
177.61.177.251
IPv4
-
22.126.4.3
IPv4
-
33.41.42.42
IPv4
-
1.2.6.6
IPv4
-
1.162.97.52
IPv4
-
73.169.204.113
IPv4
-
247.15.52.225
IPv4
-
153.218.102.39
IPv4
-
73.169.205.113
IPv4
-
83.94.36.221
IPv4
-
212.83.212.238
IPv4
-
232.83.155.235
IPv4
-
171.114.114.17
IPv4
-
188.14.43.211
IPv4
-
1.45.199.41
IPv4
-
72.5.3.12
IPv4
-
58.156.252.234
IPv4
-
118.122.209.27
IPv4
-
58.157.252.235
IPv4
-
212.52.38.118
IPv4
-
245.38.163.67
IPv4
-
203.148.45.222
IPv4
-
52.136.227.204
IPv4
-
159.186.37.33
IPv4
-
1.238.171.35
IPv4
-
126.108.189.24
IPv4
-
162.91.107.254
IPv4
-
102.1.223.15
IPv4
-
1.238.17.35
IPv4
-
78.221.174.148
IPv4
-
161.64.112.23
IPv4
-
162.64.111.23
IPv4
-
208.21.139.37
IPv4
-
134.106.202.24
IPv4
-
1.239.171.35
IPv4
-
34.239.54.54
IPv4
-
126.109.188.24
IPv4
-
1.239.17.35
IPv4
-
126.109.19.24
IPv4
-
16.186.37.33
IPv4
-
126.109.189.24
IPv4
-
78.222.174.147
IPv4
-
206.122.45.183
IPv4
-
1.149.34.125
IPv4
-
222.173.147.26
IPv4
-
207.122.45.183
IPv4
-
22.253.33.64
IPv4
-
51.118.215.177
IPv4
-
14.48.34.85
IPv4
-
218.203.146.33
IPv4
-
1.124.197.254
IPv4
-
79.213.227.141
IPv4
-
39.146.165.238
IPv4
-
86.228.248.152
IPv4
-
208.133.48.2
IPv4
-
174.211.28.46
IPv4
-
231.83.155.235
IPv4
-
213.83.213.238
IPv4
-
136.139.245.3
IPv4
-
232.83.154.234
IPv4
-
22.184.33.45
IPv4
-
86.229.247.152
IPv4
-
203.155.44.186
IPv4
-
231.5.56.89
IPv4
-
203.156.44.187
IPv4
-
135.242.203.52
IPv4
-
232.83.155.234
IPv4
-
209.133.48.2
IPv4
-
21.68.14.199
IPv4
-
28.156.62.234
IPv4
-
219.31.146.57
IPv4
-
58.111.248.167
IPv4
-
156.61.105.123
IPv4
-
81.183.222.123
IPv4
-
116.234.174.52
IPv4
-
206.146.45.219
IPv4
-
156.61.104.123
IPv4
-
155.38.52.52
IPv4
-
207.76.137.214
IPv4
-
157.61.104.123
IPv4
-
172.138.114.207
IPv4
-
2.78.133.221
IPv4
-
206.76.138.214
IPv4
-
45.155.193.25
IPv4
-
81.183.222.122
IPv4
-
205.145.45.218
IPv4
-
156.61.104.124
IPv4
-
142.142.31.212
IPv4
-
156.59.156.186
IPv4
-
1.121.237.48
IPv4
-
89.208.244.138
IPv4
-
172.137.114.206
IPv4
-
199.78.134.221
IPv4
-
22.252.33.64
IPv4
-
28.156.62.233
IPv4
-
1.164.243.34
IPv4
-
211.68.14.199
IPv4
-
104.197.157.42
IPv4
-
236.149.5.224
IPv4
-
17.84.17.32
IPv4
-
21.68.141.199
IPv4
-
1.162.31.34
IPv4
-
154.38.52.52
IPv4
-
58.112.248.167
IPv4
-
183.221.123.39
IPv4
-
205.146.45.219
IPv4
-
183.221.122.39
IPv4
-
142.141.31.212
IPv4
-
171.128.37.153
IPv4
-
172.138.115.207
IPv4
-
2.78.133.222
IPv4
-
1.24.242.37
IPv4
-
208.64.145.243
IPv4
-
198.24.131.43
IPv4
-
73.162.204.108
IPv4
-
215.49.66.66
IPv4
-
209.64.145.243
IPv4
-
188.65.126.132
IPv4
-
188.65.125.132
IPv4
-
231.232.155.41
IPv4
-
113.11.247.165
IPv4
-
201.29.134.51
IPv4
-
151.25.227.55
IPv4
-
4.47.221.123
IPv4
-
22.226.147.4
IPv4
-
178.71.123.253
IPv4
-
66.225.156.49
IPv4
-
178.71.124.253
IPv4
-
228.54.72.72
IPv4
-
1.164.203.32
IPv4
-
1.165.203.32
IPv4
-
83.206.242.138
IPv4
-
208.134.49.2
IPv4
-
38.255.58.58
IPv4
-
3.3.3.7
IPv4
-
8.8.4.8
IPv4
-
4.4.7.9
IPv4
-
148.226.35.4
IPv4
-
161.91.108.254
IPv4
-
207.122.45.184
IPv4
-
206.122.45.184
IPv4
-
138.112.25.25
IPv4
-
1.3.132.0
IPv4
-
1.101.3.4
IPv4
-
8.33.75.75
IPv4
-
138.139.36.139
IPv4
-
2.2.4.4
IPv4
-
2.2.5.3
IPv4
-
8.3.4.1
IPv4
-
Showing 1 to 177 of 180 rows
Rows per page:
Version
Size
Is Malicious
Findings
Permhash
3.5.4
Latest
2.75 MB
Malicious
4
Showing 1 to 1 of 10 rows
Rows per page:

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.