220 karma · joined July 8, 2015
Building https://packj.dev - a security firewall for your open-source dependencies to protect against typo-squatting, dependency confusion, and Solarwinds-like supply-chain attacks: https://github.com/ossillate-inc/packj
Creator of ExtFUSE (eBPF + FUSE) and SandFS [available for consulting]: https://github.com/extfuse/extfuse https://github.com/sandfs/sandfs.github.io
https://twitter.com/ashishbijlani https://www.linkedin.com/in/ashishbijlani/
first.last@<popular-google-service.com>
Then, how about using AWS Lambda for your use case?
ExtFUSE (optimized FUSE with eBPF) [1] can offer you much higher performance. It caches metadata in the kernel to avoid lookups in user space. Disclaimer: I built it.
1. http://github.com/ossillate-inc/packj flags vulnerable/malicious NPM/PyPI/Rubygems/Cargo/Packagist packages. I'm the lead dev.
Disclaimer: I'm the lead developer.
1. http://github.com/ossillate-inc/packj flags vulnerable/malicious NPM/PyPI/Rubygems packages.
1. https://github.com/ossillate-inc/packj flags risky/malicious NPM/PyPI/Ruby dependencies
1. https://github.com/ossillate-inc/packj flags malicious/risky open-source dependencies.
We're working on making it similar to email spam. Will post more soon. Meanwhile, we welcome changes that can make it less noisy for the community.
[Edit:] one can specify Github API token to get around rate limiting. We'd deeply appreciate if could create an issue for this on the repo.
Having said that, obfuscated code (e.g., base64 encoded) or runtime payloads (e.g., downloaded from pastebin) will not be analyzed with static analysis, but it will tell you if the recent package version uses base64 or exec APIs in the code (file/line) for you to take a deeper look. We've some ideas on runtime lightweight sandboxing, and will eventually implement those.
That's exactly where a tool like Packj can help. It can cut the digging time down significantly. Auditing hundreds of direct/transitive dependencies manually is impractical, but Packj can quickly point out a "risky" behavior (file and line number). Using obfuscation to hide malicious code itself is a suspicious behavior, which is flagged. After all, we have to start somewhere.
- It analyzes Python/NPM/Rubygems packages for several risky code and attributes such as Network/File permissions, expired email domains, data exfiltration, mismatching repo code vs packaged code (provenance)
- Auditing hundreds of direct/transitive dependencies manually is impractical, but Packj can quickly point out if a package accesses sensitive files (e.g., SSH keys), spawns shell, sends telemetry info, is abandoned, lacks 2FA, etc.
- It can be customized to your threat model by commenting out alerts that don't apply.
- We found a bunch of malicious packages on PyPI using the tool, which have now been taken down; a few are listed here https://packj.dev/malware