
🔎 कोड में Trojan Source vulnerability खोजने में मदद करें 👀। एकाधिक सहयोगियों (CI/CD) वाले प्रोजेक्ट में code review के लिए उपयोगी।
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
> मैनुअल कोड समीक्षा या CI/CD पाइपलाइनों के साथ Trojan Source का पता लगाने में सहायता करें (यूनिकोड द्विदिश वर्ण)
फ़ाइल या निर्देशिका <path> में Trojan Source का पता लगाने के लिए:
tsfinder [path]
> स्रोत कोड फ़ाइलें संभवतः टेक्स्ट फ़ाइलें होती हैं। स्कैन के लिए बाइनरीज़ को हटाने से गलत सकारात्मक परिणामों को खारिज करने में मदद मिल सकती है
tsfinder -t [path]
स्कैन द्वारा कौन सी फ़ाइल छोड़ी गई है, यह देखने के लिए -v जोड़ें।
Trojan Source नया नहीं है और एकमात्र खतरा नहीं है। दूसरा है 'Homoglyph'.(Kezako?)
tsfinder homoglyph कमांड के साथ उनका पता लगाने में मदद करता है:
tsfinder homoglyph [filename] [flags]
आप देख सकते हैं कि path में पाए गए होमोग्राफ के लिए कोई सहोदर (अर्थात समान "कंकाल" वाला शब्द) है या नहीं, --sibling फ़्लैग का उपयोग करके:
tsfinder homoglyph [filename] --sibling [path]
यह कार्यक्षमता विकासाधीन है, मुख्यतः अन्य प्रोजेक्ट पर निर्भर करती है
> कोड वास्तव में मशीनों/कंपाइलर द्वारा कैसे व्याख्यायित किया जाता है, इसका दृश्य देखें
tsfinder जानबूझकर बहुत विस्तृत नहीं है। डिफ़ॉल्ट रूप से, यह केवल तभी आउटपुट देगा जब Trojan Source कोड का पता चलेगा। अधिक विस्तार के लिए और खतरनाक पंक्ति को देखने के लिए -v फ़्लैग जोड़ें।
Trojan Sources कहाँ थे, इसे बेहतर ढंग से देखने के लिए, आप -c फ़्लैग के साथ रंगीन आउटपुट सक्षम कर सकते हैं (निर्देशिका स्कैन के साथ भी उपयोगी):
tsfinder -c -v <directory>


जैसा कि @ioah86 ने यहाँ उल्लेख किया है, trojan source को grep का उपयोग करके एक-लाइनर से भी पता लगाया जा सकता है।
बड़ा अंतर आउटपुट प्रारूप और निकास स्थिति कोड का है (tsfinder बिना Trojan source पाए जाने पर 0 के साथ निकलता है, अन्यथा 1; grep के लिए इसका उल्टा है)
इसके अलावा, यह एक-लाइनर होमोग्लिफ़ समस्या का समाधान नहीं करता है।
| लक्ष्य | 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 |