GitLab SAST manually -р тохируулах нь
Энэ өдрийн мэнд хүргэе. GitLab SAST тохируулж үзсэн талаараа богино хэмжээний нийтлэл оруулахаар боллоо. Энэ сэдвийн мэдлэг сул тул буруу зөрүү ойлголт оруулсан бол засаж өгөхийг хүсэе.
SAST гэж юу вэ?
Өөрийн source code -н болзошгүй эмзэг байдлыг илрүүлэхийн тулд Статик Аппликешны Аюулгүй байдлын Туршилтыг (SAST) ашиглаж болно.
SAST-г идэвхжүүлэхийн тулд та SAST.gitlab-ci.yml файлыг тохируулж өгөх ёстой. Ингэхийг тулд .gitlab-ci.yml
-д дараах тохиргоог оруулна.
include:
- template: Security/SAST.gitlab-ci.yml
Оруулсан template нь таны CI/CD pipeline -д SAST jobs -уудыг үүсгэж, болзошгүй эмзэг байдлыг илрүүлэхийн тулд төслийн source code -г сканердах болно. Үр дүн нь SAST report artifact хэлбэрээр хадгалагдсан бөгөөд та дараа нь татаж аваад дүн шинжилгээ хийх боломжтой.
Туршиж үзэцгээе!
Миний хувьд gatsby ашиглан энгийн boilerplate project үүсгэж явж байгаа болно. SAST тохируулж өгөхийн тулд бид .gitlab-ci.yml файлыг үүсгэж өгөх хэрэгтэй.
Дараах байдлаар Gitlab CI/CD болон SAST -г тохируулж өгөв.
include:
- template: Security/SAST.gitlab-ci.yml
stages:
- build
- testbuild website:
stage: build
image: node
script:
- npm install
- npm install -g gatsby-cli
- gatsby build
artifacts:
paths:
- ./publictest artifacts:
image: alpine
stage: test
script:
- grep -q "Gatsby" ./public/index.htmltest website:
image: node
stage: test
script:
- npm install
- npm install -g gatsby-cli
- gatsby serve &
- sleep 3
- curl "<http://localhost:9000>" | tac | tac | grep -q "Gatsby"spotbugs-sast:
artifacts:
reports:
sast: gl-sast-report.json
Gitlab CI/CD болон SAST тохируулж өгсний дараа дараах job -ууд үүснэ.
Test stage дээр eslint-sast, nodejs-scan-sast болон semgrep-sast гэх файлуудыг дээрх template Security/SAST.gitlab.ci.yml файл бидэнд үүсгэж өгнө.
Тухайн Gitlab SAST job-уудын үр дүнг Gitlab CI/CD Pipelines цэс дотроос татаж авна.
eslint-sast:sast холбоос дээр дарвал gl-sast-report.json гэх файл татагдах бөгөөд дараах байдлаар SAST job -н үр дүн харагдана.
{
"version": "14.0.0",
"vulnerabilities": [
{
"id": "0ad907853f92eb4e8b6b4748c3a9326d89482ddf91ab0907316fd80452fbd90b",
"category": "sast",
"name": "Generic Object Injection Sink",
"message": "Generic Object Injection Sink",
"description": "Bracket object notation with user input is present, this might allow an attacker to access all properties of the object and even it's prototype, leading to possible code execution.",
"cve": "public/231-b2d35ff9bb1952aa22d1.js:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855:security/detect-object-injection",
"severity": "Critical",
"confidence": "Unknown",
"scanner": {
"id": "eslint",
"name": "ESLint"
},
"location": {
"file": "public/231-b2d35ff9bb1952aa22d1.js",
"start_line": 1,
"end_line": 1
},
"identifiers": [
{
"type": "eslint_rule_id",
"name": "ESLint rule ID security/detect-object-injection",
"value": "security/detect-object-injection",
"url": "<https://github.com/nodesecurity/eslint-plugin-security#detect-object-injection>"
},
{
"type": "cwe",
"name": "CWE-94",
"value": "94",
"url": "<https://cwe.mitre.org/data/definitions/94.html>"
}
]
},
....
}
vulnerabilities
хэсэгт таны кодны эмзэг байдлын жагсаалтыг харуулна.
Тухайн алдаа нь хэр ноцтой болох, ямар scanner ашиглан энэхүү алдааг илрүүлсэн, кодны аль хэсэгт гарсан гэх мэдээлэлүүдийг харуулна.