<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Arsenic</title>
    <description>The latest articles on DEV Community by Arsenic (@arsen1c).</description>
    <link>https://dev.to/arsen1c</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F263121%2F429d32b1-145d-4c8d-8ff4-c3b3f244599a.jpg</url>
      <title>DEV Community: Arsenic</title>
      <link>https://dev.to/arsen1c</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arsen1c"/>
    <language>en</language>
    <item>
      <title>How I Found a Fake Job Assessment Repo Hiding Malware Inside SVG Files</title>
      <dc:creator>Arsenic</dc:creator>
      <pubDate>Wed, 27 May 2026 20:56:35 +0000</pubDate>
      <link>https://dev.to/arsen1c/how-i-found-a-fake-job-assessment-repo-hiding-malware-inside-svg-files-13oi</link>
      <guid>https://dev.to/arsen1c/how-i-found-a-fake-job-assessment-repo-hiding-malware-inside-svg-files-13oi</guid>
      <description>&lt;p&gt;Like a lot of developers in this market, I’ve been taking freelance assessments and Discord job leads more seriously than I normally would.&lt;/p&gt;

&lt;p&gt;One of those assessments turned into a malware investigation.&lt;/p&gt;

&lt;p&gt;One day, I saw a post in a Discord server looking for a fullstack dev. I pitched. The reply looked routine at first: they DM’d me a requirements PDF for an assessment. I did not trust it, so I asked them to paste the requirements in the chat instead. They sent screenshots of the PDF, and it looked like a real assessment. Clean structure, clear expectations, nothing immediately screaming scam.&lt;/p&gt;

&lt;p&gt;Then they invited me to a GitHub repo called &lt;code&gt;E-commerce-template-12d46f3e&lt;/code&gt;. My first thought was that the name looked autogenerated, like they were appending random numbers for each assessment. That is when I started treating it like a security review, not a coding exercise.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfzwfruzrb8cw2fcsyts.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfzwfruzrb8cw2fcsyts.png" alt="Github repo" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I checked first
&lt;/h2&gt;

&lt;p&gt;The first thing I looked at was &lt;code&gt;package.json&lt;/code&gt;. I was expecting the usual red flags: weird postinstall hooks, obfuscated scripts, or packages I had never heard of. There was one outdated dependency, &lt;code&gt;@zeit/next-css&lt;/code&gt;, but nothing in &lt;code&gt;package.json&lt;/code&gt; looked obviously malicious.&lt;/p&gt;

&lt;p&gt;That is what made the repo interesting. The dependency list looked boring; the problem was in the application flow.&lt;/p&gt;

&lt;h2&gt;
  
  
  The suspicious startup path
&lt;/h2&gt;

&lt;p&gt;Next, I looked at the startup scripts.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;dev&lt;/code&gt; script ran &lt;code&gt;server.js&lt;/code&gt;, and that file did something that immediately raised my guard: it called &lt;code&gt;startLoggingErrors()&lt;/code&gt; during server startup.&lt;/p&gt;

&lt;p&gt;At first glance, that looked like a harmless logging helper. But when I opened the related files, I found this chain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;server.js&lt;/code&gt; starts the server.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lib/serverStartup.js&lt;/code&gt; calls &lt;code&gt;eval(...)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lib/startupLogs.js&lt;/code&gt; reconstructs a hidden payload from files in &lt;code&gt;public/flags/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4nhalxuq12zfo0lo7a01.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4nhalxuq12zfo0lo7a01.png" alt="malicious files" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvt2x5lej7m0c9cbpfh0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvt2x5lej7m0c9cbpfh0.png" alt="serverStartup eval function" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That &lt;code&gt;eval()&lt;/code&gt; was the key. A server startup path that reconstructs data from assets and then evaluates them is a hard stop.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hidden payload in the SVGs
&lt;/h2&gt;

&lt;p&gt;The weirdest part was the assets.&lt;/p&gt;

