Repository files navigation

Salus

Salus: Guardian of Code Safety and Security

CircleCI

🔍 Overview

Salus, named after the Roman goddess of protection, is a tool for coordinating the execution of security scanners. You can run Salus on a repository via the Docker daemon and it will determine which scanners are relevant, run them and provide the output. Most scanners are other mature open source projects which we include directly in the container.

# Navigate to the root directory of the project you want to run Salus oncd /path/to/repo
# Run the following line while in the root directory (No edits necessary)
docker run --rm -t -v $(pwd):/home/repo coinbase/salus

Salus is particularly useful for CI/CD pipelines because it becomes a centralized place to coordinate scanning across a large fleet of repositories. Typically, scanners are configured at the repository level for each project. This means that when making org wide changes to how the scanners are run, each repository must be updated. Instead, you can update Salus and all builds will instantly inherit the change.

Salus supports powerful configuration that allows for global defaults and local tweaks. Finally, Salus can report metrics on each repository, such as what packages are included or what concerns exist. These reports can be centrally evaluated in your infrastructure to allow for scalable security tracking.

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

Supported Scanners

  • BundleAudit - Execution of bundle-audit, looks for CVEs in ruby gem dependencies.
  • Brakeman - Execution of Brakeman, looks for vulnerable code in Rails projects.
  • npm audit - Execution of npm audit which looks for CVEs in node module dependencies.
  • yarn audit - Execution of yarn audit which looks for CVEs in node module dependencies.
  • PatternSearch - Looks for certain strings in a project that might be dangerous or could require that certain strings be present.

Salus also parses dependency files and reports on what libraries and version are being used in any given project. This can be useful for tracking dependencies across your fleet.The currently supported languages are:

  • Ruby
  • Node
  • Python
  • Go

Sometimes it's necessary to whitelist certain CVEs that Salus detects. The docs/scanners directory explains how to do so for each scanner that Salus supports.

If you would like to build customer scanners or support more languages that are not currenclty supported, you can use this method of building custom Salus images.

CircleCI Integration

Salus can be integrated with CircleCI by using a public orb. All Salus configuration options are supported, and defaults are the same as for Salus itself.

Example CircleCI config.yml:

version: 2.1
orbs:
salus: federacy/salus@2.6.2
workflows:
main:
jobs:
- salus/scan

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

👷‍♂️ Development

Contribution to this project is extremely welcome and it's our sincere hope that the work we've done to this point only serves as a foundation for allowing the security/development communities as a whole to come together to improve the security of everyone's infrastructure.

You can read more about getting your development environment set up, or the architecture of Salus.

📃 License

This project is available open source under the terms of the Apache 2.0 License.

About

Security scanner coordinator

Resources

Contributing

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Salus

Salus: Guardian of Code Safety and Security

CircleCI

🔍 Overview

Salus, named after the Roman goddess of protection, is a tool for coordinating the execution of security scanners. You can run Salus on a repository via the Docker daemon and it will determine which scanners are relevant, run them and provide the output. Most scanners are other mature open source projects which we include directly in the container.

# Navigate to the root directory of the project you want to run Salus oncd /path/to/repo
# Run the following line while in the root directory (No edits necessary)
docker run --rm -t -v $(pwd):/home/repo coinbase/salus

Salus is particularly useful for CI/CD pipelines because it becomes a centralized place to coordinate scanning across a large fleet of repositories. Typically, scanners are configured at the repository level for each project. This means that when making org wide changes to how the scanners are run, each repository must be updated. Instead, you can update Salus and all builds will instantly inherit the change.

Salus supports powerful configuration that allows for global defaults and local tweaks. Finally, Salus can report metrics on each repository, such as what packages are included or what concerns exist. These reports can be centrally evaluated in your infrastructure to allow for scalable security tracking.

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

Supported Scanners

  • BundleAudit - Execution of bundle-audit, looks for CVEs in ruby gem dependencies.
  • Brakeman - Execution of Brakeman, looks for vulnerable code in Rails projects.
  • npm audit - Execution of npm audit which looks for CVEs in node module dependencies.
  • yarn audit - Execution of yarn audit which looks for CVEs in node module dependencies.
  • PatternSearch - Looks for certain strings in a project that might be dangerous or could require that certain strings be present.

