OWASP Dependency-Check პროექტში ცნობილი სისუსტეების (CVE) მქონე ბიბლიოთეკებს პოულობს. მონაცემებს ის აშშ-ის სისუსტეების ეროვნული მონაცემთა ბაზიდან (NVD) იღებს. NVD-ის API-ით ჩამოტვირთვა ნელია: პირველ განახლებას საათები სჭირდება, საჭიროა API გასაღები და მოთხოვნების სიხშირე შეზღუდულია – ქეშის გარეშე CI პაიპლაინი კი ყოველ ჯერზე თავიდან იწყებს.
ამიტომ საჯარო სარკე გავუშვით: nvd.epicsoft.one.
სტატიკური ფაილები API-ის ნაცვლად
ყოველ ღამით CI ამოცანა vulnz-ით (open-vulnerability-cli) NVD-ის ცვლილებებს იღებს და მონაცემთა სრულ ნაკადს სტატიკური, შეკუმშული JSON ფაილების სახით აქვეყნებს. კლიენტები მათ ჩვეულებრივი HTTP-ით ტვირთავენ: API გასაღების, გვერდებად დაყოფისა და შეზღუდვების გარეშე. რადგან ყოველი გაშვება მხოლოდ ცვლილებებს იღებს, მას რამდენიმე წუთი სჭირდება.
dependency-check --updateonly \
--nvdDatafeed https://nvd.epicsoft.one/nvdcve-{0}.json.gz
მზა მონაცემთა ბაზები
მონაცემთა ბაზის თავად აწყობის ნაცვლად Dependency-Check-ს შეუძლია მზა ბაზით დაიწყოს. ყოველ ღამით სარკე ახალ ნაკადს სუფთა მონაცემთა ბაზებში ტვირთავს – CISA-ს ცნობილი ექსპლუატირებული სისუსტეების კატალოგის ჩათვლით – და მათ ნაკადის გვერდით აქვეყნებს:
- H2, Dependency-Check-ის ჩაშენებული მონაცემთა ბაზა
- MariaDB და MySQL
- PostgreSQL
თითოეულ ფაილს SHA-256 საკონტროლო ჯამი ახლავს; db/db.json მიუთითებს Dependency-Check-ის ვერსიას, მონაცემების მდგომარეობასა და ჩანაწერების რაოდენობას. ფაილები მხოლოდ Dependency-Check-ის ამ ვერსიას შეესაბამება.
შექმნილია უსაფრთხო ჩავარდნისთვის
- გაშვება მონაცემებს მხოლოდ მაშინ აქვეყნებს, როცა ნაკადის ყოველი წელი სრული და წაკითხვადია; წინააღმდეგ შემთხვევაში ის წყდება და ონლაინ წინა მდგომარეობა რჩება.
- მონაცემთა ბაზა, რომელიც ვერ აიწყო ან სხვებს არ ემთხვევა, ნაკადს არასოდეს აჩერებს – ასეთ დროს სარკე წინა ღამის ბაზებს ინარჩუნებს.
- ნაკადის ფაილები უცვლელად მიეწოდება, ასე რომ კლიენტები ზუსტად იმ შეკუმშულ მონაცემებს იღებენ, რასაც ელოდებიან.
თავისუფალი გამოყენება
სარკით სარგებლობა თავისუფალია. NVD-ის მონაცემები და CISA-ს კატალოგი საზოგადოებრივ საკუთრებას წარმოადგენს; ჩვენი სკრიპტები და CI-ის კონფიგურაცია ღია კოდია MIT ლიცენზიით GitLab-სა და GitHub-ზე. პრობლემების შესახებ შეგვატყობინეთ issue-ს სახით, უსაფრთხოების პრობლემების შესახებ კი – კონფიდენციალური issue-თი GitLab-ზე.
დამოკიდებულებების შემოწმება ყველა პაიპლაინს სჭირდება – დაგეხმარებით მის დაყენებაში.