&lt;p&gt;The repository had a bunch of country flag SVG files under &lt;code&gt;public/flags/&lt;/code&gt;. Those looked normal until I checked the HTML comments inside them. Each SVG had a comment that looked like a fragment of base64-encoded text.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsr5mtetekp0qx2c26nim.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsr5mtetekp0qx2c26nim.png" alt="svg files" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The loader in &lt;code&gt;lib/startupLogs.js&lt;/code&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Walks through &lt;code&gt;public/flags/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Reads each &lt;code&gt;.svg&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Extracts the text inside &lt;code&gt;&amp;lt;!-- ... --&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Sorts and joins the fragments&lt;/li&gt;
&lt;li&gt;Base64-decodes the result&lt;/li&gt;
&lt;li&gt;Returns the decoded JavaScript&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lib/serverStartup.js&lt;/code&gt; feeds that decoded string into &lt;code&gt;eval()&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The two lines that made the whole thing click were basically this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cwd&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="nf"&gt;setLogUrl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sxeolf2iodjv&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="nf"&gt;eval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;log_manager&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fef4oeoczptskvnjbuqrq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fef4oeoczptskvnjbuqrq.png" alt="logDetail function" width="799" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That is the bridge between the SVG comments and the executed payload.&lt;/p&gt;

&lt;p&gt;So yes, the SVG comments were not decorative. They were a distributed payload. The code was split across many innocent-looking image files so it would not stand out in a quick scan.&lt;/p&gt;

&lt;p&gt;I also used Codex as a coding agent to help with the defensive part of the review. Instead of running the suspicious code, I asked it to inspect the repo, trace the startup flow, and deobfuscate the payload safely so I could understand what it did without accidentally executing it. That helped confirm the hidden flow and surfaced additional suspicious paths for a wider audit.&lt;/p&gt;

