Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
packj — أداة تحليل ثابتة وديناميكية تقوم بتدقيق الحزم مفتوحة المصدر بحثًا عن السمات الخبيثة والضعيفة والخطيرة، مع تثبيت في وضع الحماية لمنع هجمات سلسلة التوريد. | Kitploit
أدوات/GitHubGitHub/ossillate-inc/packj
التحليل الثابتماسحات الثغرات الأمنيةالتحليل الديناميكي (عزل)تحليل البرمجيات الخبيثةDevSecOpsأمن سلسلة التوريد
GitHubossillate-inc/packj

packj

أداة تحليل ثابتة وديناميكية تقوم بتدقيق الحزم مفتوحة المصدر بحثًا عن السمات الخبيثة والضعيفة والخطيرة، مع تثبيت في وضع الحماية لمنع هجمات سلسلة التوريد.

عرض المستودع
691371منذ 4 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

  Packj يُعلّم عن الحزم مفتوحة المصدر الخبيثة/الخطيرة

Packj (تُنطق package) هي أداة للمساعدة في تخفيف هجمات سلسلة توريد البرمجيات. يمكنها اكتشاف الحزم الخبيثة، الضعيفة، المهجورة، ذات الأسماء المتشابهة (typo-squatting)، وغيرها من الحزم "الخطيرة" من سجلات الحزم مفتوحة المصدر الشهيرة، مثل NPM وRubyGems وPyPI. يمكن تخصيصها بسهولة لتقليل الضوضاء. بدأ Packj كمشروع بحث دكتوراه ويتم تطويره حاليًا بموجب منح حكومية متنوعة.

GitHub Stars Prs Welcome Github Commit Activity Discord License: AGPL v3 Docker

ملاحظة خادم Packj المستضاف ذاتيًا والعديد من عمليات التكامل قادمة في وقت لاحق من هذا الشهر 👊 تابع هذا المستودع للبقاء على اطلاع.

demo video

المحتويات

  • ابدأ - متاح كصورة Docker وإجراء GitHub وحزم
  • الوظائف - تحليل عميق للكود الثابت/الديناميكي والعزل
  • الأنظمة البيئية المدعومة - NPM، PyPI، Rubygems، PHP، Rust
  • قصتنا - بدأ كمشروع بحث دكتوراه ومدعوم بمنح حكومية
  • لماذا Packj - ماسحات CVE الحالية تفترض أن الكود غير ضار ولا تحلل سلوكه
  • التخصيص - إيقاف التنبيهات وفقًا لنموذج التهديد الخاص بك لتقليل الضوضاء
  • البرامج الضارة التي تم العثور عليها - تم الإبلاغ عن أكثر من 70 حزمة خبيثة من PyPI وRubyGems
  • محادثات وفيديوهات - عروض تقديمية من PyCon وOpenSourceSummit وBlackHAT
  • خريطة الطريق للمشروع - عرض أو اقتراح ميزات جديدة؛ انضم إلى قناة الديسكورد
  • الفريق والتعاون - بقيادة باحثين في الأمن السيبراني من الأوساط الأكاديمية/الصناعية
  • الأسئلة الشائعة - مديري الحزم المدعومين، أسئلة شائعة حول التقنيات، والمزيد

ابدأ

نحن ندعم عدة نماذج للنشر:

1. مشغل GitHub

استخدم Packj لتدقيق التبعيات في طلبات السحب.```yaml

  • name: Packj Security Audit uses: ossillate-inc/packj-[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 }}
root@kitploit:~
عرض على GitHub [marketplace](https://github.com/marketplace/actions/packj-security-audit). مثال [تشغيل PR](https://github.com/ossillate-inc/packj-github-action-demo/pull/3#issuecomment-1274797138).

### 2. صورة Docker (موصى به)

أسرع طريقة لتجربة/اختبار Packj هي باستخدام Docker. كما أن Podman مدعوم للتشغيل المعزول (باستخدام الحاويات).```
docker run -v /tmp:/tmp/packj -it ossillate/packj:latest --help

