Firefox Add-ons

Sticky Notes

by prtngn · 2 users · 5.0 rating
482a8d22-178c-5001-a100-2f26e65998a6 | v1.15.4
85/ 100
CRITICAL risk
+31 since v1.12.0
Analyst verdict
Do not install

The AI review rates the findings as likely false positive, but the risk score (85/100) still counts them.

Analysis record

Analysed
2 weeks ago
Version
v1.15.4
Artifact
SHA256 ADF…CE7
Source
Findings (non-IoC)

Is Sticky Notes safe?

Sticky Notes leaves a note on a page so it is still there when you open that tab again. The manifest we read declares no API permissions and no host permissions, so it cannot reach your cookies, downloads, browsing history, or sites other than the pages where its content script runs. The code makes network calls from background.js and content-scripts/content.js to sticky.peerpulse.dev, and it uses a Google sign-in client, 501317350230-2t25j93e3d4aej8pb9e14bk9fcfik5l9.apps.googleusercontent.com. A notes service that follows you between tabs needs both of those things, somewhere to keep the notes and a way to know who you are.

That is also what the scanner flagged. A record like NET-FETCH-content-scripts/content.js-3 means a fetch call exists inside the content script. If it pointed somewhere unrelated, that could mean page text leaving your browser. The addresses this extension reaches are its own notes backend at sticky.peerpulse.dev, Google for sign-in, and a handful of ordinary sites: mozilla.com, youtu.be, youtube.com and news.ycombinator.com. A WebSocket in background.js keeps a live channel to the same notes backend, which is how a sync feature stays current instead of polling.

The bulk of the count is scanner noise. Sixty-two of the findings are code-smell matches, a class that fires on ordinary JavaScript and carries no weight by itself. Entries such as globalthis.chrome and head.center are property accesses in bundled code that were read as domain names. Nothing here matched a malware signature, nothing was obfuscated, and no code touches credentials or cookies.

Evidence ledger

Ranked by severity · findings with a source location link to the code viewer

67 detail rows

YARA Rule Matches

8 rules
SeverityRuleHitsFilesMetadata
LOWpostinstall persistence mechanism 5
background.js_locales/pt_BR/messages.jsoncontent-scripts/content.js +2 more
-
LOWpostinstall file download 3
background.jschunks/popup-B-ui4NFJ.jscontent-scripts/content.js
-
LOWNoUseWeakRandom 1
content-scripts/content.js
-
LOWpostinstall crypto operations 3
chunks/popup-B-ui4NFJ.jscontent-scripts/content.jsbackground.js
-
LOWpostinstall system command 21
_locales/pl/messages.json_locales/pt_BR/messages.json_locales/tr/messages.json +18 more
-
LOWpostinstall file manipulation 21
_locales/tr/messages.jsoncontent-scripts/content.jsassets/popup-D6yIkLST.css +18 more
-
LOWpostinstall obfuscation 1
background.js
-
LOWpostinstall network communication 7
chunks/popup-B-ui4NFJ.js_locales/de/messages.json_locales/fr/messages.json +4 more
-

Network Indicators

Concrete URLs, domains, IPs, emails, and hashes extracted from the analyzed artifact.

21 total

Loading network indicators

IoC detail rows are loaded outside the initial page render.

Publisher Evidence

Limited evidence

prtngn

Publisher identity, store signals, distribution reach, and warning signals used for context. Treat this as supporting evidence, not a clean bill of health.

Firefox does not expose the same publisher verification data as IDE stores, so this score is deliberately conservative.

32
Noisy-finding weight
x1.00
Publisher domain
peerpulse.dev
Observed
Store verification signal
Limited signal
Limited
Extension portfolio
Unknown
Portfolio

10 evidence rows available.

Finding Categories

5
Network
21
IoC Indicators

YARA Rules Matched

8 rules(62 hits)
postinstall persistence mechanism postinstall file download NoUseWeakRandom postinstall crypto operations postinstall system command postinstall file manipulation postinstall obfuscation postinstall network communication

