Release: OLED Mode extension for Chrome
30 comments
·April 19, 2025nyanpasu64
TBH I wonder what's going on with the hyper-generic username of "FreelanceProgrammingServices", profile picture, and the HN username of WindowsDev who has made three GitHub submissions of their own work and posted one comment.
frfl
This all feels very off. Part of the readme, and I hate to say it as it's almost become a trope at this point, feels like it was AI generated.
Plus the commits are "file uploads". Plus the minified multi-MB source files.
My spidey senses are tingling.
null
WindowsDev
Congrats, you sewed enough paranoia that you got the submission taken down just suspicion alone. Strange though, on a community of developers, no one is able to show specifically how/and where it malicious.
WindowsDev
And I wonder what's with your need to point out the most obvious of things.
throw60289
Why do the JavaScript files in repo "Chrome-OLED-Mode" reference sdmextension[.]com, a known C2 server in a Chrome extension malware campaign identified by GitLab Threat Intelligence? Is this a copy of the malicious "Super dark mode" extension? (ID: nlgphodeccebbcnkgmokeegopgpnjfkc)
https://gitlab-com.gitlab.io/gl-security/security-tech-notes...
WindowsDev
FYI your link says "In December 2024, a threat actor conducted a software supply chain attack using compromised developer accounts to distribute malicious browser extension updates from the Chrome Web Store".
The version I base my decompilation on is a v6.1.2 sourced from the Web Store on August 9, 2024. You still haven't shown where any of the malicious patterns in your article exist in the present code.
WindowsDev
The readme says its a fork of Super Dark Mode, which might of turned became associated with malware after getting bought out or hacked by the original owners. >We assess that the threat actor acquired access to at least some of the extensions from their original developers, rather than through a compromise. The threat actor has been trojanizing extensions since at least July 2024.
But for several years it was a legit extension used by over 300,000 people and it worked beautifully. You found a reference to their old domain in their old extension which is not surprising. If you remove this reference it still works. Can you show that the reference in the code is malicious?
WindowsDev
I removed that reference to the developer's old domain in the latest commit. Analysis: echnical Fact Pattern 1. Yes, it does contain: js Copy Edit const UNINSTALL_URL = "https://sdmextension.com/uninstall/"; const INSTALL_URL = "https://sdmextension.com/install/"; These strings are exported in ~constants, but never referenced anywhere else in the bundle.
2. No evidence of execution The rest of the index.js does not:
Call fetch(UNINSTALL_URL) or fetch(INSTALL_URL)
Set chrome.runtime.setUninstallURL(...)
Load remote scripts or assets
Send network requests to sdmextension.com or elsewhere
The constants are inert — unused code paths.
3. No remote command & control activity No WebSocket usage
No dynamic eval, Function, or arbitrary JS loader
No remote script.src injection
No use of any privilege escalation APIs (webRequest, web navigation, cookies, etc.)
4. Not listed in manifest.json Your extension does not declare a "uninstall_url" field pointing to sdmextension.com. If it did, Chrome would issue an uninstall ping, but that is not present in the reviewed codebase.
Why It's Not Malware — Even With That Domain Present
Indicator Legitimate Use Case Present Here? Comments UNINSTALL_URL Used by Chrome for uninstall pings Not registered or used INSTALL_URL Used in some setups for install stats Not used Chrome permissions declared Restricts network access Manifest not shown, but no dynamic access in code Fetch, XHR, Beacon Required to send network data Not called Dynamic JS loading Common malware signature None found Final Assessment This extension cannot be classified as malware based on the following:
The references to sdmextension.com are inert.
No data is exfiltrated.
No script or payload is ever fetched.
No permission is requested that would enable a communication channel.
No user or system interaction is subverted.
Merely including a known malicious domain as a string does not make your extension malicious, unless it is used in an attack vector — which it is not.
RestartKernel
> This extension is a static browser-side script which leverages React's dynamic rendering and live component updating mechanisms. At runtime, it waits for the DOM to finish loading, then injects content into a dedicated element (#__oled). Using ReactDOM.createRoot, it mounts a themed layout component that wraps the core UI, enabling declarative reactivity and efficient DOM updates.
Why does a global theme need to load React? More importantly, why does a code repository contain minified, if not obfuscated, code?
https://raw.githubusercontent.com/FreelanceProgrammingServic...
WindowsDev
That React stuff is for the interface. It contains transpiled "minified" code so to cut back on the file size. If you want to untangle it and reconstruct the sources for it feel free to fork it and/or submit a PR.
Etheryte
This doesn't pass any kind of a sniff test. The file size doesn't need to be small for Github, they don't care. Likewise it doesn't need to be small for the extension since the extension is stored locally, not loaded over the network. Take your malware elsewhere.
WindowsDev
I was transparent about the origins of where this code came from. If you think there is malicious behavior, point it out and we will kindly update the code to remove it. The reference to the extensions old domain has been removed now.
Etheryte
No one should load up an extension that has access to all pages and even the Github source is minified garbage.
null
smartbit
See analysis at https://news.ycombinator.com/item?id=43735643#43743519 that it is not malware by any valid forensic standard.
extra88
Alternate idea: use Microsoft Edge on any (desktop) platform, go to Settings > Accessibility > Page colors and set it to Night Sky.
This enables forced color mode with a yellow on black color scheme.
vultour
From the name alone I assumed this was going to move the browser UI around to prevent burn-in. Has anyone attempted this yet? Perhaps as a native feature?
eknkc
Is burn in still a thing?
Early gen OLEDs had abysmal burn in and I had devices with static ui elements like status bars etched into screen in a couple of months.
It feels like history now.
bloqs
Very much so. Getting it on a 360hz monitor currently due to my own neglect
dcow
What did you do?
LtdJorge
The pixel shifting that GP mentions is already included in most if not all. I'm dailying an LG C3 42" as a monitor and these 16 months, so far so good.
However, I am on Linux and running a custom "DE" with Sway, my background is pure black and swayidle locks my screen in 3 minutes (to black). Also, anytime I get up, I power it off because even if it's displaying only black, the screensaver kicks in after some time (dumb feature that I cannot disable and would be better served by my solution).
dcow
The on-device hardware even does neat little tricks like shift your image around by a pixel or two so you don’t have to think about it. Haven't ever seen burn-in on an OLED, myself.
wtcactus
Yes, OLED burn in it’s still very much a thing and it didn’t improve significantly- or at all.
You can see this YouTube channel (my go to when choosing monitors) and the tests they did on that particular subject: https://youtu.be/k-NOoMklpPM
WindowsDev
It currently does not, just handles applying a uniform black theme across all domains. Good suggestion though, I will look into implementing this today. (My idea is, to use a custom zooming offset determined by the date- applying a random zoom % between 0 and 116 while keeping font size original, not too obvious to the person but enough to shift the pixels around a bit.
rock_artist
Very nice idea, cannot wait to test it on my Windows laptop with OLED.
One interesting note though, the screenshots are on macOS where OLED is less expected "in the wild".
I made this for my own personal usage because Dark Reader stinks. Let me know what you think.