3. المستودع المصدر

استنساخ هذا المستودع،``` git clone https://github.com/ossillate-inc/packj.git && cd packj

root@kitploit:~
تثبيت التبعيات```
bundle install && pip3 install -r requirements.txt

ابدأ بالمساعدة:``` python3 main.py --help

root@kitploit:~
# الأنظمة البيئية المدعومة #

يمكن لـ Packj مراجعة الحزم المنشورة من سجلات NPM و PyPI و Rust و PHP و Rubygems. دعم Rust و PHP قيد التطوير. نحن نضيف الدعم بنشاط للسجلات.
كما يدعم مراجعة الحزم المحلية (غير المنشورة) لـ NPM و PyPI.

| السجل       | النظام البيئي  | مدعوم            |
| ---------   | ----------   | ----------------- |
| NPM         | JavaScript   | :white_check_mark: |
| PyPI        | Python       | :white_check_mark: |
| Cargo       | Rust         | :white_check_mark: |
| Rubygems    | Ruby         | :white_check_mark: |
| Packagist   | PHP          | :white_check_mark: |
| Docker      | Docker       | :x: |
| Nuget       | .NET         | :white_check_mark: |
| Maven       | Java         | :white_check_mark: |
| Cocoapods   | Swift        | :x: |

# الوظائف #

يقدم Packj الأدوات التالية:

* [التدقيق](#auditing-a-package) - لمراجعة الحزمة بحثًا عن سمات "خطرة".
* [بيئة معزولة](#sandboxed-package-installation) - لتثبيت آمن للحزمة.

## تدقيق الحزمة ##

يقوم Packj بتدقيق حزم البرامج مفتوحة المصدر بحثًا عن سمات "خطرة" تجعلها عرضة لهجمات سلسلة التوريد. على سبيل المثال، الحزم ذات نطاقات البريد الإلكتروني منتهية الصلاحية (تفتقر إلى التحقق بخطوتين)، وفجوة زمنية كبيرة في الإصدار، وواجهات برمجة تطبيقات حساسة أو أذونات وصول، وما إلى ذلك، يتم وضع علامة عليها كخطرة.

يتم دعم تدقيق ما يلي:

- حزم متعددة: `python3 main.py audit -p pypi:requests rubygems:overcommit`
- ملفات التبعيات: `python3 main.py audit -f npm:package.json pypi:requirements.txt`

افتراضيًا، يقوم `audit` فقط بإجراء تحليل ثابت للكود للكشف عن الكود الخطير. يمكنك تمرير العلم `-t` أو `--trace` لإجراء تحليل ديناميكي للكود أيضًا، والذي سيقوم بتثبيت جميع الحزم المطلوبة تحت strace ومراقبة سلوك وقت التثبيت للحزم. يرجى الاطلاع على مثال الإخراج أدناه.

<details>
    <summary><h4>عرض مثال للتشغيل/الإخراج</h4></summary>

    $ docker run -v /tmp:/tmp/packj -it ossillate/packj:latest audit --trace -p npm:browserify

    [+] Fetching 'browserify' from npm..........PASS [ver 17.0.0]
    [+]    Checking package description.........PASS [browser-side require() the node way]
    [+]    Checking release history.............PASS [484 version(s)]
    [+] Checking version........................RISK [702 days old]
    [+]    Checking release time gap............PASS [68 days since last release]
    [+] Checking author.........................PASS [[email protected]]
    [+]    Checking email/domain validity.......RISK [expired author email domain]
    [+] Checking readme.........................PASS [26838 bytes]
    [+] Checking homepage.......................PASS [https://github.com/browserify/browserify#readme]
    [+] Checking downloads......................PASS [2M weekly]
    [+] Checking repo URL.......................PASS [https://github.com/browserify/browserify]
    [+]    Checking repo data...................PASS [stars: 14189, forks: 1244]
    [+]    Checking if repo is a forked copy....PASS [original, not forked]
    [+]    Checking repo description............PASS [browser-side require() the node.js way]
    [+]    Checking repo activity...............PASS [commits: 2290, contributors: 207, tags: 413]
    [+] Checking for CVEs.......................PASS [none found]
    [+] Checking dependencies...................RISK [48 found]
    [+] Downloading package from npm............PASS [163.83 KB]
    [+] Analyzing code..........................RISK [needs 3 perm(s): decode,codegen,file]
    [+] Checking files/funcs....................PASS [429 files (383 .js), 744 funcs, LoC: 9.7K]
    [+] Installing package and tracing code.....PASS [found 5 process,1130 files,22 network syscalls]
    =============================================
    [+] 5 risk(s) found, package is undesirable!
    => Complete report: /tmp/packj_54rbjhgm/report_npm-browserify-17.0.0_hlr1rhcz.json
    {
        "undesirable": [
            "old package: 702 days old",
            "invalid or no author email: expired author email domain",
            "generates new code at runtime",
            "reads files and dirs",
            "forks or exits OS processes",
        ]
    }
</details>

> تحذير: نظرًا لأن الحزم قد تنفذ كودًا خبيثًا أثناء التثبيت، فمن المستحسن استخدام `-t` أو `--trace` فقط عند التشغيل داخل حاوية Docker أو جهاز افتراضي.

يمكن أيضًا إجراء التدقيق في حاويات Docker/Podman. يرجى الاطلاع على تفاصيل السمات الخطرة وكيفية الاستخدام في [README التدقيق](https://github.com/ossillate-inc/packj/blob/main/packj/audit/README.md).

## تثبيت الحزمة في بيئة معزولة ##

يقدم Packj بيئة معزولة خفيفة الوزن من أجل `تثبيت آمن` للحزمة. على وجه التحديد، يمنع الحزم الخبيثة من تسريب البيانات الحساسة، والوصول إلى الملفات الحساسة (مثل مفاتيح SSH)، واستمرار البرامج الضارة.

فهو يعزل نصوص وقت التثبيت، بما في ذلك أي تجميع أصلي. يستخدم **strace** (أي **لا** يتطلب VM/Container).

يرجى الاطلاع على تفاصيل آلية العزل وكيفية الاستخدام في [README العزل](https://github.com/ossillate-inc/packj/blob/main/packj/sandbox/README.md).

<details>
    <summary><h4>عرض مثال للتشغيل/الإخراج</h4></summary>

    $ python3 main.py sandbox gem install overcommit

    Fetching: overcommit-0.59.1.gem (100%)
    Install hooks by running `overcommit --install` in your Git repository
    Successfully installed overcommit-0.59.1
    Parsing documentation for overcommit-0.59.1
    Installing ri documentation for overcommit-0.59.1

    #############################
    # Review summarized activity
    #############################

    [+] Network connections
        [+] DNS (1 IPv4 addresses) at port 53 [rule: ALLOW]
        [+] rubygems.org (4 IPv6 addresses) at port 443 [rule: IPv6 rules not supported]
        [+] rubygems.org (4 IPv4 addresses) at port 443 [rule: ALLOW]
    [+] Filesystem changes
    /
    └── home
        └── ubuntu
            └── .ruby
                ├── gems
                │   ├── iniparse-1.5.0 [new: DIR, 15 files, 46.6K bytes]
                │   ├── rexml-3.2.5 [new: DIR, 77 files, 455.6K bytes]
                │   ├── overcommit-0.59.1 [new: DIR, 252 files, 432.7K bytes]
                │   └── childprocess-4.1.0 [new: DIR, 57 files, 141.2K bytes]
                ├── cache
                │   ├── iniparse-1.5.0.gem [new: FILE, 16.4K bytes]
                │   ├── rexml-3.2.5.gem [new: FILE, 93.2K bytes]
                │   ├── childprocess-4.1.0.gem [new: FILE, 34.3K bytes]
                │   └── overcommit-0.59.1.gem [new: FILE, 84K bytes]
                ├── specifications
                │   ├── rexml-3.2.5.gemspec [new: FILE, 2.7K bytes]
                │   ├── overcommit-0.59.1.gemspec [new: FILE, 1.7K bytes]
                │   ├── childprocess-4.1.0.gemspec [new: FILE, 1.8K bytes]
                │   └── iniparse-1.5.0.gemspec [new: FILE, 1.3K bytes]
                ├── bin
                │   └── overcommit [new: FILE, 622 bytes]
                └── doc
                    ├── iniparse-1.5.0
                    │   └── ri [new: DIR, 119 files, 131.7K bytes]
                    ├── rexml-3.2.5
                    │   └── ri [new: DIR, 836 files, 841K bytes]
                    ├── overcommit-0.59.1
                    │   └── ri [new: DIR, 1046 files, 1.5M bytes]
                    └── childprocess-4.1.0
                        └── ri [new: DIR, 272 files, 297.8K bytes]

    [C]ommit all changes, [Q|q]uit & discard changes, [L|l]ist details:
</details>

# قصتنا

**الملخص** بدأ Packj كمشروع بحث دكتوراه. وهو مدعوم بمنح حكومية مختلفة.

<details>
	<summary><h4>عرض الإجابة الطويلة</h4></summary>

بدأ Packj كمشروع بحث أكاديمي. على وجه التحديد، تعتمد تقنيات تحليل الكود الثابت التي يستخدمها Packj على أحدث الأبحاث في مجال الأمن السيبراني: مشروع [MalOSS](https://github.com/osssanitizer/maloss) من قبل [مجموعتنا](http://cyfi.ece.gatech.edu) البحثية في Georgia Tech.

<a href="https://arxiv.org/pdf/2002.01139v1.pdf" target="_blank">
	<img src="https://assets.kitploit.com/production/public/readmes/5562/c4061028051de04a9aebaf4188c08fdd1bcdb47efa8a818e959d3b3fc7bc5dc7.png" width="300" alt="ورقة أكاديمية">
</a>

Packj مدعوم بمنح كريمة من [NSF](https://www.sbir.gov/node/2083473) و [GRA](https://gra.org/company/227/OSSPolice.html) و [ALInnovate](https://innovatealabama.org).

</details>

# لماذا Packj

**الملخص** تفترض أدوات فحص الثغرات الأمنية الحديثة أن الكود مفتوح المصدر التابع لجهة خارجية هو **غير ضار**. لذلك، كل هذه الأدوات تعالج فقط التهديدات الناتجة عن أخطاء برمجية عرضية في الكود غير الضار (المعروفة باسم CVEs مثل Log4J). إنها **لا** تحمي من هجمات سلسلة التوريد الحديثة للبرامج مثل هجوم Solarwinds القادمة من كود سيئ عن قصد (خبيث) يتم نشره من قبل جهات فاعلة سيئة باستخدام ثغرات جديدة في قناة التوريد، بما في ذلك ارتباك التبعيات، والاصطياد الإملائي، وبرامج الاحتجاج (التخريب)، واختراق الحسابات، والهندسة الاجتماعية. مثال حديث (ديسمبر 2022) هو حزمة PyTorch التي تم اختراقها باستخدام ثغرة ارتباك التبعيات (بدون CVE معين).

لا يقوم Packj فقط بتدقيق CVEs، بل يقوم أيضًا بإجراء تحليل عميق للكود الثابت والديناميكي بالإضافة إلى فحوصات البيانات الوصفية للكشف عن أي سلوك أو سمات "خطرة"، مثل إطلاق شل، واستخدام مفاتيح SSH، وعدم تطابق كود GitHub مع الكود المعبأ (المصدر)، وغياب التحقق بخطوتين، وغيرها الكثير. مثل هذه السمات غير الآمنة لا ت qualify كـ CVEs، ولهذا السبب لا يمكن لأي من الأدوات الحالية وضع علامة عليها. يمكن لـ Packj وضع علامة على التبعيات الخبيثة، والمصيدة إملائيًا، والمهجورة، والضعيفة، وغير الآمنة (الحلقات الضعيفة) في سلسلة التوريد الخاصة بك.

<details>
    <summary><h4>عرض الإجابة الطويلة</h4></summary>

يفترض نموذج التهديد الحالي لسلسلة توريد البرامج **أن** الكود مفتوح المصدر التابع لجهة خارجية غير ضار، وبالتالي، يتم تتبع الثغرات الأمنية فقط للأخطاء البرمجية العرضية (المعروفة باسم CVEs). على هذا النحو، جميع أدوات فحص الثغرات الأمنية مفتوحة المصدر الحالية **تبلغ فقط** عن CVEs المعروفة علنًا وتعالج التهديدات الناتجة عن الأخطاء العرضية في الكود غير الضار.

مثال نموذجي على خطأ برمجي عرضي هو عدم وجود فحص لحدود الإدخال من المستخدم، مما يجعل الكود عرضة لهجمات تجاوز سعة المخزن المؤقت. تشمل الأمثلة الشائعة في العالم الحقيقي Log4J و HeartBleed. يحتاج المهاجمون إلى تطوير استغلال لتفعيل CVEs (على سبيل المثال، حزمة TCP/IP مصممة في حالة HeartBleed أو إدخال مرتفع عدديًا للتسبب في تجاوز سعة المخزن المؤقت). يمكن إصلاح CVEs عن طريق التصحيح أو الترقية إلى إصدار أحدث من المكتبة (على سبيل المثال، الإصدار الأحدث من Log4J يصلح CVE).

لقد **تحول** مشهد التهديد الحديث لسلسلة توريد البرامج بعد هجوم Solarwinds. وجدت الجهات الفاعلة السيئة ثغرات جديدة، ولكن هذه المرة في قناة التوريد، وليس الكود. يتم استغلال هذه الثغرات الجديدة مثل ارتباك التبعيات، والاصطياد الإملائي، وبرامج الاحتجاج (التخريب)، واختراق الحسابات، والهندسة الاجتماعية لنشر البرامج الضارة. تم الإبلاغ عن آلاف الحزم المخترقة على NPM / PyPI / Ruby.

على النقيض من CVEs، فإن البرامج الضارة هي كود سيئ عن قصد (خبيث). علاوة على ذلك، فإن البرامج الضارة بحد ذاتها هي استغلال ولا يمكن تصحيحها أو إصلاحها بالترقية إلى إصدار أحدث. على سبيل المثال، [هجوم ارتباك التبعيات](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) كان ضارًا عن قصد؛ لم يستغل أي خطأ برمجي عرضي في الكود. وبالمثل، فإن تخريب مؤلف حزمة شائعة لكوده الخاص [للاحتجاج](https://en.wikipedia.org/wiki/Peacenotwar) على الحرب هو أمر متعمد للغاية ولا يستغل أي CVEs. الاصطياد الإملائي هو ناقل هجوم آخر تستخدمه الجهات الفاعلة السيئة لنشر البرامج الضارة في سجلات الحزم مفتوحة المصدر الشائعة: إنه يستغل [الأخطاء الإملائية وعدم خبرة المطورين](https://discuss.python.org/t/improving-risks-and-consequences-against-typosquatting-on-pypi/5090)، وليس الأخطاء البرمجية العرضية أو CVEs في الكود.

أدوات الفحص الحالية **تفشل** في اكتشاف هجمات سلسلة التوريد الحديثة للبرامج مثل Solarwinds القادمة من كود ضعيف عن قصد (خبيث). تقوم هذه الأدوات ببساطة بمسح الكود المصدري بحثًا عن التبعيات مفتوحة المصدر، وتجميع قائمة بجميع التبعيات المستخدمة، والبحث عن كل <اسم التبعية، إصدار التبعية> في قاعدة بيانات (مثل NVD) للإبلاغ عن إصدارات الحزم المتأثرة (على سبيل المثال، إصدار ضعيف من Log4J، إصدار LibSSL المتأثر بـ HeartBleed).

لا يقوم Packj فقط بتدقيق CVEs، بل يقوم أيضًا بإجراء تحليل عميق للكود الثابت والديناميكي بالإضافة إلى فحوصات البيانات الوصفية للكشف عن أي سلوك أو سمات "خطرة"، مثل إطلاق شل، واستخدام مفاتيح SSH، وعدم تطابق كود GitHub مع الكود المعبأ (المصدر)، وغياب التحقق بخطوتين، وغيرها الكثير. مثل هذه السمات غير الآمنة لا ت qualify كـ CVEs، ولهذا السبب لا يمكن لأي من الأدوات الحالية وضع علامة عليها. يمكن لـ Packj وضع علامة على التبعيات الخبيثة، والمصيدة إملائيًا، والمهجورة، والضعيفة، وغير الآمنة (الحلقات الضعيفة) في سلسلة التوريد الخاصة بك. يرجى قراءة المزيد في [README التدقيق](https://github.com/ossillate-inc/packj/blob/main/packj/audit/README.md#faq)
</details>

# التخصيص #

يمكن تخصيص Packj بسهولة (بدون ضوضاء) لنموذج التهديد الخاص بك. ما عليك سوى إضافة ملف [.packj.yaml](https://github.com/ossillate-inc/packj/blob/main/.packj.yaml) في الدليل العلوي من مشروعك/مستودعك وتقليل إجهاد التنبيهات عن طريق التعليق على السمات غير المرغوب فيها.

# البرامج الضارة التي تم العثور عليها #

وجدنا أكثر من 40 حزمة خبيثة على PyPI و 20 على Rubygems على التوالي باستخدام هذه الأداة. تم إزالة عدد منها. راجع مثالاً أدناه:

<details>
    <summary><h4>عرض مثال على برامج ضارة</h4></summary>

    $ python3 main.py audit pypi:krisqian

    [+] Fetching 'krisqian' from pypi...OK [ver 0.0.7]
    [+] Checking version...OK [256 days old]
    [+] Checking release history...OK [7 version(s)]
    [+] Checking release time gap...OK [1 days since last release]
    [+] Checking author...OK [[email protected]]
        [+] Checking email/domain validity...OK [[email protected]]
    [+] Checking readme...ALERT [no readme]
    [+] Checking homepage...OK [https://www.bilibili.com/bangumi/media/md140632]
    [+] Checking downloads...OK [13 weekly]
    [+] Checking repo_url URL...OK [None]
    [+] Checking for CVEs...OK [none found]
    [+] Checking dependencies...OK [none found]
    [+] Downloading package 'KrisQian' (ver 0.0.7) from pypi...OK [1.94 KB]
    [+] Analyzing code...ALERT [needs 3 perms: process,network,file]
    [+] Checking files/funcs...OK [9 files (2 .py), 6 funcs, LoC: 184]
    =============================================
    [+] 6 risk(s) found, package is undesirable!
    {
        "undesirable": [
            "no readme",
            "only 45 weekly downloads",
            "no source repo found",
            "generates new code at runtime",
            "fetches data over the network: ['KrisQian-0.0.7/setup.py:40', 'KrisQian-0.0.7/setup.py:50']",
            "reads files and dirs: ['KrisQian-0.0.7/setup.py:59', 'KrisQian-0.0.7/setup.py:70']"
        ]
    }
    => Complete report: pypi-KrisQian-0.0.7.json
    => View pre-vetted package report at https://packj.dev/package/PyPi/KrisQian/0.0.7
</details>


صنف Packj KrisQian (الإصدار 0.0.7) كمشبوه بسبب عدم وجود مستودع مصدر واستخدام واجهات برمجة تطبيقات حساسة (الشبكة، توليد الكود) أثناء وقت تثبيت الحزمة (في setup.py). قررنا إلقاء نظرة أعمق، ووجدنا الحزمة خبيثة. يرجى الاطلاع على تحليلنا المفصل على [https://packj.dev/malware/krisqian](https://packj.dev/malware/krisqian).

المزيد من الأمثلة على البرامج الضارة التي وجدناها مدرجة على [https://packj.dev/malware](https://packj.dev/malware). يرجى التواصل معنا على [[email protected]](mailto:[email protected]) للحصول على القائمة الكاملة.

# الموارد #

لمعرفة المزيد عن أداة Packj أو هجمات سلسلة توريد البرامج مفتوحة المصدر، راجع ما يلي لدينا:

[![فيديو PyConUS'22](https://assets.kitploit.com/production/public/readmes/5562/216f348346e0f9e5189577944e0b2dc3746f3005eb90d7da890ad8b6e24dc363.jpg)](https://www.youtube.com/watch?v=Rcuqn56uCDk)
[![فيديو OSSEU'22](https://assets.kitploit.com/production/public/readmes/5562/00da211317b9a2b4205afaf3c10f49721bb104f4229aab18a61e6e894101e36b.jpg)](https://www.youtube.com/watch?v=a7BfDGeW_jY)

- [محادثة](https://www.youtube.com/watch?v=Rcuqn56uCDk) و [شرائح](https://speakerdeck.com/ashishbijlani/pyconus22-slides) PyConUS'22.
- [عرض](https://www.blackhat.com/asia-22/arsenal/schedule/#mitigating-open-source-software-supply-chain-attacks-26241) BlackHAT Asia'22 Arsenal
- [محادثة](https://www.youtube.com/watch?v=PHfN-NrUCoo) و [شرائح](https://speakerdeck.com/ashishbijlani/mitigating-open-source-software-supply-chain-attacks) PackagingCon'21
- حديث أرسنال BlackHat USA'22 [كشف الحزم مفتوحة المصدر المخادعة إملائيًا والمخترقة والمهجورة وغيرها من الحزم "الخطرة" باستخدام Packj](https://www.blackhat.com/us-22/arsenal/schedule/#detecting-typo-squatting-backdoored-abandoned-and-other-risky-open-source-packages-using-packj-28075)
- [أطروحة أكاديمية](https://cyfi.ece.gatech.edu/publications/DUAN-DISSERTATION-2019.pdf) حول أمان البرامج مفتوحة المصدر و [الورقة البحثية](https://www.ndss-symposium.org/wp-content/uploads/ndss2021_1B-1_23055_paper.pdf) من مجموعتنا في Georgia Tech التي بدأت هذا البحث.
- حديث قمة المصادر المفتوحة، أوروبا 2022 [تسجيل التبعيات للكشف عن "الحلقات الضعيفة" في سلسلة توريد البرامج مفتوحة المصدر الخاصة بك](https://osseu2022.sched.com/overview/type/SupplyChainSecurityCon) - فيديو العرض على [YouTube](https://www.youtube.com/watch?v=a7BfDGeW_jY)
- [فيديو العرض](https://www.youtube.com/watch?v=PgvlSjl-mrY) و [الشرائح](https://drive.google.com/file/d/1qLXIXzsIhRlS0mo8nwWI9KmD12CImZY9/view?usp=sharing) في NullCon'22 [الكشف عن الحزم مفتوحة المصدر الخبيثة وغيرها من الحزم "الخطرة" باستخدام Packj](https://archive.nullcon.net/website/goa-2022/speakers/unearthing-malicious-and-other-risky-open-source-packages-using-packj.php)

# خريطة طريق الميزات #

* إضافة محلل Rust. Rust قيد التطوير [الموعد المتوقع: فبراير 2024].
* إضافة وظائف للكشف عن عدة (قيد التنفيذ) كود "خطير" بالإضافة إلى سمات البيانات الوصفية [الموعد المتوقع: فبراير 2024].
* خادم Packj مستضاف ذاتيًا والعديد من التكاملات المفيدة (مثل Gitlab runner) [الموعد المتوقع: أبريل 2024].

راقب :eyes: هذا المستودع للبقاء على اطلاع.

هل لديك طلب ميزة أو دعم؟ يرجى زيارة [صفحة المناقشة على GitHub](https://github.com/ossillate-inc/packj/discussions/) أو الانضمام إلى [مجتمع discord](https://discord.gg/qFcqaV2wYa) للمناقشة والطلبات.

# الفريق والمساهمون #

تم تطوير Packj بواسطة باحثين في الأمن السيبراني في [Ossillate Inc.](https://packj.dev/team) ومتعاونين خارجيين لمساعدة المطورين على تخفيف مخاطر هجمات سلسلة التوريد عند الحصول على تبعيات برامج مفتوحة المصدر غير موثوقة من جهات خارجية. نشكر مطورينا ومتعاونينا. أظهر تقديرك بإعطائنا :star: إذا أعجبك عملنا.

الأعضاء المؤسسون:
* Ashish Bijlani
* Devdutt Patnaik
* Ajinkya Rajput

نرحب بمساهمات الكود بأذرع مفتوحة. راجع إرشادات [CONTRIBUTING.md](https://github.com/ossillate-inc/packj/blob/HEAD/CONTRIBUTING.md). وجدت خطأ؟ يرجى فتح مشكلة. راجع إرشادات [SECURITY.md](https://github.com/ossillate-inc/packj/blob/HEAD/SECURITY.md) للإبلاغ عن مشكلة أمنية.

# الأسئلة الشائعة #

<details>
	<summary><b>ما هي مديري الحزم (السجلات) المدعومة؟</b></summary>

يمكن لـ Packj حاليًا مراجعة حزم NPM و PyPI و RubyGems بحثًا عن سمات "خطرة". نحن نضيف الدعم لـ Rust.
	
</details>

<details>
	<summary><b>ما التقنيات التي يستخدمها Packj للكشف عن الحزم الخطرة / الخبيثة؟</b></summary>

يستخدم Packj تحليل الكود الثابت، والتتبع الديناميكي، وتحليل البيانات الوصفية للتدقيق الشامل. التحليل الثابت وحده لا يكفي لوضع علامة على البرامج الضارة المتطورة التي يمكنها إخفاء نفسها بشكل أفضل باستخدام تشويش الكود. يتم إجراء التحليل الديناميكي عن طريق تثبيت الحزمة تحت `strace` ومراقبة سلوكها في وقت التشغيل. يرجى قراءة المزيد في [README التدقيق](https://github.com/ossillate-inc/packj/blob/main/packj/audit/README.md).
	
</details>

<details>
	<summary><b>هل يعمل على الاستدعاءات المشوشة؟ على سبيل المثال، سلسلة مشفرة بـ base 64 يتم فك تشفيرها ثم تمريرها إلى شل؟</b></summary>هذا سلوك خبيث شائع جدًا. يكتشف Packj إخفاء الكود بالإضافة إلى إنشاء أوامر shell (استدعاء النظام exec). على سبيل المثال، يمكن لـ Packj الإبلاغ عن استخدام API `getattr()` و `eval()` لأنها تشير إلى "توليد كود في وقت التشغيل"؛ يمكن للمطور الذهاب وإلقاء نظرة أعمق بعد ذلك. انظر [main.py](https://github.com/ossillate-inc/packj/blob/main/packj/audit/main.py#L512) للحصول على التفاصيل.
	
</details>
تنزيل الأداة