Requested Permissions

9 permissions
http://*/*
Dangerous
https://*/*
Dangerous
<all_urls>

Access and modify data on every website you visit

Dangerous
identity

Access your identity and sign-in tokens

High
storage
Low
contextMenus
Low
scripting
Low
alarms
Low
file:///*
Low

AI Security Report

AI Security Review

Evidence context: threat category none; evidence quality moderate.

What the extension does

Sticky Notes writes a note onto a page and keeps it there for later. The code matches that description. content-scripts/content.js runs on pages and issues a fetch, chunks/popup-B-ui4NFJ.js issues two more from the popup, and background.js holds a WebSocket alongside a fetch. The hosts those calls reach are sticky.peerpulse.dev and peerpulse.dev, a Google sign-in client (501317350230-2t25j93e3d4aej8pb9e14bk9fcfik5l9.apps.googleusercontent.com), and four ordinary destinations: mozilla.com, youtu.be, youtube.com, news.ycombinator.com. A notes tool that follows you between tabs needs a server and a way to identify the person using it. Google for sign-in and a WebSocket to the notes service for live updates is exactly that shape.

What the scanner found

The scan returned 88 findings: 62 code-smell, 21 IoC, 5 network, and nothing at all in the malware, malware-signature, obfuscation, secret, dependency, tool-poisoning or manifest-analysis buckets. Nothing is rated critical or high. The five network records are NET-WEBSOCKET-background.js-1, NET-FETCH-background.js-1, NET-FETCH-chunks/popup-B-ui4NFJ.js-1, NET-FETCH-chunks/popup-B-ui4NFJ.js-3 and NET-FETCH-content-scripts/content.js-3. Each one states that a call exists at that file and line. None of them reaches a destination that is out of place for a notes app.

Most of the count is noise. The IoC list contains globalthis.chrome and head.center, which are property access chains inside minified JavaScript that were read as domain names, and mozilla.com, youtu.be, youtube.com and news.ycombinator.com, which are the kind of hosts that show up in bundled library code and sample data. The 62 code-smell hits are the class that fires on any non-trivial bundle, covering postinstall patterns, credential keyword rules and code-quality checks. chunks/popup-B-ui4NFJ.js is a bundled chunk, so every module inside it contributes its own matches. background.js is the extension's service worker and does the syncing, which is why it holds the WebSocket and one fetch.

Why not something worse

Nothing in this bundle reads cookies or credentials, replaces a search engine, touches history, or carries an encrypted payload. There is no malware signature and no obfuscation. The manifest the scanner read declares no API permissions and no host permissions, which closes off cookies, downloads, webRequest and tabs access. What a hidden channel could carry away from a permissions list that empty is close to nothing.

The strongest counterargument

A WebSocket in background.js is a channel that stays open, and peerpulse.dev is not a host we can tie to the publisher from this evidence alone. Combine that with one recorded user and no recognizable publisher name, and the profile reads like a small extension holding a private line. That reads past the details. The subdomain is sticky.peerpulse.dev, which carries the extension's own name, the same codebase holds a Google OAuth client, and a note-sync feature cannot work without a backend to sync to. Two things would settle it: a live capture confirming which payloads travel over NET-WEBSOCKET-background.js-1, and confirmation that peerpulse.dev belongs to publisher prtngn. Until then the evidence points at a notes app talking to its own server.

Key Reasons

  • Zero malware signatures, zero obfuscation, zero secrets and zero tool-poisoning findings across the whole scan
  • All five network records (NET-WEBSOCKET-background.js-1, NET-FETCH-background.js-1, NET-FETCH-chunks/popup-B-ui4NFJ.js-1 and -3, NET-FETCH-content-scripts/content.js-3) point at the extension's own notes backend sticky.peerpulse.dev or a Google sign-in client
  • 83 of 88 findings are the known noise classes: 62 low-severity code-smell matches and 21 IoCs that include property chains like globalthis.chrome and head.center
  • Manifest declares no API permissions and no host permissions, leaving no route to cookies, downloads, webRequest or tabs

