
🔎 ساعد في العثور على ثغرة Trojan Source في الكود 👀 . مفيد لمراجعة الكود في مشروع مع عدة مساهمين (CI/CD)
ثغرة Trojan Source تسمح للمهاجم بجعل الكود الخبيث يبدو بريئًا.
بشكل عام، يحاول المهاجم تضليل المستخدم عن طريق تمرير كوده على أنه تعليق (بصريًا). إنها تهديد خطير لأنه يؤثر على العديد من اللغات. المشاريع التي تحتوي على مصادر متعددة "غير موثوقة" قد تكون معنية.
اكتشف الشر 🔎
·
تتبع الشر 👀
·
Trojan Source ❓
go> عبر go install
go install github.com/ariary/TrojanSourceFinder/cmd/tsfinder@latest
تأكد من أن $GOPATH موجود في $PATH الخاص بك.
> من المصدر
git clone https://github.com/ariary/TrojanSourceFinder
cd TrojanSourceFinder
make before.build
make build.tsfinder
إذا فشل الأمر make build.tsfinder، جرب:
env GOOS=target-OS GOARCH=target-architecture
go build -o tsfinder cmd/main.go
curl> من الإصدارات
curl -lO -L https://github.com/ariary/TrojanSourceFinder/releases/latest/download/tsfinder && chmod +x tsfinder
> يساعد في اكتشاف Trojan Source لمراجعة الكود يدويًا أو عبر خطوط CI/CD (الأحرف ثنائية الاتجاه في Unicode)
لاكتشاف Trojan Source في ملف أو مجلد <المسار>:
tsfinder [path]
> ملفات الكود المصدري غالبًا ما تكون ملفات نصية. استبعاد الملفات الثنائية من الفحص قد يساعد في تقليل النتائج الإيجابية الكاذبة.
tsfinder -t [path]
أضف -v لمعرفة الملفات التي تم تخطيها أثناء الفحص.
ثغرة Trojan Source ليست جديدة وليست الخطر الوحيد. هناك خطر آخر هو "Homoglyph". (ما هو؟)
يساعد tsfinder في اكتشافها باستخدام الأمر homoglyph:
tsfinder homoglyph [filename] [flags]
يمكنك رؤية ما إذا كان هناك كلمة مشابهة (أي كلمة لها نفس "الهيكل العظمي") للهوموغليفات الموجودة في المسار باستخدام العلامة --sibling:
tsfinder homoglyph [filename] --sibling [path]
هذه الوظيفة قيد التطوير، وتعتمد بشكل أساسي على مشروع آخر.
> تصور كيف يتم تفسير الكود فعليًا بواسطة الآلات/المترجم.
tsfinder ليس شديد الإسهاب عن قصد. بشكل افتراضي، سيُظهر فقط إذا تم اكتشاف كود Trojan Source. للحصول على المزيد من التفاصيل وتصور السطر الخطير، أضف العلامة -v.
لرؤية أفضل لمكان وجود Trojan Sources، يمكنك تفعيل الإخراج الملون باستخدام العلامة -c (مفيد أيضًا عند فحص مجلد):
tsfinder -c -v <directory>


كما أشار @ioah86 هنا، يمكن أيضًا اكتشاف Trojan Source باستخدام أمر واحد من خلال grep.
الفرق الكبير هو تنسيق الإخراج وكود الخروج (tsfinder يخرج بكود الحالة 0 إذا لم يتم العثور على Trojan Source، و 1 إذا وجد؛ والعكس بالنسبة لـ grep).
أيضًا، هذا الأمر الواحد لا يحل مشكلة homoglyph.
| الهدف | tsfinder | أمر grep الواحد |
|---|---|---|
| فحص جميع الملفات + عرض الأسطر | tsfinder -v . | grep -arE $'(\u2066|\u2067|\u2068|\u202A|\u202B|\u202D|\u202E|\u202C|\u2069|\u200E|\u200F|\u061C|\u2066|\u2067|\u2068)' |
| الفحص فقط على الملفات القابلة للقراءة البشرية | tsfinder -t . | grep -IrE $'(\u2066|\u2067|\u2068|\u202A|\u202B|\u202D|\u202E|\u202C|\u2069|\u200E|\u200F|\u061C|\u2066|\u2067|\u2068)' |
| الخروج بكود الحالة 1 إذا تم العثور | افتراضي | [الأمر الواحد] && exit 1 || exit 0 |