در این پست سعی در معرفی یکی از نرم افزار های امنیتی اپن سورس رو دارم که برای برسی ضعف های امنیتی نرم افزار های ابری استفاده میشه. فرض بر این هست که شما با تکنولوژی داکر آشنایی دارید و اون رو روی سیستمتون نصب دارید.
توجه داشته باشید که حتی اگر شما فقط از docker container استفاده میکنید قابلیت بهره گیری از مزایای این روش پیشنهادی را دارید ولزومی به داشتن خطوط اتوماتیک تست و پیاده سازی CI/CD برای شروع نیست.
خوب بزارید با یک مثال شروع کنیم
docker run --rm -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy image alpine:3.10.7
نتیجه اجرای دستور بالا خروجی است هست:
همونطور که مشخصه ما با کمک نرمافزار trivy ما داکر ایمیج alpine نسخه 3.10.7 رو برسی کردیم و فهمیدیم چهار مشکل امنیتی وجود داره درش که ممکنه باعث رخنه بشه، CVE های این مشکلات و سطح شدتشون به همراه جزییات دیگه بخوبی در این تصویر مشخصه، فکر میکنم دیگه فهمیده باشیم که کلیت کار Trivy چه هست ولی توضیح کامل تر اون از صفحه رسمیش:
Trivy is a comprehensive and easy-to-use open source vulnerability scanner for container images, file systems, and Git repositories, as well as for configuration issues. Trivy detects vulnerabilities of OS packages (Alpine, RHEL, CentOS, etc.) and language-specific packages (Bundler, Composer, npm, yarn, etc.).
Unlike other open source scanners, Trivy covers both OS packages and language-specific
dependencies and is extremely easy to integrate into organizations’ software development pipelines.
In addition, Trivy scans Infrastructure as Code (IaC) files such as Terraform, Dockerfile and Kubernetes, to detect potential configuration issues that expose your deployments to the risk of attack.
ولی متاسفانه در اکثر اوقات گزارش مشکلات امنیتی اینقدر کم تعداد نیستن و زیادت مشکلات امنیتی بدست آوردن یه دید کلی رو سخت میکنه فلذا بهتره یک خلاصه گزارش اول برای خودمون درست کنیم و بعد بر اساس اعداد اون، گزارش های بلند رو در چیزی بهتر ببینیم، برای این مثال من Bash Script زیر رو نوشتم:
docker run --rm -v $HOME/Library/Caches:/root/.cache/ -v ~/trivy:/trivy aquasec/trivy image --vuln-type library --format json --output /trivy/trivy.json docker.bintray.io/jfrog/artifactory-oss:6.8.7 && cat ~/trivy/trivy.json | jq ".Results[].Vulnerabilities[]?.Severity" | sort | uniq -c
در دستور بالا من به trivy گفتم که گزارش رو به فرمت json در یک فایل ارایه بده و بعد با کمک دستور jq تعداد مشکلات امنیتی پیدا شده به تفکیک شدتشون رو نشون میده:
و حالا که ما کلیت شرایط امنیتی نرم افزار مورد نظرمون رو میدونیم، میتونیم فایل جیسون ایجاد شده رو برای دیدن جزییات بیشتر مورد برسی قرار بدیم، راه حل راحتی هم برای برسی این فایل جیسون هست و اون یک پروژه تحت وب اپن سورس کوچیک و جدا هست که میتونید از این لیک ببینید و تستش کنید:
https://github.com/dbsystel/trivy-vulnerability-explorer
امیدوارم این آشنایی اولیه کوچیک نهایتا باعث بشه بیشتر به برسی مشکلات امنیتی در نرم افزارهامون قبل از انتشار اهمیت بدیم، نکته آخر اینکه اگر میخواهید از trivy در خطوط CI/CD خود استفاده کنید، بهتر هست برای کند نشدن خطوطتون از حالت Client/Server اون استفاده کنید
https://aquasecurity.github.io/trivy/v0.22.0/advanced/modes/client-server/
با دوستی به اسم علی یزدانی داشتم صحبت میکردم که متخصص امنیته و اشاره کرد به یه اصطلاحی که آشنایی نداشتم، Shift Left DevOps که تمام کارهایی که باید درنظر گرفته بشه برای امنیت رو روشمند توصیه میکنه، بیشتر در موردش اینجا بخونید:
https://www.aquasec.com/cloud-native-academy/devsecops/shift-left-devops/
همچنین علی checkov رو هم معرفی کرد:
https://github.com/bridgecrewio/checkov