Gokart هي أداة تحليل ثابت لـ GO التي تجد نقاط الضعف باستخدام نموذج SSA (تعيين ثابت واحد) من رمز مصدر GO. إنه قادر على تتبع مصدر المتغيرات ووسيطات الوظائف لتحديد ما إذا كانت مصادر الإدخال آمنة ، مما يقلل من عدد الإيجابيات الخاطئة مقارنة بماسحات أمان GO الأخرى. على سبيل المثال ، قد يتم وضع علامة على استعلام SQL المتسلسل بمتغير على أنه حقن SQL ؛ ومع ذلك ، يمكن لـ Gokart معرفة ما إذا كان المتغير في الواقع مكافئًا ثابتًا أو ثابتًا ، وفي هذه الحالة لا يوجد ثغرة أمنية.
يساعد Gokart أيضًا على تشغيل Cariot ، ومنصة الأمان الخاصة بـ Praetorian التي تساعدك على العثور على نقاط الضعف وإدارتها وإصلاحها في الكود المصدري والبيئات السحابية. العربات تجعل من السهل تشغيل عمليات مسح Gokart الآلية المستمرة على رمز المصدر الخاص بك. إذا كنت ترغب في تجربة Gokart ، فيمكنك إعداد حساب عربة مجاني في دقائق من خلال النقر هنا.
التحليل الثابت هو تقنية قوية لإيجاد نقاط الضعف في رمز المصدر. ومع ذلك ، فقد عانى النهج من كونه صاخبًا - أي أن العديد من أدوات التحليل الثابت تجد عددًا قليلاً من "نقاط الضعف" التي ليست حقيقية بالفعل. وقد أدى ذلك إلى احتكاك المطورين حيث تعب المستخدمون من الأدوات "البكاء الذئب" مرة واحدة كثيرًا.
كان الدافع لجوكارت هو معالجة هذا: هل يمكننا إنشاء ماسح ضوئي مع معدلات إيجابية كاذبة أقل بكثير من الأدوات الحالية؟ بناءً على تجربتنا ، الإجابة هي نعم. من خلال الاستفادة من تتبع المصدر إلى التفوق و SSA ، فإن Gokart قادر على تتبع taintiable المتغير بين المهام المتغيرة ، مما يحسن بشكل كبير من دقة النتائج. ينصب تركيزنا على قابلية الاستخدام: بشكل عملي ، وهذا يعني أننا قمنا بتحسين مقارباتنا لتقليل الإنذارات الخاطئة.
لمزيد من المعلومات ، يرجى قراءة منشور المدونة لدينا.
يمكنك تثبيت Gokart محليًا باستخدام أي واحد من الخيارات المذكورة أدناه.
go install $ go install github.com/praetorian-inc/gokart@latestقم بتنزيل الثنائي لنظام التشغيل الخاص بك من صفحة الإصدارات.
(اختياري) قم بتنزيل ملف checksums.txt للتحقق من سلامة الأرشيف
# Check the checksum of the downloaded archive
$ shasum -a 256 gokart_ ${VERSION} _ ${ARCH} .tar.gz
b05c4d7895be260aa16336f29249c50b84897dab90e1221c9e96af9233751f22 gokart_ ${VERSION} _ ${ARCH} .tar.gz
$ cat gokart_ ${VERSION} _ ${ARCH} _checksums.txt | grep gokart_ ${VERSION} _ ${ARCH} .tar.gz
b05c4d7895be260aa16336f29249c50b84897dab90e1221c9e96af9233751f22 gokart_ ${VERSION} _ ${ARCH} .tar.gz$ tar -xvf gokart_ ${VERSION} _ ${ARCH} .tar.gzgokart الثنائي إلى طريقك: $ mv ./gokart /usr/local/bin/ # clone the GoKart repo
$ git clone https://github.com/praetorian-inc/gokart.git
# navigate into the repo directory and build
$ cd gokart
$ go build
# Move the gokart binary into your path
$ mv ./gokart /usr/local/binبناء صورة Docker
docker build -t gokart .تشغيل الحاوية مع فحص محلي (يجب تثبيت دليل المسح المحلي على صورة الحاوية)
docker run -v /path/to/scan-dir:/scan-dir gokart scan /scan-dirتشغيل الحاوية مع فحص عن بُعد (عند تحديد مفتاح خاص للمكتوبة ، سيحتاج أيضًا إلى تثبيت على الحاوية)
docker run gokart scan -r https://github.com/praetorian-inc/gokart
# specifying a private key for private repository ssh authentication
docker run -v /path/to/key-dir/:/key-dir gokart scan -r [email protected]:praetorian-inc/gokart.git -k /key-dir/ssh_key # running without a directory specified defaults to '.'
gokart scan < flags >gokart scan < directory > < flags > gokart help يمكنك متابعة الخطوات أدناه لتشغيل Gokart on Go Test Bench ، وهو تطبيق GO ضعيف عن عمد من فريق أمان التباين.
# Clone sample vulnerable application
git clone https://github.com/Contrast-Security-OSS/go-test-bench.git
gokart scan go-test-bench/يجب أن يظهر الإخراج بعض نقاط الضعف المحددة ، ولكل منها وظيفة ضعيفة ومصدر إدخال المستخدم المحدد.
لاختبار بعض ميزات Gokart الإضافية ، يمكنك المسح الضوئي باستخدام أعلام CLI المقترحة أدناه.
# Use verbose flag to show full traces of these vulnerabilities
gokart scan go-test-bench/ -v
# Use globalsTainted flag to ignore whitelisted Sources
# may increase false positive results
gokart scan go-test-bench/ -v -g
# Use debug flag to display internal analysis information
# which is useful for development and debugging
gokart scan go-test-bench/ -d
# Output results in sarif format
gokart scan go-test-bench/ -s
# Output results to file
gokart scan go-test-bench/ -o gokart-go-test-bench.txt
# Output scarif results to file
gokart scan go-test-bench/ -o gokart-go-test-bench.txt -s
# Scan remote public repository
# Repository will be cloned locally, scanned and deleted afterwards
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -v
# Specify the remote branch to scan
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -b actions_fix
# Scan remote private repository via ssh
gokart scan -r [email protected]:Contrast-Security-OSS/go-test-bench.git
# Scan remote private repository and optionally specify a key for ssh authentication
gokart scan -r [email protected]:Contrast-Security-OSS/go-test-bench.git -k /home/gokart/.ssh/github_rsa_key
# Use remote scan and output flags together for seamless security reviews
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -o gokart-shiftleft-go-demo.txt -v
# Use remote scan, output and sarif flags for frictionless integration into CI/CD
gokart scan -r https://github.com/ShiftLeftSecurity/shiftleft-go-demo -o gokart-shiftleft-go-demo.txt -s لاختبار تمديد Gokart ، يمكنك تعديل ملف التكوين الذي يستخدمه Gokart لتقديم حوض ضعيف جديد في التحليل. هناك محلل اختبار بالوعة محدد في ملف التكوين الافتراضي المضمون في util/analyzers.yml . تعديل util/analyzers.yml لإزالة التعليقات على محلل Sink Test ثم توجيه Gokart لاستخدام ملف التكوين المعدل مع علامة -i .
# Scan using modified analyzers.yml file and output full traces
gokart scan go-test-bench/ -v -i < path-to-gokart > /util/analyzers.ymlيجب أن يحتوي المخرجات الآن على نقاط ضعف إضافية ، بما في ذلك ثغرات الضعف "بالتحقق من الاختبار القابل للوصول إلى إدخال المستخدم".
يمكنك تشغيل الاختبارات المضمنة مع الأمر التالي ، تم استدعاؤه من دليل جذر Gokart.
go test -v ./...