Salus also parses dependency files and reports on what libraries and version are being used in any given project. This can be useful for tracking dependencies across your fleet.The currently supported languages are:

  • Ruby
  • Node
  • Python
  • Go

Sometimes it's necessary to whitelist certain CVEs that Salus detects. The docs/scanners directory explains how to do so for each scanner that Salus supports.

If you would like to build customer scanners or support more languages that are not currenclty supported, you can use this method of building custom Salus images.

CircleCI Integration

Salus can be integrated with CircleCI by using a public orb. All Salus configuration options are supported, and defaults are the same as for Salus itself.

Example CircleCI config.yml:

version: 2.1
orbs:
salus: federacy/salus@2.6.2
workflows:
main:
jobs:
- salus/scan

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

👷‍♂️ Development

Contribution to this project is extremely welcome and it's our sincere hope that the work we've done to this point only serves as a foundation for allowing the security/development communities as a whole to come together to improve the security of everyone's infrastructure.

You can read more about getting your development environment set up, or the architecture of Salus.

📃 License

This project is available open source under the terms of the Apache 2.0 License.

About

Security scanner coordinator

Resources

Contributing

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Salus

Salus: Guardian of Code Safety and Security

CircleCI

🔍 Overview

Salus, named after the Roman goddess of protection, is a tool for coordinating the execution of security scanners. You can run Salus on a repository via the Docker daemon and it will determine which scanners are relevant, run them and provide the output. Most scanners are other mature open source projects which we include directly in the container.

# Navigate to the root directory of the project you want to run Salus oncd /path/to/repo
# Run the following line while in the root directory (No edits necessary)
docker run --rm -t -v $(pwd):/home/repo coinbase/salus

Salus is particularly useful for CI/CD pipelines because it becomes a centralized place to coordinate scanning across a large fleet of repositories. Typically, scanners are configured at the repository level for each project. This means that when making org wide changes to how the scanners are run, each repository must be updated. Instead, you can update Salus and all builds will instantly inherit the change.

Salus supports powerful configuration that allows for global defaults and local tweaks. Finally, Salus can report metrics on each repository, such as what packages are included or what concerns exist. These reports can be centrally evaluated in your infrastructure to allow for scalable security tracking.

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

Supported Scanners

  • BundleAudit - Execution of bundle-audit, looks for CVEs in ruby gem dependencies.
  • Brakeman - Execution of Brakeman, looks for vulnerable code in Rails projects.
  • npm audit - Execution of npm audit which looks for CVEs in node module dependencies.
  • yarn audit - Execution of yarn audit which looks for CVEs in node module dependencies.
  • PatternSearch - Looks for certain strings in a project that might be dangerous or could require that certain strings be present.

Salus also parses dependency files and reports on what libraries and version are being used in any given project. This can be useful for tracking dependencies across your fleet.The currently supported languages are:

  • Ruby
  • Node
  • Python
  • Go

Sometimes it's necessary to whitelist certain CVEs that Salus detects. The docs/scanners directory explains how to do so for each scanner that Salus supports.

If you would like to build customer scanners or support more languages that are not currenclty supported, you can use this method of building custom Salus images.

CircleCI Integration

Salus can be integrated with CircleCI by using a public orb. All Salus configuration options are supported, and defaults are the same as for Salus itself.

Example CircleCI config.yml:

version: 2.1
orbs:
salus: federacy/salus@2.6.2
workflows:
main:
jobs:
- salus/scan

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

👷‍♂️ Development

Contribution to this project is extremely welcome and it's our sincere hope that the work we've done to this point only serves as a foundation for allowing the security/development communities as a whole to come together to improve the security of everyone's infrastructure.

You can read more about getting your development environment set up, or the architecture of Salus.

📃 License

This project is available open source under the terms of the Apache 2.0 License.

About

Security scanner coordinator

Resources

Contributing

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Salus

Salus: Guardian of Code Safety and Security

CircleCI

🔍 Overview

Salus, named after the Roman goddess of protection, is a tool for coordinating the execution of security scanners. You can run Salus on a repository via the Docker daemon and it will determine which scanners are relevant, run them and provide the output. Most scanners are other mature open source projects which we include directly in the container.

# Navigate to the root directory of the project you want to run Salus oncd /path/to/repo
# Run the following line while in the root directory (No edits necessary)
docker run --rm -t -v $(pwd):/home/repo coinbase/salus

