انتقل إلى المحتوىistheinternetok

هل مستودعك بخير؟

افحص أي مستودع على GitHub بحثًا عن تبعيات فيها ثغرات

الصق رابط مستودع عام على GitHub. نقرأ كل ملف قفل عند آخر commit، ونقارن كل نسخة مثبتة بكل الثغرات المعروفة، ثم نخبرك بما يجب تحديثه أولًا. مجانًا، بلا حساب، ولا شيء لتثبيته.

جرّب:vercel/next.jsJavaScriptpallets/flaskPythonastral-sh/ruffRustkubernetes/kubernetesGorails/railsRubybitwarden/server.NETphoenixframework/phoenixElixirimmich-app/immichDart, TypeScript

ماذا يقرأ

30 صيغة لملفات القفل و7 صيغ لملفات البيان، في 14 منظومة. كل مجلد يُحتسب، بما في ذلك المستودعات الأحادية ومساحات العمل. وحين لا يكون للمشروع ملف قفل، نقرأ النسخ الدقيقة التي تثبتها ملفات البيان. أما ملف القفل الذي لا نستطيع فحصه، مثل ملفات CocoaPods أو Conan، فنذكره في صفحة المستودع ولا نتجاهله أبدًا.

JavaScript, TypeScriptnpm
package-lock.jsonnpm-shrinkwrap.jsonpnpm-lock.yamlyarn.lockbun.lockdeno.lockpackage.json
PythonPyPI
uv.lockpoetry.lockPipfile.lockpdm.lockpylock.tomlrequirements.txtrequirements.lockpixi.lockconda-lock.ymlpyproject.toml
Rustcrates.io
Cargo.lockCargo.toml
GoGo modules
go.mod
Java, KotlinMaven
gradle.lockfilemaven_install.jsonpom.xmllibs.versions.toml
.NETNuGet
packages.lock.jsonpackages.configpaket.lock.csproj.fsproj.vbprojDirectory.Packages.props
RubyRubyGems
Gemfile.lockgems.locked
PHPPackagist
composer.lock
Dart, FlutterPub
pubspec.lock
SwiftSwiftPM
Package.resolved
Elixir, ErlangHex
mix.lockrebar.lock
HaskellHackage
cabal.project.freeze
RCRAN
renv.lock
JuliaJulia
Manifest.toml

بإطار متقطع: ملفات البيان، ولا تُقرأ إلا حيث لا يغطيها ملف قفل.

ما الذي يقرأه فعلًا

من 97 إلى 100%

من النسخ المثبتة التي يسردها رسم التبعيات الذي يعدّه GitHub نفسه، في npm وPyPI وCargo وGo وPub وSwift. قسناه على 77 مستودعًا كبيرًا.

وأقل حتى الآن في Packagist (95%) وRubyGems (92%) وNuGet (84%) وMaven (62%).

كيف يعمل

  1. يقرأ ملفات القفل عند آخر commit

    كل ملف قفل في كل مجلد، يُقرأ على GitHub عند الـcommit نفسه: كل حزمة بالنسخة التي يثبتها، وهل تستخدمها أدوات التطوير وحدها. ولا تُقرأ شيفرتك المصدرية أبدًا.

  2. يقارن كل نسخة بكل الثغرات المعروفة

    نبحث عن كل نسخة في OSV، الذي يجمع قواعد بيانات التنبيهات الأمنية العامة (قاعدة GitHub وPyPI وRustSec وGo وغيرها)، وفي قائمة CISA للثغرات التي يستغلها المهاجمون فعلًا.

  3. يخبرك بما يجب تحديثه أولًا

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

  4. يقول ما يمكن أن تفعله الثغرة، لا أنها تفعله

    لا نتحقق مما إذا كانت شيفرتك تستدعي الجزء المعرّض للخطر من الحزمة. الثغرة في الصفحة نسخةٌ يجب تحديثها، لا دليل على أن المشروع قابل للاختراق.

  5. يبقى محدّثًا

    يُقرأ الـcommit الجديد في الزيارة التالية. ويصل التنبيه الجديد إلى كل مستودع يمسه بعد دقائق من نشره في OSV.

شارة لملف README الخاص بك

تمنحك صفحة كل مستودع شارة تعرض إجابته وتتغير معها. ضع مستودعك مكان owner/repo:

[![هل owner/repo بخير؟](https://istheinternetok.com/r/owner/repo/badge.svg)](https://istheinternetok.com/r/owner/repo/)

للوكلاء والسكربتات

الإجابة نفسها بصيغة JSON، بلا مفتاح، على /v1/repos/owner/repo. أو كأداة MCP باسم check_repo على https://istheinternetok.com/mcp. وكل ما يحتاج الوكيل إلى معرفته موجود في /skill.md.

curl -s https://istheinternetok.com/v1/repos/vercel/next.js

أسئلة

هل يمكنه فحص مستودع خاص؟

لا. يقرأ مستودعات GitHub العامة فقط، كما يراها أي شخص. ولا يطلب أي شيء خاص أبدًا.

هل تحتفظون بشيفرتي؟

لا. لا نقرأ الشيفرة المصدرية أبدًا، بل ملفات القفل وملفات البيان فقط. نحتفظ بقائمة الحزم والنسخ التي تثبتها، وبالإجابة، لنعيد فحص المستودع حين تظهر ثغرة جديدة.

كم يكلّف؟

لا شيء. بلا حساب ولا مفتاح: الصفحة والشارة والواجهة البرمجية وأداة MCP كلها مجانية.

ما الفرق بينه وبين npm audit أو Dependabot؟

يجري النوع نفسه من البحث انطلاقًا من رابط، دون تثبيت أي شيء، وفي كل المنظومات معًا لا في npm وحدها. تنبيهات Dependabot لا يراها إلا مسؤولو المستودع؛ أما هذه الصفحة فيمكن لأي شخص قراءتها ومشاركتها. كما تفصل ما تستخدمه الاختبارات وأدوات التطوير وحدها.

هل تعني ثغرة في الصفحة أن مشروعي اختُرق؟

لا. تعني أن نسخة يثبتها المشروع فيها ثغرة معروفة، وتوضح ما قد تتيحه هذه الثغرة. لا نتحقق مما إذا كانت شيفرتك تصل إلى الجزء المعرّض للخطر: حدّث أولًا، ثم تعمّق إن احتجت.