
Choccy هو مشروع يراقب تحديثات مستودع GitHub ويقوم تلقائيًا بإجراء عمليات فحص CODEQL.
قبل التشغيل ، تحتاج إلى تكوين بيئة تجميع الكود بنفسك ، بيئة CodeQL:
قم بتنزيل CodeQl Binary and Library https://github.com/github/codeql-code-binaries/release ، https://github.com/github/codeql/tags
بعد إزالة الضغط ، يتم وضعه في نفس الدليل مثل ملف Choccy الثنائي ، أي:
$ tree . -L 1
.
├── choccy
├── codeql
└── codeql-codeql-cli-v2.19.4
التكوينات والوظائف الرئيسية موجودة في واجهة الويب ، وهناك فقط معلمتان لسطر الأوامر:
-addr string
监听地址和端口 (default "0.0.0.0:80")
-token string
系统Token
عندما يتم تشغيل البرنامج لأول مرة ، سيقوم بإنشاء مجلد choccy_data في الدليل حيث يقع لحفظ البيانات. إذا لم يتم تحديد الرمز المميز ، فسيتم إنشاءه بشكل عشوائي وإخراجه إلى سطر الأوامر. يحتوي المشروع نفسه على وظائف محتملة مثل تنفيذ الأوامر التعسفية وقراءة الملفات. لذلك ، إذا كانت الخدمة مفتوحة على الشبكة العامة ، فتأكد من تعيين كلمة مرور قوية.
تحتاج إلى إدخال دليل الويب لتجميع الواجهة الأمامية أولاً. عند تجميع نهاية Golang الخلفية ، سيتم تضمين ملف المورد الأمامي تلقائيًا.
cd web
npm install
npm run build
cd ..
go build -o choccy main.go
# mac上交叉编译
# CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o choccy_linux_amd64 main.go
# CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o choccy_windows_amd64.exe main.go
# CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o choccy_darwin_amd64 main.go قبل استخدام ، قم بتكوين بيئة CodeQL ، ومن الأفضل أيضًا تكوين رمز GitHub في设置، وإلا فقد يتم تقييده من الوصول بواسطة Github API.设置-其他- - --ram 2048 في CodeQL附加命令行选项هو الحد الأقصى للذاكرة المسموح بها باستخدام CODEQL ، والوحدة هي MB. يرجى زيادته حسب الاقتضاء وفقًا لتكوين نظامك ، وإلا فقد يؤثر على سرعة المسح أو التسبب في فشل المسح.
حاليًا ، يدعم المسح الضوئي للفرع ، المسح الافتراضي للفرع ، وفحص قاعدة بيانات CodeQL الأصلي لمستودع GitHub. سيقوم Github تلقائيًا بتجميع قواعد بيانات CodeQL للعديد من المستودعات (يمكن عرضها من خلال الواجهة https://api.github.com/repos/<owner>/<repo>/code-scanning/codeql/databases <rower>/<repo>/code-scanning/codeql/databases). سيؤدي ذلك إلى حفظ خطوات تكوين بيئة التجميع المحلية والوقت لتجميع قاعدة البيانات محليًا. لذلك ، سيعطي وضع المسح الأولوية لقاعدة البيانات الأصلية. خذ مشروع Java-Sec Code كمثال:

مجموعة الاستعلام هي مجموعة من سلسلة من بيانات الاستعلام. يمكنك النقر فوق查询套件في شريط القائمة لعرضه وتحريره. هنا يمكنك أولاً تحديد الإعداد المسبق java_security.qls .
ثم انقر فوق "加入扫描队列على الجانب الأيمن من المشروع ، والذي سيقوم على الفور بإنشاء مهمة لإصدار المشروع والمسح الضوئي.

في علامة التبويب任务، يمكنك رؤية حالة تنفيذ المهمة الحالية وسجل التنفيذ:

بعد الانتهاء من التنفيذ ، يمكنك رؤية نتائج المسح المحددة في علامة التبويب分析结果. يكرر عرض النتائج تمامًا تأثير عرض المكون الإضافي CODEQL في VSCODE ، وتم إجراء بعض التحسينات ، بما في ذلك معلومات الضعف ، وموقع الضعف ، ومعرف القاعدة المقابل ، ورابط المكالمات الكامل للضعف ، ورمز سياق الضعف. انقر فوق الارتباط التشعبي للقفز إلى موقع الكود المقابل لمستودع GitHub.

بعد إضافة المشروع ، سيتم سحب أحدث إصدار كل أسبوع للمسح الضوئي. يمكن تكوين ذلك في设置- التعبير其他定时扫描Cron表达式:

بالإضافة إلى ذلك ، يمكن设置-环境变量تكوين الوكيل عندما يصل النظام إلى Github ، إلخ环境

يمكنك وضع مكتبة الاستعلام الخاصة بك أو بيان الاستعلام في دليل Packs . بعد اكتمال الموضع ، يمكنك الانتقال إلى علامة تبويب查询包لعرضها:


Suite Suite هي مجموعة من سلسلة من قواعد CodeQL التي يمكن تحريرها وعرضها في علامة التبويب查询套件:

وثيقة مرجع بناء الجملة الرسمي: https://docs.github.com/zh/code-security/codeql-cli/using-thedvanced-function-of-the-codeql-codeql-codeql-query-suites
في صفحة数据库، انقر فوق أيقونة Plus في الزاوية اليمنى العليا لتعبئة قاعدة البيانات المحلية في حزمة مضغوطة مضغوطة ، ثم التحميل ، وانتظر التحميل والاستيراد لإكماله (لا يمكن إغلاق الصفحة أثناء التحميل)
(لا تستخدم وظيفة التحميل ناقل حركة كتلة ، لذلك يجب أن تكون الذاكرة المتاحة للخادم أكبر من حجم الملف)


في صفحة任务، انقر فوق أيقونة Plus في الزاوية اليمنى العليا وحدد مجموعة قاعدة البيانات والاستعلام. اسم المشروع هو نفس اسم قاعدة البيانات افتراضيًا.

في صفحة任务، حدد أيقونة Plus في الزاوية اليمنى العليا وانقر فوق从GitHub批量创建

搜索语句عبارة عن بحث عن المستودع ، مرجع بناء الجملة: https://docs.github.com/en/rest/search/search؟apiversion=2022-11-28#search-repositories
يشير扫描范围إلى أي جزء من الفحص بعد الفرز بترتيب معين. في لقطة الشاشة التالية ، سيتم فرز عدد النجوم بترتيب عكسي ، وسيتم فحص المستودعات الحادية عشرة والثانية عشر.

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