Salus is particularly useful for CI/CD pipelines because it becomes a centralized place to coordinate scanning across a large fleet of repositories. Typically, scanners are configured at the repository level for each project. This means that when making org wide changes to how the scanners are run, each repository must be updated. Instead, you can update Salus and all builds will instantly inherit the change.

Salus supports powerful configuration that allows for global defaults and local tweaks. Finally, Salus can report metrics on each repository, such as what packages are included or what concerns exist. These reports can be centrally evaluated in your infrastructure to allow for scalable security tracking.

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

Supported Scanners

  • BundleAudit - Execution of bundle-audit, looks for CVEs in ruby gem dependencies.
  • Brakeman - Execution of Brakeman, looks for vulnerable code in Rails projects.
  • npm audit - Execution of npm audit which looks for CVEs in node module dependencies.
  • yarn audit - Execution of yarn audit which looks for CVEs in node module dependencies.
  • PatternSearch - Looks for certain strings in a project that might be dangerous or could require that certain strings be present.

Salus also parses dependency files and reports on what libraries and version are being used in any given project. This can be useful for tracking dependencies across your fleet.The currently supported languages are:

  • Ruby
  • Node
  • Python
  • Go

Sometimes it's necessary to whitelist certain CVEs that Salus detects. The docs/scanners directory explains how to do so for each scanner that Salus supports.

If you would like to build customer scanners or support more languages that are not currenclty supported, you can use this method of building custom Salus images.

CircleCI Integration

Salus can be integrated with CircleCI by using a public orb. All Salus configuration options are supported, and defaults are the same as for Salus itself.

Example CircleCI config.yml:

version: 2.1
orbs:
salus: federacy/salus@2.6.2
workflows:
main:
jobs:
- salus/scan

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

👷‍♂️ Development

Contribution to this project is extremely welcome and it's our sincere hope that the work we've done to this point only serves as a foundation for allowing the security/development communities as a whole to come together to improve the security of everyone's infrastructure.

You can read more about getting your development environment set up, or the architecture of Salus.

📃 License

This project is available open source under the terms of the Apache 2.0 License.

About

Security scanner coordinator

Resources

Contributing

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Salus

Salus: Guardian of Code Safety and Security

CircleCI

🔍 Overview

Salus, named after the Roman goddess of protection, is a tool for coordinating the execution of security scanners. You can run Salus on a repository via the Docker daemon and it will determine which scanners are relevant, run them and provide the output. Most scanners are other mature open source projects which we include directly in the container.

# Navigate to the root directory of the project you want to run Salus oncd /path/to/repo
# Run the following line while in the root directory (No edits necessary)
docker run --rm -t -v $(pwd):/home/repo coinbase/salus

Salus is particularly useful for CI/CD pipelines because it becomes a centralized place to coordinate scanning across a large fleet of repositories. Typically, scanners are configured at the repository level for each project. This means that when making org wide changes to how the scanners are run, each repository must be updated. Instead, you can update Salus and all builds will instantly inherit the change.

Salus supports powerful configuration that allows for global defaults and local tweaks. Finally, Salus can report metrics on each repository, such as what packages are included or what concerns exist. These reports can be centrally evaluated in your infrastructure to allow for scalable security tracking.

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

Supported Scanners

  • BundleAudit - Execution of bundle-audit, looks for CVEs in ruby gem dependencies.
  • Brakeman - Execution of Brakeman, looks for vulnerable code in Rails projects.
  • npm audit - Execution of npm audit which looks for CVEs in node module dependencies.
  • yarn audit - Execution of yarn audit which looks for CVEs in node module dependencies.
  • PatternSearch - Looks for certain strings in a project that might be dangerous or could require that certain strings be present.

Salus also parses dependency files and reports on what libraries and version are being used in any given project. This can be useful for tracking dependencies across your fleet.The currently supported languages are:

  • Ruby
  • Node
  • Python
  • Go

Sometimes it's necessary to whitelist certain CVEs that Salus detects. The docs/scanners directory explains how to do so for each scanner that Salus supports.

If you would like to build customer scanners or support more languages that are not currenclty supported, you can use this method of building custom Salus images.

CircleCI Integration

Salus can be integrated with CircleCI by using a public orb. All Salus configuration options are supported, and defaults are the same as for Salus itself.

Example CircleCI config.yml:

version: 2.1
orbs:
salus: federacy/salus@2.6.2
workflows:
main:
jobs:
- salus/scan

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

