أضف PackJ إلى سير العمل الخاص بك لتدقيق طلبات السحب الخاصة بك لتبعيات NPM/PYPI/Ruby الخبيثة/المخاطرة.
مدعوم من أدواتنا مفتوحة المصدر.
سوف تعلق Packj على العلاقات العامة إذا تم العثور على أي تبعيات محفوفة بالمخاطر. انظر مثال سحب طلب سحب التدقيق.

فقط أضف ما يلي إلى سير العمل الخاص بك:
- name : Packj Security Audit
uses : ossillate-inc/[email protected]
with :
# TODO: replace with your dependency files in the repo
DEPENDENCY_FILES : pypi:requirements.txt,npm:package.json,rubygems:Gemfile
REPO_TOKEN : ${{ secrets.GITHUB_TOKEN } # This is a basic workflow to help you get started with Actions
name : Packj security audit
# Controls when the workflow will run
on :
pull_request :
branches :
- main
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs :
# This workflow contains a single job called "packj-audit"
packj-security-audit :
# The type of runner that the job will run on
runs-on : ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps :
# Audit
- name : Audit dependencies
uses : ossillate-inc/[email protected]
with :
# TODO: replace with your dependency files in the repo
DEPENDENCY_FILES : pypi:requirements.txt,npm:package.json,rubygems:Gemfile
REPO_TOKEN : ${{ secrets.GITHUB_TOKEN }}secrets.GITHUB_TOKENfalse .يمكن لـ Packj مراجعة حزم PYPI و NPM و Rubygems . يؤدي:
connect ، exec ) ،open() ، fork() ).يتم وضع علامة على الحزم ذات نطاقات البريد الإلكتروني منتهية الصلاحية ، وفجوة زمنية الإصدار الكبيرة ، وواجهة برمجة التطبيقات الحساسة ، وما إلى ذلك على أنها محفوفة بالمخاطر لأسباب أمنية.
يسترشد تصميم PackJ بدراستنا لـ 651 عينة من البرامج الضارة من هجمات سلسلة توريد البرمجيات المفتوحة المصدر الموثقة. إنه يقوم بمسح أكثر من 40 رمزًا محفوفًا بالمخاطر وسمات بيانات التعريف التي تجعل الحزمة عرضة لهجمات سلسلة التوريد.
| مخاطرة | سبب |
|---|---|
| حزم انتحال شخصية الحزم الشعبية | يقوم الجهات الفاعلة السيئة بتنفيذ هجمات للاتصال بالأطول من قبل Publishng حزم ضارة تنتحر على الحزم الشعبية (على سبيل المثال ، Lodash vs Loadash) |
| الحزم القديمة أو المتخلى | لا تتلقى الحزم القديمة أو غير المقيدة إصلاحات أمان |
| حزمة باستخدام واجهات برمجة التطبيقات الحساسة ، مثل exec و eval | تستخدم البرامج الضارة واجهات برمجة التطبيقات من نظام التشغيل أو وقت تشغيل اللغة لأداء عمليات حساسة (على سبيل المثال ، اقرأ مفاتيح SSH) |
| حزم مع عناوين بريد إلكتروني غير صالحة أو لا | تشير عناوين البريد الإلكتروني غير الصحيحة أو المفقودة إلى عدم وجود 2FA على الحساب ، مما يسهل على الجهات الفاعلة السيئة اختطاف ملكية الحزمة |
| حزم مع ريبو مصدر عام غير صالح أو معدوم | عدم وجود ريبو عام لا يعني أي وسيلة سهلة لمراجعة أو مراجعة رمز المصدر علنًا |
| الحزم التي تحتوي على نقاط ضعف معروفة | يمكن استغلال الثغرات الأمنية المعروفة (CVES) في رمز الحزمة من قبل الجهات الفاعلة السيئة |
يمكن تخصيص Packj لإرسال تنبيهات فقط تنطبق على نموذج التهديد الخاص بك. ما عليك سوى إضافة ملف .packj.yaml في ريبو الخاص بك استنادًا إلى قالبنا (أدناه) وتمكين/تعطيل التنبيهات التي تهمك.
# # Audit policies # audit: # # Risk alerts (enable or disable according to your threat model) # alerts: # # category: malicious packages (publicly known and unknown) # malicious: contains known malware: - reason: package is known to contain a dangerous malware - enabled: true typo-squatting or repo-jacking package: - reason: package impersonates another popular package to propagate malware - enabled: true # # alert category: packages vulnerable to code exploits # vulnerable: contains known vulnerabilities: - reason: known vulnerabilities (CVEs) in package code could be exploited - enabled: true # # packages with undesirable or "risky" attributes # undesirable: package is old or abandoned: - reason: old or abandoned packages receive no security updates and are risky - enabled: true invalid or no author email: - reason: a package with lack of or invalid author email suggests 2FA not enabled - enabled: true invalid or no homepage: - reason: a package with no or invalid homepage may not be preferable - enabled: false no source repo: - reason: lack of public source repo may suggest malicious intention - enabled: true fewer downloads: - reason: a package with few downloads may not be preferable - enabled: true no or insufficient readme: - reason: a package with lack of documentation may not be preferable - enabled: false fewer versions or releases: - reason: few versions suggest unstable or inactive project - enabled: true too many dependencies: - reason: too many dependencies increase attack surface - enabled: false version release after a long gap: - reason: a release after a long time may indicate account hijacking - enabled: false contains custom installation hooks: - reason: custom installation hooks may download or execute malicious code - enabled: false # WIP # # type: repo stats # few source repo stars: - reason: a package with few repo stars may not be preferable - enabled: false few source repo forks: - reason: a package with few repo forks may not be preferable - enabled: false forked source repo: - reason: a forked copy of a popular package may contain malicious code - enabled: true # # type: APIs and permissions # generates new code: - reason: package generates new code at runtime, which could be malicious - enabled: false forks or exits OS processes: - reason: package spawns new operating system processes, which could be malicious - enabled: false accesses obfuscated (hidden) code: - enabled: true accesses environment variables: - enabled: false changes system/environment variables: - enabled: false accesses files and dirs: - enabled: false communicates with external network: - enabled: false reads user input: - enabled: false sandbox: rules: # # File system (allow or block accesses to file/dirs) # # ~/ represents home dir # . represents cwd dir # # NOTE: only ONE 'allow' and 'block' lines are allowed # fs: # TODO: customize as per your threat model # block access to home dir and all other locations (except the ones below) block: ~/, / allow: ., ~/.cache, ~/.npm, ~/.local, ~/.ruby, /tmp, /proc, /etc, /var, /bin, /usr/include, /usr/local, /usr/bin, /usr/lib, /usr/share, /lib # # Network (allow or block domains/ports) # # NOTE: only ONE 'allow' and 'block' lines are allowed # network: # TODO: customize as per your threat model # block all external network communication (except the ones below) block: 0.0.0.0 # For installing PyPI, Rubygems, and NPM packages allow: pythonhosted.org:443, pypi.org:443, rubygems.org:443, npmjs.org:0, npmjs.com:0