&lt;p&gt;If you want the exact evidence trail, these are the key files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;server.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lib/serverStartup.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lib/startupLogs.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;public/flags/*.svg&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the decoded code actually does
&lt;/h2&gt;

&lt;p&gt;Once I reconstructed the payload without executing it, with Codex helping me safely decode and audit the hidden code, the intent was obvious.&lt;/p&gt;

&lt;p&gt;It is not just telemetry or error logging. It behaves like a stealer/dropper with persistence.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixy64bkktwtvtcp3ni79.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixy64bkktwtvtcp3ni79.png" alt="decoded" width="800" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Part of the reconstructed payload after safely decoding the SVG fragments. I redacted active infrastructure details before publishing.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. It fingerprints the machine
&lt;/h3&gt;

&lt;p&gt;The payload gathers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;local IPv4 addresses&lt;/li&gt;
&lt;li&gt;public IP via &lt;code&gt;api.ipify.org&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;hostname&lt;/li&gt;
&lt;li&gt;OS type and version&lt;/li&gt;
&lt;li&gt;user info&lt;/li&gt;
&lt;li&gt;a machine/user identifier&lt;/li&gt;
&lt;li&gt;whether the machine looks virtualized&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means it profiles the environment before doing anything else.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. It sends the profile to a remote server
&lt;/h3&gt;

&lt;p&gt;It posts a JSON system profile to a remote endpoint over HTTP.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. It drops and runs additional files on Windows
&lt;/h3&gt;

&lt;p&gt;On Windows, it downloads executables into &lt;code&gt;AppData&lt;/code&gt; and runs them.&lt;/p&gt;

&lt;p&gt;It also writes a &lt;code&gt;runjs.vbs&lt;/code&gt; file into the Windows Startup folder so the code can persist across reboots.&lt;/p&gt;

&lt;p&gt;That is a classic persistence pattern.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. It hunts for sensitive files
&lt;/h3&gt;

&lt;p&gt;The script recursively scans user paths and drives for files matching patterns like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.env&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.pem&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.key&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.cer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.secret&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.xlsx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;readme.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.ssh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.aws&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.github&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is collection logic, not a developer convenience feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. It targets browser data
&lt;/h3&gt;

&lt;p&gt;It looks for browser profile directories for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome&lt;/li&gt;
&lt;li&gt;Brave&lt;/li&gt;
&lt;li&gt;Edge&lt;/li&gt;
&lt;li&gt;LT Browser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then it checks for files such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Login Data&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Web Data&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Local Extension Settings&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the kind of place malware checks when it wants tokens, cookies, or saved credentials.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. It targets Sticky Notes
&lt;/h3&gt;

&lt;p&gt;It also checks the Microsoft Sticky Notes storage path on Windows. That is another common place where people accidentally leave sensitive information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Indicators
&lt;/h2&gt;

&lt;p&gt;I am intentionally redacting the live infrastructure in the public draft.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redacted base URL: &lt;code&gt;[redacted-host]:[redacted-port]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Observed endpoints:

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/system-info&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/file-manage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/download/track.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/download/apps/language_server_x64_x32_windows.exe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/download/apps/assist_language_server_x64_x32_windows.exe&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Data sent to &lt;code&gt;/system-info&lt;/code&gt;:

&lt;ul&gt;
&lt;li&gt;OS type, platform, release&lt;/li&gt;
&lt;li&gt;hostname&lt;/li&gt;
&lt;li&gt;user info&lt;/li&gt;
&lt;li&gt;local IP addresses&lt;/li&gt;
&lt;li&gt;public IP&lt;/li&gt;
&lt;li&gt;machine/user identifier&lt;/li&gt;
&lt;li&gt;VM detection flag&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Data uploaded to &lt;code&gt;/file-manage&lt;/code&gt;:

&lt;ul&gt;
&lt;li&gt;file contents&lt;/li&gt;
&lt;li&gt;filename&lt;/li&gt;
&lt;li&gt;path&lt;/li&gt;
&lt;li&gt;system identifier&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;File types and stores targeted locally:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.pem&lt;/code&gt;, &lt;code&gt;.key&lt;/code&gt;, &lt;code&gt;.cer&lt;/code&gt;, &lt;code&gt;.secret&lt;/code&gt;, &lt;code&gt;.xlsx&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;browser profile databases&lt;/li&gt;
&lt;li&gt;Microsoft Sticky Notes data&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this was easy to miss
&lt;/h2&gt;

&lt;p&gt;The repo looked like a regular Next.js storefront at a glance.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;package.json&lt;/code&gt; was mostly boring. The app structure looked normal. The assets looked like flags. The malicious code was buried in a runtime path that almost nobody checks unless they are being cautious on purpose.&lt;/p&gt;

&lt;p&gt;That is the lesson here: malicious code does not have to live in &lt;code&gt;node_modules&lt;/code&gt;, and it does not have to look obviously hostile. Sometimes it hides in the things you think are static content.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I told myself while reviewing it
&lt;/h2&gt;

&lt;p&gt;I kept repeating one rule: if a codebase wants to run something dynamically at startup, I need to know exactly why.&lt;/p&gt;

&lt;p&gt;The moment I saw:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an obfuscated loader&lt;/li&gt;
&lt;li&gt;base64 fragments hidden across image assets&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;eval()&lt;/code&gt; on decoded content&lt;/li&gt;
&lt;li&gt;network calls to a hardcoded remote host&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I stopped treating it like a normal assessment and started treating it like an incident.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would advise anyone else to do
&lt;/h2&gt;

&lt;p&gt;If a Discord recruiter or random client sends you a repo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check &lt;code&gt;package.json&lt;/code&gt; first, but do not stop there.&lt;/li&gt;
&lt;li&gt;Inspect the runtime entrypoint, not just the UI code.&lt;/li&gt;
&lt;li&gt;Search for &lt;code&gt;eval&lt;/code&gt;, &lt;code&gt;new Function&lt;/code&gt;, &lt;code&gt;exec&lt;/code&gt;, &lt;code&gt;spawn&lt;/code&gt;, and startup hooks.&lt;/li&gt;
&lt;li&gt;Look inside static assets if the code mentions them.&lt;/li&gt;
&lt;li&gt;If the repo uses comments, weird strings, or base64-looking fragments, assume it may be encoded payload data until proven otherwise.&lt;/li&gt;
&lt;li&gt;Never run the project on your main machine before you understand the startup path.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Flow Diagram
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server.js
  ↓
lib/serverStartup.js
  ↓
lib/startupLogs.js
  ↓
public/flags/*.svg
  ↓
HTML comment fragments
  ↓
base64 reconstruction
  ↓
eval(payload)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Closing thought
&lt;/h2&gt;

&lt;p&gt;I went in expecting a take-home assessment.&lt;/p&gt;

&lt;p&gt;What I found was a repo that used a clean-looking frontend as cover for a hidden payload loader. The lesson is simple: when something feels off, slow down and inspect the startup path. That is where malware likes to hide.&lt;/p&gt;

&lt;p&gt;If you are job hunting right now, be careful. A polished assessment can still be malicious.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Also,&lt;/strong&gt; currently open to &lt;strong&gt;Fullstack/Backend/AI roles&lt;/strong&gt;.&lt;br&gt;
Preferably the kind where the SVGs are not assembling malware payloads.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>security</category>
      <category>career</category>
      <category>node</category>
    </item>
  </channel>
</rss>