👷‍♂️ Development

Contribution to this project is extremely welcome and it's our sincere hope that the work we've done to this point only serves as a foundation for allowing the security/development communities as a whole to come together to improve the security of everyone's infrastructure.

You can read more about getting your development environment set up, or the architecture of Salus.

📃 License

This project is available open source under the terms of the Apache 2.0 License.

About

Security scanner coordinator

Resources

Contributing

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Salus

Salus: Guardian of Code Safety and Security

CircleCI

🔍 Overview

Salus, named after the Roman goddess of protection, is a tool for coordinating the execution of security scanners. You can run Salus on a repository via the Docker daemon and it will determine which scanners are relevant, run them and provide the output. Most scanners are other mature open source projects which we include directly in the container.

# Navigate to the root directory of the project you want to run Salus oncd /path/to/repo
# Run the following line while in the root directory (No edits necessary)
docker run --rm -t -v $(pwd):/home/repo coinbase/salus

Salus is particularly useful for CI/CD pipelines because it becomes a centralized place to coordinate scanning across a large fleet of repositories. Typically, scanners are configured at the repository level for each project. This means that when making org wide changes to how the scanners are run, each repository must be updated. Instead, you can update Salus and all builds will instantly inherit the change.

Salus supports powerful configuration that allows for global defaults and local tweaks. Finally, Salus can report metrics on each repository, such as what packages are included or what concerns exist. These reports can be centrally evaluated in your infrastructure to allow for scalable security tracking.

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

Supported Scanners

  • BundleAudit - Execution of bundle-audit, looks for CVEs in ruby gem dependencies.
  • Brakeman - Execution of Brakeman, looks for vulnerable code in Rails projects.
  • npm audit - Execution of npm audit which looks for CVEs in node module dependencies.
  • yarn audit - Execution of yarn audit which looks for CVEs in node module dependencies.
  • PatternSearch - Looks for certain strings in a project that might be dangerous or could require that certain strings be present.

Salus also parses dependency files and reports on what libraries and version are being used in any given project. This can be useful for tracking dependencies across your fleet.The currently supported languages are:

  • Ruby
  • Node
  • Python
  • Go

Sometimes it's necessary to whitelist certain CVEs that Salus detects. The docs/scanners directory explains how to do so for each scanner that Salus supports.

If you would like to build customer scanners or support more languages that are not currenclty supported, you can use this method of building custom Salus images.

CircleCI Integration

Salus can be integrated with CircleCI by using a public orb. All Salus configuration options are supported, and defaults are the same as for Salus itself.

Example CircleCI config.yml:

version: 2.1
orbs:
salus: federacy/salus@2.6.2
workflows:
main:
jobs:
- salus/scan

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

👷‍♂️ Development

Contribution to this project is extremely welcome and it's our sincere hope that the work we've done to this point only serves as a foundation for allowing the security/development communities as a whole to come together to improve the security of everyone's infrastructure.

You can read more about getting your development environment set up, or the architecture of Salus.

📃 License

This project is available open source under the terms of the Apache 2.0 License.

About

Security scanner coordinator

Resources

Contributing

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Salus

Salus: Guardian of Code Safety and Security

CircleCI

🔍 Overview

Salus, named after the Roman goddess of protection, is a tool for coordinating the execution of security scanners. You can run Salus on a repository via the Docker daemon and it will determine which scanners are relevant, run them and provide the output. Most scanners are other mature open source projects which we include directly in the container.

# Navigate to the root directory of the project you want to run Salus oncd /path/to/repo
# Run the following line while in the root directory (No edits necessary)
docker run --rm -t -v $(pwd):/home/repo coinbase/salus

Salus is particularly useful for CI/CD pipelines because it becomes a centralized place to coordinate scanning across a large fleet of repositories. Typically, scanners are configured at the repository level for each project. This means that when making org wide changes to how the scanners are run, each repository must be updated. Instead, you can update Salus and all builds will instantly inherit the change.

Salus supports powerful configuration that allows for global defaults and local tweaks. Finally, Salus can report metrics on each repository, such as what packages are included or what concerns exist. These reports can be centrally evaluated in your infrastructure to allow for scalable security tracking.

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

