<?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: Sebastian Vaduva</title>
    <description>The latest articles on DEV Community by Sebastian Vaduva (@sebivaduva).</description>
    <link>https://dev.to/sebivaduva</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%2F922462%2Faff0f55e-efda-40b4-9a85-13551bbb7f3e.jpeg</url>
      <title>DEV Community: Sebastian Vaduva</title>
      <link>https://dev.to/sebivaduva</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sebivaduva"/>
    <language>en</language>
    <item>
      <title>Sinkchart - open source visualisation tool for your JS dependencies</title>
      <dc:creator>Sebastian Vaduva</dc:creator>
      <pubDate>Thu, 10 Nov 2022 14:21:26 +0000</pubDate>
      <link>https://dev.to/sebivaduva/sinkchart-open-source-visualisation-tool-for-your-js-dependencies-ndo</link>
      <guid>https://dev.to/sebivaduva/sinkchart-open-source-visualisation-tool-for-your-js-dependencies-ndo</guid>
      <description>&lt;p&gt;Understanding and visualising is critical to better understand your app's structure and more importantly - package vulnerabilities. &lt;/p&gt;

&lt;p&gt;This is why we've created &lt;a href="https://github.com/sandworm-hq/sinkchart"&gt;Sinkchart&lt;/a&gt; - beautiful Visualizations For Your App's Dependencies &lt;/p&gt;

&lt;p&gt;Sinkchart offers two types of visualisations: Treemap and Tree &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Treemap: *&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Node colors represent the dependency depth;&lt;/li&gt;
&lt;li&gt;Node surface represents the size of the corresponding directory under node_modules;&lt;/li&gt;
&lt;li&gt;A dotted pattern in a node background means the package is a shared dependency, required by multiple packages, and present multiple times in the chart;&lt;/li&gt;
&lt;li&gt;Shared dependency sizes are added to every dependent package, to represent the independent size structure properly; hence, the displayed size might be larger than the actual size on disk;&lt;/li&gt;
&lt;li&gt;A red package background means the package has direct vulnerabilities;&lt;/li&gt;
&lt;li&gt;A purple package background means the package depends on other vulnerable packages;&lt;/li&gt;
&lt;li&gt;Click on a node to make the tooltip persist; click outside to close it;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When representing deep dependencies, the surface area of certain packages might reach zero, making them invisible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vhetYrZV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3v17tj529okdwp8p419f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vhetYrZV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3v17tj529okdwp8p419f.png" alt="Image description" width="880" height="903"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tree:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Nodes are grouped by color based on the root dependency that they belong to;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Red text in a package name means the package has direct vulnerabilities;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Purple text in a package name means the package depends on other vulnerable packages;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on a node to make the tooltip persist; click outside to close it;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By default, the tree chart has a maximum depth of 7, meaning only seven levels of dependencies will be represented, to keep the output readable; you can override this using the --md option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pkaWHYDM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/85z73iro8o0frz578d2c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pkaWHYDM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/85z73iro8o0frz578d2c.png" alt="Image description" width="880" height="687"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are some samples of very popular packages: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apollo Client 3.7.1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://sandworm-assets.s3.amazonaws.com/sinkchart/demos/apollo%403.7.1-tree.svg"&gt;Tree&lt;/a&gt;&lt;br&gt;
&lt;a href="https://sandworm-assets.s3.amazonaws.com/sinkchart/demos/apollo%403.7.1-treemap.svg"&gt;Treemap&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nest.js 9.1.2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://sandworm-assets.s3.amazonaws.com/sinkchart/demos/nest%409.1.2-tree.svg"&gt;Tree&lt;/a&gt;&lt;br&gt;
&lt;a href="https://sandworm-assets.s3.amazonaws.com/sinkchart/demos/nest%409.1.2-treemap.svg"&gt;Treemap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*Webpack 5.74.0&lt;br&gt;
&lt;a href="https://sandworm-assets.s3.amazonaws.com/sinkchart/demos/webpack%405.74.0-tree.svg"&gt;Tree&lt;/a&gt;&lt;br&gt;
&lt;a href="https://sandworm-assets.s3.amazonaws.com/sinkchart/demos/webpack%405.74.0-treemap.svg"&gt;Treemap&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;You can check out your own's app Tree structure and Treemap visualisation - install Sinkchart now: yarn global add sinkchart # or npm install -g sinkchart&lt;/p&gt;

</description>
      <category>security</category>
      <category>opensource</category>
      <category>javascript</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Sandworm.JS: sandboxing &amp; malware detection for npm packages</title>
      <dc:creator>Sebastian Vaduva</dc:creator>
      <pubDate>Tue, 13 Sep 2022 14:59:33 +0000</pubDate>
      <link>https://dev.to/sebivaduva/sandwormjs-sandboxing-malware-detection-for-npm-packages-3e1o</link>
      <guid>https://dev.to/sebivaduva/sandwormjs-sandboxing-malware-detection-for-npm-packages-3e1o</guid>
      <description>&lt;p&gt;Sandworm.JS is a sandboxing &amp;amp; malware detection tool for npm packages&lt;a href="https://github.com/sandworm-hq"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rather than relying on CVE advisories, Sandworm watches lower-level APIs like the Node VM and browser APIs like DOM manipulation, fetch, etc., and throws when a package unexpectedly accesses these APIs. &lt;/p&gt;

&lt;p&gt;While this won't protect against all classes of vulnerabilities, it assures that your project is safe from hand-crafted, zero-day vulnerabilities that leave your data open to attack until a CVE is issued and a fix is published.&lt;br&gt;
Most tools in this space currently use static analysis to scan a package's source and infer potential threats by looking at code patterns, invoked methods, or loaded modules. &lt;/p&gt;

&lt;p&gt;However, it's generally simple to trick such analysis tools using various obfuscation techniques. Static analysis is, therefore, not a definitive security solution and should be used in tandem with dynamic tools like Sandworm.&lt;/p&gt;

&lt;p&gt;Sandworm does dynamic analysis in the runtime - it knows about what happens when it happens:&lt;br&gt;
It can't let you know about possible vulnerabilities before it sees the code run;&lt;br&gt;
It also can't capture information about "dormant" code that doesn't get executed;&lt;/p&gt;

&lt;p&gt;No obfuscation or workaround can fool our interceptors, though: as soon as any code segment attempts to invoke a sensitive method, Sandworm will capture that call and be able to allow or deny access.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>security</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