False Positive Considerations

  • 62 low-severity code-smell rules firing on bundled JavaScript in background.js and chunks/popup-B-ui4NFJ.js
  • IoC extractor reading property access chains (globalthis.chrome, head.center) as domain names
  • Benign or bundled hosts (mozilla.com, youtu.be, youtube.com, news.ycombinator.com) counted as suspicious endpoints
  • Multiple fetch matches inside one bundled chunk counted as separate network findings

Reviewed 2026-10-16; recommended action: no action; model confidence 75%.

Firefox version history

Risk trend by version

2 analyzed versions. Each point is the latest successful scan for that version; failed zero-score scans are hidden. Dates are based on first seen by risky plugins.

Selected
85
Change since first
+31
Change from previous
+31
Versions:
First analyzed version
1.12.0
Oct 13, 2026
Risk range
54 to 85
Across analyzed versions
Latest analyzed version
1.15.4
Oct 15, 2026
Selected version
critical
Version
v1.15.4
2 weeks ago
Risk score
85
Findings
88
Change vs previous
+31

Pick any point on the chart to explore that version's code below.

About This Extension

Opened a tab, got distracted, came back — and forgot why you opened it? Leave a sticky note right on the page. Close the tab, come back tomorrow — the note is right where you left it and reminds you what you were about to do: what to check in an order, what to compare on a product, what to answer in a ticket. Features • Add a note: toolbar button, right-click → "Add note", or Alt+Shift+N • Drag notes anywhere and resize them; 5 colors • Text or checklist: Enter adds an item, checked items get crossed out • Pin a note so it stays on screen while you scroll • All notes of the current page and of other pages in the popup — jump to any of them in one click • Note count on the toolbar button • Share a note with other people by email or invite link (read or edit) — free • 16 languages Tied to the address Notes belong to the page's domain and path. Query parameters (?…) and anchors (#…) are ignored: <a href="https://prod.outgoing.prod.webservices.mozgcp.net/v1/21d202535bdc956038b4cf49dbff06248260fc13851ebb66e9341c9dcf3bb9cd/http%3A//example.com/orders/42%3Ftab=history" rel="nofollow">example.com/orders/42?tab=history</a> and <a href="https://prod.outgoing.prod.webservices.mozgcp.net/v1/eee234b160e4ad783be081b8fab1fb044f9003d9a4d3ca28d0f84088838be0e2/http%3A//example.com/orders/42" rel="nofollow">example.com/orders/42</a> are the same page. Free and Pro • Free: up to 5 notes. Without an account they sync through Firefox Sync if you use it; sign in with Google or Microsoft and they sync through the cloud in real time. Sharing a note with up to 5 people is free. • Pro (optional, paid): unlimited notes (fair use applies), search across all your notes and up to 100 people per shared note. See Free vs Pro: <a href="https://prod.outgoing.prod.webservices.mozgcp.net/v1/d795e2fa3bff9eed2d5e2f7c5eb84dad027361059a0ed0ff92ba882c02ac441c/https%3A//sticky.peerpulse.dev/pricing%3Flang=en" rel="nofollow">https://sticky.peerpulse.dev/pricing?lang=en</a> • Have a promo code? Sign in, then enter it in Settings → Promo code. Privacy Without an account nothing leaves your browser: no servers, no ads, no analytics. The extension never reads page content; only the address of a page with a note is stored. Signed-in and shared notes are stored on our server. Read the privacy policy: <a href="https://prod.outgoing.prod.webservices.mozgcp.net/v1/66d6cbd55378b84796157659ec7d60cc0a1e5a84ec9cba383ac51b295409aaa4/https%3A//sticky.peerpulse.dev/privacy%3Flang=en" rel="nofollow">https://sticky.peerpulse.dev/privacy?lang=en</a>

Frequently Asked Questions