Supported Scanners

  • BundleAudit - Execution of bundle-audit, looks for CVEs in ruby gem dependencies.
  • Brakeman - Execution of Brakeman, looks for vulnerable code in Rails projects.
  • npm audit - Execution of npm audit which looks for CVEs in node module dependencies.
  • yarn audit - Execution of yarn audit which looks for CVEs in node module dependencies.
  • PatternSearch - Looks for certain strings in a project that might be dangerous or could require that certain strings be present.

Salus also parses dependency files and reports on what libraries and version are being used in any given project. This can be useful for tracking dependencies across your fleet.The currently supported languages are:

  • Ruby
  • Node
  • Python
  • Go

Sometimes it's necessary to whitelist certain CVEs that Salus detects. The docs/scanners directory explains how to do so for each scanner that Salus supports.

If you would like to build customer scanners or support more languages that are not currenclty supported, you can use this method of building custom Salus images.

CircleCI Integration

Salus can be integrated with CircleCI by using a public orb. All Salus configuration options are supported, and defaults are the same as for Salus itself.

Example CircleCI config.yml:

version: 2.1
orbs:
salus: federacy/salus@2.6.2
workflows:
main:
jobs:
- salus/scan

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

👷‍♂️ Development

Contribution to this project is extremely welcome and it's our sincere hope that the work we've done to this point only serves as a foundation for allowing the security/development communities as a whole to come together to improve the security of everyone's infrastructure.

You can read more about getting your development environment set up, or the architecture of Salus.

📃 License

This project is available open source under the terms of the Apache 2.0 License.

About

Security scanner coordinator

Resources

Contributing

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Salus

Salus: Guardian of Code Safety and Security

CircleCI

🔍 Overview

Salus, named after the Roman goddess of protection, is a tool for coordinating the execution of security scanners. You can run Salus on a repository via the Docker daemon and it will determine which scanners are relevant, run them and provide the output. Most scanners are other mature open source projects which we include directly in the container.

# Navigate to the root directory of the project you want to run Salus oncd /path/to/repo
# Run the following line while in the root directory (No edits necessary)
docker run --rm -t -v $(pwd):/home/repo coinbase/salus

Salus is particularly useful for CI/CD pipelines because it becomes a centralized place to coordinate scanning across a large fleet of repositories. Typically, scanners are configured at the repository level for each project. This means that when making org wide changes to how the scanners are run, each repository must be updated. Instead, you can update Salus and all builds will instantly inherit the change.

Salus supports powerful configuration that allows for global defaults and local tweaks. Finally, Salus can report metrics on each repository, such as what packages are included or what concerns exist. These reports can be centrally evaluated in your infrastructure to allow for scalable security tracking.

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

Supported Scanners

  • BundleAudit - Execution of bundle-audit, looks for CVEs in ruby gem dependencies.
  • Brakeman - Execution of Brakeman, looks for vulnerable code in Rails projects.
  • npm audit - Execution of npm audit which looks for CVEs in node module dependencies.
  • yarn audit - Execution of yarn audit which looks for CVEs in node module dependencies.
  • PatternSearch - Looks for certain strings in a project that might be dangerous or could require that certain strings be present.

Salus also parses dependency files and reports on what libraries and version are being used in any given project. This can be useful for tracking dependencies across your fleet.The currently supported languages are:

  • Ruby
  • Node
  • Python
  • Go

Sometimes it's necessary to whitelist certain CVEs that Salus detects. The docs/scanners directory explains how to do so for each scanner that Salus supports.

If you would like to build customer scanners or support more languages that are not currenclty supported, you can use this method of building custom Salus images.

CircleCI Integration

Salus can be integrated with CircleCI by using a public orb. All Salus configuration options are supported, and defaults are the same as for Salus itself.

Example CircleCI config.yml:

version: 2.1
orbs:
salus: federacy/salus@2.6.2
workflows:
main:
jobs:
- salus/scan

Using Salus in your Repo

For your given CI, update the config file to run salus. In circle, it will look like this:

docker run --rm -t -v $(pwd):/home/repo coinbase/salus

coinbase/salus pulls the docker image

👷‍♂️ Development

Contribution to this project is extremely welcome and it's our sincere hope that the work we've done to this point only serves as a foundation for allowing the security/development communities as a whole to come together to improve the security of everyone's infrastructure.

You can read more about getting your development environment set up, or the architecture of Salus.

📃 License

This project is available open source under the terms of the Apache 2.0 License.

About

Security scanner coordinator

Resources

Contributing

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages