{"id":92519,"date":"2020-08-28T07:42:26","date_gmt":"2020-08-28T05:42:26","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya"},"modified":"2020-08-28T07:42:26","modified_gmt":"2020-08-28T05:42:26","slug":"devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","title":{"rendered":"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Znaczenie analizy komponent\u00f3w oprogramowania os\u00f3b trzecich (ang. Software Composition Analysis \u2014 SCA) w procesie rozwoju ro\u015bnie w miar\u0119 publikacji corocznych raport\u00f3w o podatno\u015bciach bibliotek open source, kt\u00f3re wydaj\u0105 firmy Synopsys, Sonatype, Snyk, White Source. Zgodnie z raportem <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">Stan podatno\u015bci bezpiecze\u0144stwa open source 2020<\/a><\/noindex> liczba ujawnionych podatno\u015bci w open source w 2019 roku wzros\u0142a prawie 1,5 razy w por\u00f3wnaniu z poprzednim rokiem, podczas gdy komponenty o otwartym kodzie s\u0105 wykorzystywane w 60% do 80% projekt\u00f3w. Je\u015bli zwr\u00f3cimy si\u0119 do niezale\u017cnych opinii, procesy SCA s\u0105 osobn\u0105 praktyk\u0105 OWASP SAMM i BSIMM jako wska\u017anik dojrza\u0142o\u015bci, a w pierwszej po\u0142owie 2020 roku OWASP wyda\u0142 nowy standard OWASP Software Component Verification Standard (SCVS), dostarczaj\u0105cy najlepsze praktyki w zakresie weryfikacji komponent\u00f3w os\u00f3b trzecich w \u0142a\u0144cuchu dostaw oprogramowania.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/2a82121d42f9d317f3862a2d7869fdd6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nJednym z najbardziej wymownych przypadk\u00f3w <noindex><a rel=\"nofollow\" href=\"https:\/\/xakep.ru\/2017\/09\/14\/equifax-dejstvitelno-vzlomali-cherez-bag-v-apache-struts-no-uyazvimost-okazalas-staroj\/\">zdarzy\u0142 si\u0119<\/a><\/noindex> z firm\u0105 Equifax w maju 2017 roku. Nieznani cyberprzest\u0119pcy uzyskali dost\u0119p do informacji o 143 mln Amerykan\u00f3w, w tym pe\u0142nych imion, adres\u00f3w, numer\u00f3w ubezpieczenia spo\u0142ecznego i praw jazdy. W 209 000 przypadk\u00f3w w dokumentach pojawi\u0142y si\u0119 r\u00f3wnie\u017c informacje o kartach bankowych poszkodowanych. Ta luka mia\u0142a miejsce w wyniku wykorzystania krytycznej podatno\u015bci w Apache Struts 2 (CVE-2017-5638), podczas gdy poprawka zosta\u0142a wydana ju\u017c w marcu 2017 roku. Firma mia\u0142a dwa miesi\u0105ce na wprowadzenie aktualizacji, jednak nikt si\u0119 tym nie zaj\u0105\u0142.<\/p>\n<p>W artykule om\u00f3wiony b\u0119dzie temat wyboru narz\u0119dzia do przeprowadzania SCA z punktu widzenia jako\u015bci wynik\u00f3w analizy. Pojawi si\u0119 tak\u017ce funkcjonalne por\u00f3wnanie narz\u0119dzi. Proces integracji w CI\/CD oraz mo\u017cliwo\u015bci integracji zostawiamy na kolejne publikacje. Szeroki wykaz narz\u0119dzi zosta\u0142 przedstawiony przez OWASP <noindex><a rel=\"nofollow\" href=\"https:\/\/owasp.org\/www-community\/Component_Analysis\">na swojej stronie<\/a><\/noindex>, ale w ramach obecnego przegl\u0105du zajmiemy si\u0119 tylko najpopularniejszym narz\u0119dziem open source Dependency Check, nieco mniej znan\u0105 open source platform\u0105 Dependency Track oraz rozwi\u0105zaniem klasy Enterprise Sonatype Nexus IQ. Ponadto zbadamy, jak te rozwi\u0105zania dzia\u0142aj\u0105 i por\u00f3wnamy uzyskane wyniki pod k\u0105tem fa\u0142szywych pozytyw\u00f3w.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/0580758082abd9950aa9c483d546f1ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Zasada dzia\u0142ania<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/jeremylong.github.io\/DependencyCheck\/\">Dependency Check<\/a><\/noindex> \u2014 to narz\u0119dzie (CLI, modu\u0142 maven, jenkins, ant), kt\u00f3re analizuje pliki projektu, zbiera fragmenty informacji o zale\u017cno\u015bciach (nazwa pakietu, groupid, tytu\u0142 specyfikacji, wersja\u2026), tworzy ci\u0105g CPE \u2014 (Common Platform Enumeration), Package URL (PURL) i wykrywa dla CPE\/PURL podatno\u015bci z baz danych (NVD, Sonatype OSS Index, NPM Audit API\u2026), a nast\u0119pnie generuje jednorazowy raport w formacie HTML, JSON, XML\u2026<\/p>\n<p>Przyjrzyjmy si\u0119, jak wygl\u0105da CPE:<\/p>\n<pre><code class=\"plaintext\">cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other<\/code><\/pre>\n<p><\/p>\n<ul>\n<li><b>Cz\u0119\u015b\u0107:<\/b> Wskazanie, \u017ce komponent dotyczy aplikacji (a), systemu operacyjnego (o), sprz\u0119tu (h) (Wymagany element)<\/li>\n<li><b>Producent:<\/b> Nazwa producenta produktu (Wymagany element)<\/li>\n<li><b>Produkt:<\/b> Nazwa produktu (Wymagany element)<\/li>\n<li><b>Wersja:<\/b> Wersja komponentu (Element przestarza\u0142y)<\/li>\n<li><b>Aktualizacja:<\/b> Aktualizacja pakietu<\/li>\n<li><b>Wydanie:<\/b> Dziedziczona wersja (Element przestarza\u0142y)<\/li>\n<li><b>J\u0119zyk:<\/b> J\u0119zyk okre\u015blony w RFC-5646<\/li>\n<li><b>Wydanie SW:<\/b> Wersja oprogramowania<\/li>\n<li><b>Docelowe SW:<\/b> \u015arodowisko programowe, w kt\u00f3rym dzia\u0142a produkt<\/li>\n<li><b>Docelowe HW:<\/b> \u015arodowisko sprz\u0119towe, w kt\u00f3rym dzia\u0142a produkt<\/li>\n<li><b>Inne:<\/b> Informacje o dostawcy lub produkcie<\/li>\n<\/ul>\n<p>\nPrzyk\u0142ad CPE wygl\u0105da nast\u0119puj\u0105co:<\/p>\n<pre><code class=\"plaintext\">cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*<\/code><\/pre>\n<p>\nCi\u0105g oznacza, \u017ce CPE wersji 2.3 opisuje komponent aplikacji od producenta <code>pivotal_software <\/code>o nazwie <code>spring_framework<\/code> wersji 3.0.0. Je\u015bli otworzymy podatno\u015b\u0107 <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2014-0225\">CVE-2014-0225<\/a><\/noindex> w NVD, to mo\u017cemy zobaczy\u0107 odniesienie do tego CPE. Pierwszy problem, na kt\u00f3ry nale\u017cy zwr\u00f3ci\u0107 uwag\u0119 \u2014 CVE w NVD wed\u0142ug CPE informuje o problemie w frameworku, a nie w konkretnym komponencie. To znaczy, je\u017celi deweloperzy s\u0105 silnie zwi\u0105zani z frameworkiem, a wykryta podatno\u015b\u0107 nie dotyczy tych modu\u0142\u00f3w, kt\u00f3re u\u017cywaj\u0105 deweloperzy, specjalista ds. bezpiecze\u0144stwa pr\u0119dzej czy p\u00f3\u017aniej b\u0119dzie musia\u0142 zbada\u0107 ten CVE i pomy\u015ble\u0107 o aktualizacji.<\/p>\n<p>Adres URL jest r\u00f3wnie\u017c wykorzystywany przez narz\u0119dzia SCA. Format adresu URL pakietu jest nast\u0119puj\u0105cy:<\/p>\n<pre><code class=\"plaintext\">scheme:type\/namespace\/name@version?qualifiers#subpath<\/code><\/pre>\n<p><\/p>\n<ul>\n<li><b>Schemat: <\/b>Zawsze b\u0119dzie &#8216;pkg&#8217;, wskazuj\u0105cy, \u017ce jest to adres URL pakietu (Wymagany element)<\/li>\n<li><b>Typ:<\/b> \u201eTyp\u201d pakietu lub \u201eprotok\u00f3\u0142\u201d pakietu, na przyk\u0142ad maven, npm, nuget, gem, pypi itp. (Wymagany element)<\/li>\n<li><b>Namespace:<\/b> Pewien prefiks nazwy, taki jak identyfikator grupy Maven, w\u0142a\u015bciciel obrazu Docker, u\u017cytkownik lub organizacja GitHub. Nieobowi\u0105zkowy i zale\u017cy od typu.<\/li>\n<li><b>Nazwa:<\/b> Nazwa pakietu (Wymagany element)<\/li>\n<li><b>Wersja:<\/b> Wersja pakietu<\/li>\n<li><b>Qualifiers:<\/b> Dodatkowe dane kwalifikacyjne dla pakietu, takie jak system operacyjny, architektura, dystrybucja itp. Opcjonalne i zale\u017cne od typu elementu.<\/li>\n<li><b>Podkatalog:<\/b> Dodatkowa \u015bcie\u017cka w pakiecie w odniesieniu do katalogu g\u0142\u00f3wnego pakietu<\/li>\n<\/ul>\n<p>\nNa przyk\u0142ad:<\/p>\n<pre><code class=\"plaintext\">pkg:golang\/google.golang.org\/genproto#googleapis\/api\/annotations\npkg:maven\/org.apache.commons\/io@1.3.4\npkg:pypi\/django-package@1.11.1.dev1<\/code><\/pre>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/dependencytrack.org\/\">Dependency Track<\/a><\/noindex> \u2014 lokalna platforma internetowa, kt\u00f3ra przyjmuje gotowe listy materia\u0142\u00f3w (BOM) utworzone <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/CycloneDX\">CycloneDX<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/spdx.org\/licenses\/\">SPDX<\/a><\/noindex>, czyli gotowe specyfikacje o dost\u0119pnych zale\u017cno\u015bciach. Jest to plik XML z opisem zale\u017cno\u015bci - nazwa, hashe, adres URL pakietu, wydawca, licencja. Nast\u0119pnie Dependency Track analizuje BOM, sprawdza dost\u0119pne dla wykrytych zale\u017cno\u015bci CVE w bazie danych luk (NVD, Sonatype OSS Index...), a nast\u0119pnie buduje wykresy, oblicza metryki, regularnie aktualizuj\u0105c dane o statusie luk w komponentach. <\/p>\n<p>Przyk\u0142ad tego, jak mo\u017ce wygl\u0105da\u0107 BOM w formacie XML:<\/p>\n<pre><code class=\"xml\">Apache\n      org.apache.tomcat\n      tomcat-catalina\n      9.0.14\n      \n        3942447fac867ae5cdb3229b658f4d48\n        e6b1000b94e835ffd37f4c6dcbdad43f4b48a02a\n        f498a8ff2dd007e29c2074f5e4b01a9a01775c3ff3aeaf6906ea503bc5791b7b\n        e8f33e424f3f4ed6db76a482fde1a5298970e442c531729119e37991884bdffab4f9426b7ee11fccd074eeda0634d71697d6f88a460dce0ac8d627a29f7d1282\n      \n      \n        \n          Apache-2.0\n        \n      \n      pkg:maven\/org.apache.tomcat\/tomcat-catalina@9.0.14\n    \n      <!-- More components here --><\/code><\/pre>\n<p>\nBOM mo\u017ce by\u0107 u\u017cywane nie tylko jako parametry wej\u015bciowe dla Dependency Track, ale tak\u017ce do inwentaryzacji komponent\u00f3w oprogramowania w \u0142a\u0144cuchu dostaw, na przyk\u0142ad w celu przekazania go klientowi oprogramowania. W 2014 roku w Stanach Zjednoczonych zaproponowano nawet ustaw\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.congress.gov\/bill\/113th-congress\/house-bill\/5793\">\u201eCyber Supply Chain Management and Transparency Act of 2014\u201d<\/a><\/noindex>, kt\u00f3ra stwierdza\u0142a, \u017ce przy zakupie oprogramowania ka\u017cdego urz\u0119dowego instytucja powinna domaga\u0107 si\u0119 BOM w celu zapobiegania u\u017cywaniu podatnych komponent\u00f3w, jednak akt ten nigdy nie wszed\u0142 w \u017cycie.<\/p>\n<p>Wracaj\u0105c do SCA, Dependency Track ma gotowe integracje z platformami powiadomie\u0144, takimi jak Slack, systemami zarz\u0105dzania lukami, takimi jak Kenna Security. Warto r\u00f3wnie\u017c doda\u0107, \u017ce Dependency Track identyfikuje przestarza\u0142e wersje pakiet\u00f3w i dostarcza informacje o licencjach (dzi\u0119ki wsparciu SPDX).<\/p>\n<p>M\u00f3wi\u0105c o jako\u015bci SCA, istnieje zasadnicza r\u00f3\u017cnica.<\/p>\n<p>Dependency Track nie przyjmuje projektu jako danych wej\u015bciowych, a przyjmuje dok\u0142adnie BOM. Oznacza to, \u017ce je\u015bli chcemy sprawdzi\u0107 projekt, musimy najpierw wygenerowa\u0107 bom.xml, na przyk\u0142ad za pomoc\u0105 CycloneDX. W ten spos\u00f3b Dependency Track bezpo\u015brednio zale\u017cy od CycloneDX. Jednocze\u015bnie daje to mo\u017cliwo\u015b\u0107 dostosowania. Tak wi\u0119c zesp\u00f3\u0142 OZON napisa\u0142 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ozonru\/cyclonedx-go\">modu\u0142 CycloneDX<\/a><\/noindex> do generowania plik\u00f3w BOM dla projekt\u00f3w w Golang w celu dalszego skanowania przez Dependency Track.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/sonatype.ru\/#nexusiq\">Nexus IQ<\/a><\/noindex> to komercyjne rozwi\u0105zanie SCA od firmy Sonatype, kt\u00f3re jest cz\u0119\u015bci\u0105 ekosystemu Sonatype, do kt\u00f3rego nale\u017cy r\u00f3wnie\u017c Nexus Repository Manager. Nexus IQ mo\u017ce przyjmowa\u0107 jako dane wej\u015bciowe zar\u00f3wno archiwa war (dla projekt\u00f3w java) przez interfejs webowy lub API, jak i BOM, je\u015bli twoja organizacja nie zd\u0105\u017cy\u0142a przestawi\u0107 si\u0119 z CycloneDX na nowe rozwi\u0105zanie. W przeciwie\u0144stwie do rozwi\u0105za\u0144 open source, IQ odnosi si\u0119 nie tylko do CP\/PURL dla wykrytej komponenty oraz odpowiedniej podatno\u015bci w bazie danych, ale r\u00f3wnie\u017c uwzgl\u0119dnia w\u0142asne badania, na przyk\u0142ad nazw\u0119 podatnej funkcji lub klasy. Mechanizmy IQ zostan\u0105 om\u00f3wione p\u00f3\u017aniej przy analizie wynik\u00f3w.<\/p>\n<p>Podsumujmy niekt\u00f3re funkcjonalne cechy oraz om\u00f3wmy wspierane j\u0119zyki do analizy:<\/p>\n<p>J\u0119zyk<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Java<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>C\/C++<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>C#<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>.Net<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Erlang<br \/>\n\u2014<br \/>\n\u2014<br \/>\n+<\/p>\n<p>JavaScript (NodeJS)<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>PHP<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Python<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Ruby<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Perl<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Scala<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Objective C<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>Swift<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>R<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Go<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>\nFunkcjonalne mo\u017cliwo\u015bci<\/p>\n<p>Funkcjonalne mo\u017cliwo\u015bci<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Mo\u017cliwo\u015b\u0107 zapewnienia weryfikacji komponent\u00f3w u\u017cywanych w kodzie \u017ar\u00f3d\u0142owym pod k\u0105tem czysto\u015bci licencyjnej<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Mo\u017cliwo\u015b\u0107 skanowania i analizy pod k\u0105tem podatno\u015bci i czysto\u015bci licencyjnej dla obraz\u00f3w Docker<br \/>\n+ Integracja z Clair<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Mo\u017cliwo\u015b\u0107 dostosowania polityki bezpiecze\u0144stwa dla u\u017cycia bibliotek open source<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Mo\u017cliwo\u015b\u0107 skanowania repozytori\u00f3w open source pod k\u0105tem podatnych komponent\u00f3w<br \/>\n+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS<br \/>\n\u2014<br \/>\n+ Hex, RubyGems, Maven, NPM, Nuget, Pypi<\/p>\n<p>Obecno\u015b\u0107 wyspecjalizowanej grupy badawczej<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Praca w zamkni\u0119tym obiegu<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Wykorzystanie zewn\u0119trznych baz danych<br \/>\n+ Zamkni\u0119ta baza danych Sonatype<br \/>\n+ Sonatype OSS, NPM Public Advisors<br \/>\n+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, wsparcie w\u0142asnej bazy danych podatno\u015bci<\/p>\n<p>Mo\u017cliwo\u015b\u0107 filtrowania komponent\u00f3w open source podczas pr\u00f3by \u0142adowania ich do obiegu rozwoju zgodnie z skonfigurowanymi politykami<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Zalecenia dotycz\u0105ce naprawy luk w zabezpieczeniach, w tym linki do rozwi\u0105zania<br \/>\n+<br \/>\n+- (zale\u017cy od opisu w publicznych bazach)<br \/>\n+- (zale\u017cy od opisu w publicznych bazach)<\/p>\n<p>Ranking wykrytych luk w zabezpieczeniach pod wzgl\u0119dem krytyczno\u015bci<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Model dost\u0119pu oparty na rolach<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Wsparcie dla interfejsu wiersza polece\u0144 CLI<br \/>\n+<br \/>\n+<br \/>\n+- (tylko dla CycloneDX)<\/p>\n<p>Wyci\u0105ganie \/ sortowanie luk w zabezpieczeniach wed\u0142ug okre\u015blonych kryteri\u00f3w<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Dashboard stanu aplikacji<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Generowanie raport\u00f3w w formacie PDF<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Generowanie raport\u00f3w w formacie JSONCSV<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>Wsparcie dla j\u0119zyka rosyjskiego<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>\nMo\u017cliwo\u015bci integracyjne<\/p>\n<p>Integracja<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Integracja z LDAP\/Active Directory<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Integracja z systemem ci\u0105g\u0142ej integracji (continuous integration) Bamboo<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Integracja z systemem ci\u0105g\u0142ej integracji (continuous integration) TeamCity<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Integracja z systemem ci\u0105g\u0142ej integracji (continuous integration) GitLab<br \/>\n+<br \/>\n+- (w postaci wtyczki do GitLab)<br \/>\n+<\/p>\n<p>Integracja z systemem ci\u0105g\u0142ej integracji (continuous integration) Jenkins<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Obecno\u015b\u0107 wtyczek do IDE<br \/>\n+ IntelliJ, Eclipse, Visual Studio<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Wsparcie dla dostosowanej integracji przez us\u0142ugi sieciowe (API) narz\u0119dzia<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<h3>Dependency Check<\/h3>\n<p><\/p>\n<h4>Pierwsze uruchomienie<\/h4>\n<p>\nUruchomimy Dependency Check na celowo podatnej aplikacji <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appsecco\/dvja\">DVJA<\/a><\/noindex>.<\/p>\n<p>W tym celu skorzystamy z <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jeremylong\/DependencyCheck\">Dependency Check Maven Plugin<\/a><\/noindex>:<\/p>\n<pre><code class=\"plaintext\">mvn org.owasp:dependency-check-maven:check<\/code><\/pre>\n<p>\nW rezultacie w katalogu target pojawi si\u0119 dependency-check-report.html.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/d5b9fe5a8eb68569387dd0bfd38af459.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOtw\u00f3rzmy plik. Po podsumowaniu og\u00f3lnej liczby luk mo\u017cemy zobaczy\u0107 informacje o lukach o wysokim poziomie krytyczno\u015bci i pewno\u015bci, z informacjami o pakiecie, CPE, liczbie CVE.<\/p>\n<p>Nast\u0119pnie mamy bardziej szczeg\u00f3\u0142owe informacje, w tym wskaz\u00f3wki, na podstawie kt\u00f3rych podj\u0119to decyzj\u0119 (dowody), czyli jaki\u015b BOM.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/53dd89b0ff20c4c51aaf7412399e7fd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDalej idzie CPE, PURL i opis CVE. Nale\u017cy zauwa\u017cy\u0107, \u017ce zalecenia dotycz\u0105ce naprawy nie s\u0105 do\u0142\u0105czone z powodu ich braku w bazie NVD.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/ba2021aa8b6bf175383298b2c2a71670.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAby systematycznie przegl\u0105da\u0107 wyniki skanowania, mo\u017cna skonfigurowa\u0107 Nginx z minimalnymi ustawieniami lub przes\u0142a\u0107 wykryte defekty do systemu zarz\u0105dzania defektami, kt\u00f3re obs\u0142uguj\u0105 konektory do Dependency Check. Na przyk\u0142ad, Defect Dojo. <\/p>\n<h3>Dependency Track<\/h3>\n<p><\/p>\n<h4>Instalacja<\/h4>\n<p>\nDependency Track jest z kolei platform\u0105 internetow\u0105 z wykresami, dlatego problem z przechowywaniem defekt\u00f3w w zewn\u0119trznym rozwi\u0105zaniu tutaj nie wyst\u0119puje. <br \/>\nDo instalacji istniej\u0105 nast\u0119puj\u0105ce wspierane scenariusze: Docker, WAR, Executable WAR. <\/p>\n<h4>Pierwsze uruchomienie<\/h4>\n<p>\nPrzechodzimy do adresu URL uruchomionej us\u0142ugi. Logujemy si\u0119 przez admin\/admin, zmieniamy login i has\u0142o, po czym trafiamy na Dashboard. Nast\u0119pnym krokiem b\u0119dzie stworzenie projektu dla aplikacji testowej w Java w<i> Home\/Projects \u2192 Create Project <\/i>. Jako przyk\u0142ad we\u017amiemy DVJA.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/338aaa1c9ca0ac99f2e857f8ce001a02.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPoniewa\u017c Dependency Track mo\u017ce przyjmowa\u0107 jako dane wej\u015bciowe tylko BOM, nale\u017cy go najpierw uzyska\u0107. Skorzystamy z <noindex><a rel=\"nofollow\" href=\"https:\/\/github.coam\/CycloneDX\/cyclonedx-maven-plugin\">CycloneDX Maven Plugin<\/a><\/noindex>:<\/p>\n<pre><code class=\"plaintext\">mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom<\/code><\/pre>\n<p>\nOtrzymujemy bom.xml i przesy\u0142amy plik w stworzonym projekcie <i>DVJA \u2192 Zale\u017cno\u015bci \u2192 Prze\u015blij BOM<\/i>.<\/p>\n<p>Przechodzimy do Administracji \u2192 Analityka. Zauwa\u017camy, \u017ce mamy w\u0142\u0105czony tylko Internal Analyzer, kt\u00f3ry zawiera NVD. Pod\u0142\u0105czymy r\u00f3wnie\u017c Sonatype OSS Index.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/3879a9a3d5f227d9740a984e7b1b91b2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nW ten spos\u00f3b uzyskamy nast\u0119puj\u0105cy obraz naszego projektu:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/004f2ab3383acb87e3d5e8c0fba1f3c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWykaz contains r\u00f3wnie\u017c jedn\u0105 luk\u0119, kt\u00f3ra dotyczy Sonatype OSS:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/e459f08218f890b46fb4050c30da63c8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNajwi\u0119kszym rozczarowaniem by\u0142o to, \u017ce Dependency Track ju\u017c nie przyjmuje raport\u00f3w xml z Dependency Check. Ostatnie wspierane wersje integracji z Dependency Check to by\u0142y 1.0.0 \u2013 4.0.2, podczas gdy testowa\u0142em 5.3.2.<\/p>\n<p>Oto <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/d2WMONyBbTw\">wideo<\/a><\/noindex> (i <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/IPWPISSk5rc\">oto<\/a><\/noindex>), kiedy to jeszcze by\u0142o mo\u017cliwe. <\/p>\n<h3>Nexus IQ <\/h3>\n<p><\/p>\n<h4>Pierwsze uruchomienie<\/h4>\n<p>\nInstalacja Nexus IQ odbywa si\u0119 z archiw\u00f3w przy pomocy <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/iqserver\/installing\/iq-server-installation\">dokumentacji<\/a><\/noindex>, ale dla tych cel\u00f3w stworzyli\u015bmy obraz Docker.<\/p>\n<p>Po zalogowaniu do konsoli nale\u017cy stworzy\u0107 Organizacj\u0119 i Aplikacj\u0119.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/4c6df91bad77e87ea066ff3514a03644.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/d8580ba46852e4d97625a22e215c21d3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/d99ce4e47218001fd1a76722e2633bea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJak wida\u0107, konfiguracja w przypadku IQ jest nieco bardziej skomplikowana, poniewa\u017c musimy r\u00f3wnie\u017c stworzy\u0107 polityki odpowiednie dla r\u00f3\u017cnych \u201eetap\u00f3w\u201d (dev, build, stage, release). Jest to konieczne, aby blokowa\u0107 podatne komponenty w miar\u0119 post\u0119pu w pipeline w kierunku produkcji lub blokowa\u0107 je, gdy tylko trafi\u0105 do Nexus Repo podczas pobierania przez deweloper\u00f3w.<\/p>\n<p>Aby odczu\u0107 r\u00f3\u017cnic\u0119 mi\u0119dzy open source a enterprise, wykonamy takie samo skanowanie przez Nexus IQ, analogicznie do <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/integrations\/sonatype-clm-for-maven\">wtyczki Maven<\/a><\/noindex>, wcze\u015bniej tworz\u0105c aplikacj\u0119 testow\u0105 w interfejsie NexusIQ <code>dvja-test-and-compare<\/code>:<\/p>\n<pre><code class=\"plaintext\">mvn com.sonatype.clm:clm-maven-plugin:evaluate -Dclm.applicationId=dvja-test-and-compare -Dclm.serverUrl= -Dclm.username= -Dclm.password=\n<\/code><\/pre>\n<p>\nPrzechodzimy pod URL do wygenerowanego raportu w interfejsie webowym IQ:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/f81f998037ba53ef62298955077d044d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTutaj mo\u017cna zobaczy\u0107 wszystkie naruszenia polityki z r\u00f3\u017cnym poziomem znaczenia (od Info do Krytycznej Bezpiecze\u0144stwa). Litera D obok komponentu oznacza, \u017ce komponent jest Zale\u017cno\u015bci\u0105 Bezpo\u015bredni\u0105, a litera T obok komponentu oznacza, \u017ce komponent jest Zale\u017cno\u015bci\u0105 Przeno\u015bn\u0105, czyli jest zale\u017cno\u015bci\u0105 po\u015bredni\u0105.<\/p>\n<p>Zreszt\u0105, raport <noindex><a rel=\"nofollow\" href=\"https:\/\/snyk.io\/open-source-security\/\">State of Open Source Security Report 2020<\/a><\/noindex> od Snyk informuje, \u017ce ponad 70% luk w oprogramowaniu open source odkrytych w Node.js, Java i Ruby znajduje si\u0119 w zale\u017cno\u015bciach przeno\u015bnych.<\/p>\n<p>Je\u015bli otworzymy jedno z narusze\u0144 polityki Nexus IQ, mo\u017cemy zobaczy\u0107 opis komponentu oraz Wykres wersji, kt\u00f3ry pokazuje po\u0142o\u017cenie bie\u017c\u0105cej wersji na osi czasowej oraz moment, w kt\u00f3rym podatno\u015b\u0107 przestaje by\u0107 istotna. Wysoko\u015b\u0107 s\u0142upk\u00f3w na wykresie pokazuje popularno\u015b\u0107 u\u017cycia tego komponentu.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/d33968a5ce5904da6f50133f882521fe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJe\u015bli przejdziemy do sekcji podatno\u015bci i rozwinemy CVE, mo\u017cemy przeczyta\u0107 opis tej podatno\u015bci, zalecenia dotycz\u0105ce usuni\u0119cia oraz pow\u00f3d, dla kt\u00f3rego dany komponent zosta\u0142 uznany za naruszaj\u0105cy, czyli obecno\u015b\u0107 klasy <code>DiskFileitem.class<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/6d91b98a9a9a1a62264f1b4194f33ca4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/c9e580ad178a9c0307ed1e63d6dd244d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPodsumujmy tylko te dotycz\u0105ce zewn\u0119trznych komponent\u00f3w Java, pomijaj\u0105c komponenty js. W nawiasach podamy liczb\u0119 podatno\u015bci, kt\u00f3re zosta\u0142y znalezione poza NVD.<\/p>\n<p><b>\u0141\u0105cznie Nexus IQ: <\/b><\/p>\n<ul>\n<li>Skanowane zale\u017cno\u015bci: 62<\/li>\n<li>Podatne zale\u017cno\u015bci: 16<\/li>\n<li>Znalezione podatno\u015bci: 42 (8 baz danych sonatype)<\/li>\n<\/ul>\n<p>\n<b>\u0141\u0105cznie Dependency Check: <\/b><\/p>\n<ul>\n<li>Skanowane zale\u017cno\u015bci: 47<\/li>\n<li>Podatne zale\u017cno\u015bci: 13<\/li>\n<li>Znalezione podatno\u015bci: 91 (14 sonatype oss)<\/li>\n<\/ul>\n<p>\n<b>\u0141\u0105cznie Dependency Track: <\/b><\/p>\n<ul>\n<li>Skanowane zale\u017cno\u015bci: 59<\/li>\n<li>Podatne zale\u017cno\u015bci: 10<\/li>\n<li>Znalezione podatno\u015bci: 51 (1 sonatype oss)<\/li>\n<\/ul>\n<p>\nW nast\u0119pnym kroku przeanalizujemy uzyskane wyniki i dowiemy si\u0119, kt\u00f3re z tych podatno\u015bci s\u0105 rzeczywistymi defektami, a kt\u00f3re fa\u0142szywymi alarmami.<\/p>\n<h3>Wy\u0142\u0105czenie odpowiedzialno\u015bci<\/h3>\n<p>\nTa recenzja nie jest niekwestionowan\u0105 prawd\u0105. Autorem nie kierowa\u0142a intencja wyr\u00f3\u017cnienia jednego narz\u0119dzia spo\u015br\u00f3d innych. Celem recenzji by\u0142o pokazanie mechanizm\u00f3w dzia\u0142ania narz\u0119dzi SCA oraz sposob\u00f3w weryfikacji ich wynik\u00f3w.<\/p>\n<h3>Por\u00f3wnanie wynik\u00f3w<\/h3>\n<p>\n<b>Warunki:<\/b><\/p>\n<p><b>Fa\u0142szywym alarmem w odniesieniu do podatno\u015bci zewn\u0119trznych komponent\u00f3w jest:<\/b><\/p>\n<ul>\n<li><b>Niezgodno\u015b\u0107 CVE z wykryt\u0105 komponent\u0105<\/b><\/li>\n<li>Na przyk\u0142ad, je\u015bli podatno\u015b\u0107 zosta\u0142a wykryta w frameworku struts2, a narz\u0119dzie wskazuje na komponent frameworku struts-tiles, do kt\u00f3rego ta podatno\u015b\u0107 si\u0119 nie odnosi, to jest to fa\u0142szywy alarm.<\/li>\n<li><b>Niezgodno\u015b\u0107 CVE z wykryt\u0105 wersj\u0105 komponentu<\/b><\/li>\n<li>Na przyk\u0142ad, je\u015bli podatno\u015b\u0107 jest przypisana do wersji python &gt; 3.5, a narz\u0119dzie wskazuje na podatn\u0105 wersj\u0119 2.7 \u2014 to jest fa\u0142szywy alarm, poniewa\u017c podatno\u015b\u0107 odnosi si\u0119 tylko do ga\u0142\u0119zi produktu 3.x. <\/li>\n<li> <b>Duplikacja CVE<\/b><\/li>\n<li>Na przyk\u0142ad, je\u015bli SCA wskaza\u0142 na CVE, kt\u00f3ra umo\u017cliwia realizacj\u0119 RCE, a nast\u0119pnie SCA wskazuje dla tej samej komponenty CVE, kt\u00f3re dotyczy produkt\u00f3w Cisco, podatnych na t\u0119 RCE. W takim przypadku b\u0119dzie to fa\u0142szywy alarm.<\/li>\n<li>Na przyk\u0142ad, CVE zosta\u0142a znaleziona w komponencie spring-web, po czym SCA wskazuje na t\u0119 sam\u0105 CVE w innych komponentach frameworka Spring Framework, podczas gdy CVE nie ma zwi\u0105zku z innymi komponentami. W takim przypadku mamy do czynienia z fa\u0142szywym alarmem. <\/li>\n<\/ul>\n<p>\nObiektem badania zosta\u0142 projekt Open Source DVJA. W badaniu uwzgl\u0119dniono jedynie komponenty java (bez js).<\/p>\n<h3>Podsumowanie wynik\u00f3w<\/h3>\n<p>\nPrzejd\u017amy od razu do wynik\u00f3w r\u0119cznego przegl\u0105du zidentyfikowanych podatno\u015bci. Pe\u0142ny raport dla ka\u017cdej CVE jest dost\u0119pny w Za\u0142\u0105czniku. <\/p>\n<p><i>Podsumowanie wynik\u00f3w dotycz\u0105cych wszystkich podatno\u015bci:<\/i><\/p>\n<p>Parametr<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Og\u00f3\u0142em zidentyfikowano podatno\u015bci<br \/>\n42<br \/>\n91<br \/>\n51<\/p>\n<p>B\u0142\u0119dnie zidentyfikowane podatno\u015bci (fa\u0142szywy alarm)<br \/>\n2(4.76%)<br \/>\n62(68,13%)<br \/>\n29(56.86%)<\/p>\n<p>Nie znaleziono odpowiednich podatno\u015bci (fa\u0142szywy brak)<br \/>\n10<br \/>\n20<br \/>\n27<\/p>\n<p>\n<i>Podsumowanie wynik\u00f3w wed\u0142ug komponent\u00f3w:<\/i><\/p>\n<p>Parametr<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Og\u00f3\u0142em zidentyfikowano komponenty<br \/>\n62<br \/>\n47<br \/>\n59<\/p>\n<p>Og\u00f3\u0142em podatnych komponent\u00f3w<br \/>\n16<br \/>\n13<br \/>\n10<\/p>\n<p>B\u0142\u0119dnie zidentyfikowane podatne komponenty (fa\u0142szywy alarm)<br \/>\n1<br \/>\n5<br \/>\n0<\/p>\n<p>B\u0142\u0119dnie zidentyfikowane podatne komponenty (fa\u0142szywy alarm)<br \/>\n0<br \/>\n6<br \/>\n6<\/p>\n<p>\nStw\u00f3rzmy wizualne wykresy, aby oceni\u0107 stosunek fa\u0142szywych alarm\u00f3w i fa\u0142szywych brak\u00f3w do og\u00f3lnej liczby podatno\u015bci. Na osi poziomej oznaczone s\u0105 komponenty, a na osi pionowej zidentyfikowane w nich podatno\u015bci. <\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/967b8e168383299d4a1bf4065f1905ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/2e128ee59e551894c25e4c9e28997008.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/585d7bcef052ef24e4de6c7e1a4e7c0b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDla por\u00f3wnania, podobne badanie zosta\u0142o przeprowadzone przez zesp\u00f3\u0142 Sonatype na pr\u00f3bce 1531 komponent\u00f3w przy u\u017cyciu OWASP Dependency Check. Jak mo\u017cemy zauwa\u017cy\u0107, stosunek szum\u00f3w do poprawnych aktywacji jest por\u00f3wnywalny z naszymi wynikami.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/286c34b84f1400af0285b711b3fe87f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u0179r\u00f3d\u0142o: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.sonatype.com\/why-precision-matters-ebook\">www.sonatype.com\/why-precision-matters-ebook<\/a><\/noindex><\/i><\/p>\n<p>Przyjrzyjmy si\u0119 niekt\u00f3rym CVE z wynik\u00f3w naszego skanowania, aby zrozumie\u0107 przyczyny takich rezultat\u00f3w.<\/p>\n<h3>Dowiedz si\u0119 wi\u0119cej<\/h3>\n<p><\/p>\n<h4>Nr 1<\/h4>\n<p>\nZacznijmy od om\u00f3wienia kilku interesuj\u0105cych punkt\u00f3w dotycz\u0105cych Sonatype Nexus IQ.<\/p>\n<p>Nexus IQ wskazuje na problem z deserializacj\u0105, co mo\u017ce prowadzi\u0107 do wykonania RCE w Spring Framework, wielokrotnie. CVE-2016-1000027 w spring-web:3.0.5 po raz pierwszy oraz CVE-2011-2894 w spring-context:3.0.5 i spring-core:3.0.5. Na pocz\u0105tku wydaje si\u0119, \u017ce mamy do czynienia z powt\u00f3rzeniem podatno\u015bci w kilku CVE. Je\u015bli spojrzymy na CVE-2016-1000027 i CVE-2011-2894 w bazie NVD, wszystko wydaje si\u0119 by\u0107 oczywiste.<\/p>\n<p>Komponent<br \/>\nLuka<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2016-1000027<\/p>\n<p>spring-context:3.0.5<br \/>\nCVE-2011-2894<\/p>\n<p>spring-core:3.0.5<br \/>\nCVE-2011-2894<\/p>\n<p>\nOpis <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2011-2894\">CVE-2011-2894<\/a><\/noindex> z NVD:<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/31b403eca6d7541c766c9a560bfbe6b7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOpis <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2016-1000027\">CVE-2016-1000027<\/a><\/noindex> z NVD:<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/d5b54a6ac15070b12f013eaacd2878f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCVE-2011-2894 jest sama w sobie do\u015b\u0107 znana. W raporcie <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pwntester.com\/blog\/2013\/12\/16\/cve-2011-2894-deserialization-spring-rce\/\">White Source z 2011 roku<\/a><\/noindex> ta CVE by\u0142a uznawana za jedn\u0105 z najcz\u0119\u015bciej wyst\u0119puj\u0105cych. Opis dla CVE-2016-100027 jest zasadniczo nieco ograniczony w NVD, a wydaje si\u0119, \u017ce jest zastosowana jedynie w Spring Framework 4.1.4. Przyjrzyjmy si\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">reference<\/a><\/noindex> i w tym momencie staje si\u0119 to bardziej zrozumia\u0142e. Z <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">artyku\u0142u Tenable<\/a><\/noindex> rozumiemy, \u017ce poza podatno\u015bci\u0105 w <code>RemoteInvocationSerializingExporter<\/code> w CVE-2011-2894, podatno\u015b\u0107 wyst\u0119puje w <code>HttpInvokerServiceExporter<\/code>. O tym m\u00f3wi nam Nexus IQ:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/a33f0853ce892d28eafafe2c8e7b2228.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJednak nic takiego nie ma w NVD, przez co Dependency Check i Dependency Track otrzymuj\u0105 fa\u0142szywe negatywy.<\/p>\n<p>Z opisu CVE-2011-2894 mo\u017cna wnioskowa\u0107, \u017ce podatno\u015b\u0107 rzeczywi\u015bcie wyst\u0119puje r\u00f3wnie\u017c w spring-context:3.0.5 i spring-core:3.0.5. Potwierdzenie tego mo\u017cna znale\u017a\u0107 w artykule od osoby, kt\u00f3ra odkry\u0142a t\u0119 podatno\u015b\u0107.<\/p>\n<h4>\u21162<\/h4>\n<p><\/p>\n<p>Komponent<br \/>\nLuka<br \/>\nWynik<\/p>\n<p>struts2-core:2.3.30<br \/>\nCVE-2016-4003<br \/>\nFA\u0141SZ<\/p>\n<p>\nJe\u017celi zbadamy podatno\u015b\u0107 CVE-2016-4003, zrozumiemy, \u017ce zosta\u0142a naprawiona ju\u017c w wersji 2.3.28, a mimo to Nexus IQ o niej informuje. W opisie podatno\u015bci znajduje si\u0119 uwaga:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza\" src=\"\/wp-content\/uploads\/2020\/08\/081f9006748083727e424b709a338d60.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOznacza to, \u017ce podatno\u015b\u0107 istnieje tylko w po\u0142\u0105czeniu ze starsz\u0105 wersj\u0105 JRE, o czym postanowiono nas ostrzec. Mimo to uznajemy to za fa\u0142szywy pozytyw, cho\u0107 nie najgro\u017aniejszy.<\/p>\n<h4>\u2116 3<\/h4>\n<p><\/p>\n<p>Komponent<br \/>\nLuka<br \/>\nWynik<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-9804<br \/>\nPRAWDA<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-7672<br \/>\nFA\u0141SZ<\/p>\n<p>\nJe\u017celi spojrzymy na opis CVE-2017-9804 i CVE-2017-7672, zrozumiemy, \u017ce problem dotyczy <code>klasy URLValidator<\/code>, przy czym CVE-2017-9804 wynika z CVE-2017-7672. Obecno\u015b\u0107 drugiej podatno\u015bci nie niesie ze sob\u0105 \u017cadnych przydatnych informacji opr\u00f3cz tego, \u017ce jej powaga wzros\u0142a do wysokiej, wi\u0119c mo\u017cna uzna\u0107 to za zb\u0119dny ha\u0142as.<\/p>\n<p>Og\u00f3lnie nie znaleziono innych fa\u0142szywych pozytyw\u00f3w dla Nexus IQ.<\/p>\n<h3>\u21164<\/h3>\n<p>\nJest kilka kwestii, kt\u00f3re wyr\u00f3\u017cniaj\u0105 IQ na tle innych rozwi\u0105za\u0144.<\/p>\n<p>Komponent<br \/>\nLuka<br \/>\nWynik<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2020-5398<br \/>\nPRAWDA<\/p>\n<p>CVE w NVD informuje, \u017ce dotyczy tylko wersji 5.2.x do 5.2.3, 5.1.x do 5.1.13 oraz wersji 5.0.x do 5.0.16, jednak je\u015bli spojrzymy na opis CVE w Nexus IQ, zobaczymy co\u015b innego:<br \/>\n<i>Advisory Deviation Notice: Zesp\u00f3\u0142 badawczy ds. bezpiecze\u0144stwa Sonatype odkry\u0142, \u017ce ta podatno\u015b\u0107 zosta\u0142a wprowadzona w wersji 3.0.2.RELEASE, a nie 5.0.x, jak podano w poradniku.<\/i><\/p>\n<p>Po tym nast\u0119puje PoC dotycz\u0105cy tej podatno\u015bci, kt\u00f3ry informuje, \u017ce wyst\u0119puje ona w wersji 3.0.5.<\/p>\n<p>Fa\u0142szywy negatyw jest wysy\u0142any do Dependency Check i Dependency Track.<\/p>\n<h3>\u21165<\/h3>\n<p>\nSp\u00f3jrzmy na fa\u0142szywe pozytywy dla Dependency Check i Dependency Track.<\/p>\n<p>Dependency Check wyra\u017anie zwraca uwag\u0119 na te CVE, kt\u00f3re odnosz\u0105 si\u0119 do ca\u0142ego frameworka w NVD, w odniesieniu do komponent\u00f3w, do kt\u00f3rych te CVE nie maj\u0105 zastosowania. Dotyczy to CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, kt\u00f3re Dependency Check \"przywi\u0105za\u0142\" do struts-taglib:1.3.8 i struts-tiles-1.3.8. Te komponenty nie maj\u0105 nic wsp\u00f3lnego z tym, co opisano w CVE \u2013 obs\u0142uga zapyta\u0144, walidacja stron itd. To wynika z faktu, \u017ce wsp\u00f3lne dla tych CVE i komponent\u00f3w jest tylko framework, co sprawia, \u017ce Dependency Check uzna\u0142 to za podatno\u015b\u0107.<\/p>\n<p>Sytuacja jest podobna w przypadku spring-tx:3.0.5 oraz w przypadku struts-core:1.3.8. Dla struts-core narz\u0119dzia Dependency Check i Dependency Track wykry\u0142y wiele podatno\u015bci, kt\u00f3re tak naprawd\u0119 dotycz\u0105 struts2-core, kt\u00f3ry w zasadzie jest odr\u0119bnym frameworkiem. W tym przypadku Nexus IQ poprawnie zrozumia\u0142 sytuacj\u0119 i w CVE, kt\u00f3re poda\u0142, wskaza\u0142, \u017ce struts-core osi\u0105gn\u0105\u0142 koniec wsparcia i nale\u017cy przej\u015b\u0107 do struts2-core.<\/p>\n<h3>Nr 6<\/h3>\n<p>\nW niekt\u00f3rych sytuacjach interpretowanie oczywistego b\u0142\u0119du przez Dependency Check i Dependency Track jest niesprawiedliwe. W szczeg\u00f3lno\u015bci CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, kt\u00f3re Dependency Check i Dependency Track przypisa\u0142y do spring-core:3.0.5, tak naprawd\u0119 odnosz\u0105 si\u0119 do spring-web:3.0.5. Cz\u0119\u015b\u0107 z tych CVE zosta\u0142a te\u017c wykryta przez Nexus IQ, jednak IQ poprawnie przypisa\u0142 je do innego komponentu. To, \u017ce te podatno\u015bci nie zosta\u0142y wykryte w spring-core, nie oznacza, \u017ce ich tam nie ma, a narz\u0119dzia open source s\u0142usznie wskaza\u0142y na te podatno\u015bci (po prostu troch\u0119 si\u0119 pomyli\u0142y). <\/p>\n<h3>Wnioski<\/h3>\n<p>\nJak wida\u0107, ocena prawdziwo\u015bci wykrytych podatno\u015bci podczas przegl\u0105du r\u0119cznego nie daje jednoznacznych wynik\u00f3w, co prowadzi do kontrowersji. Wyniki pokazuj\u0105, \u017ce rozwi\u0105zanie Nexus IQ ma najmniejszy wska\u017anik fa\u0142szywych alarm\u00f3w i najwi\u0119ksz\u0105 dok\u0142adno\u015b\u0107. <\/p>\n<p>Przede wszystkim jest to zwi\u0105zane z tym, \u017ce zesp\u00f3\u0142 Sonatype rozszerzy\u0142 opis ka\u017cdej podatno\u015bci CVE z NVD w swoich bazach, precyzuj\u0105c co do klasy lub funkcji podatno\u015bci dla danej wersji komponentu, przeprowadzaj\u0105c dodatkowe badania (na przyk\u0142ad sprawdzaj\u0105c podatno\u015bci na starszych wersjach oprogramowania). <\/p>\n<p>Znaczenie maj\u0105 r\u00f3wnie\u017c te podatno\u015bci, kt\u00f3re nie znalaz\u0142y si\u0119 w NVD, ale mimo to wyst\u0119puj\u0105 w bazie Sonatype z oznaczeniem SONATYPE. Zgodnie z raportem <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">Stan podatno\u015bci bezpiecze\u0144stwa open source 2020<\/a><\/noindex> oko\u0142o 45% odkrytych podatno\u015bci w oprogramowaniu open source nie jest zg\u0142aszanych do NVD. Zgodnie z baz\u0105 danych WhiteSource, tylko 29% wszystkich podatno\u015bci open source, zarejestrowanych poza NVD, ostatecznie jest w niej publikowanych, dlatego tak wa\u017cne jest poszukiwanie podatno\u015bci tak\u017ce w innych \u017ar\u00f3d\u0142ach.<\/p>\n<p>W efekcie Dependency Check generuje du\u017c\u0105 ilo\u015b\u0107 szum\u00f3w, pomijaj\u0105c cz\u0119\u015b\u0107 podatnych komponent\u00f3w. Dependency Track generuje mniejszy szum i identyfikuje du\u017c\u0105 liczb\u0119 komponent\u00f3w, co wizualnie nie razi w oczy w interfejsie webowym.<\/p>\n<p>Niemniej jednak praktyka pokazuje, \u017ce to w\u0142a\u015bnie open source powinien sta\u0107 si\u0119 pierwszym krokiem w kierunku dojrza\u0142ego DevSecOps. Pierwsz\u0105 rzecz\u0105, nad kt\u00f3r\u0105 nale\u017cy si\u0119 zastanowi\u0107 w kontek\u015bcie implementacji SCA w rozw\u00f3j, s\u0105 procesy, a mianowicie wsp\u00f3lne rozmy\u015blania z kierownictwem i pokrewnymi dzia\u0142ami na temat tego, jak powinny wygl\u0105da\u0107 idealne procesy w organizacji. Mo\u017ce si\u0119 okaza\u0107, \u017ce dla Twojej organizacji na pocz\u0105tkowym etapie Dependency Check lub Dependency Track pokryj\u0105 wszystkie istotne potrzeby biznesowe, a rozwi\u0105zania Enterprise b\u0119d\u0105 logicznym przed\u0142u\u017ceniem w zwi\u0105zku ze wzrastaj\u0105c\u0105 z\u0142o\u017cono\u015bci\u0105 rozwijanych aplikacji.<\/p>\n<p>                        <b class=\"spoiler_title\">Aplikacja A. Wyniki dotycz\u0105ce komponent\u00f3w<\/b><br \/>\n                        <b>Oznaczenia:<\/b><\/p>\n<ul>\n<li>High \u2014 luki o wysokim i krytycznym poziomie w komponencie<\/li>\n<li>Medium \u2014 Luka o \u015brednim poziomie krytyczno\u015bci w komponencie<\/li>\n<li>TRUE \u2014 Prawid\u0142owo zidentyfikowana luka (True positive issue)<\/li>\n<li>FALSE \u2014 Fa\u0142szywe alarm (False positive issue)<\/li>\n<\/ul>\n<p><\/p>\n<p>Komponent<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nWynik<\/p>\n<p>dom4j: 1.6.1<br \/>\nWysoki<br \/>\nWysoki<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>log4j-core: 2.3<br \/>\nWysoki<br \/>\nWysoki<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>log4j: 1.2.14<br \/>\nWysoki<br \/>\nWysoki<br \/>\n\u2014<br \/>\nPRAWDA<\/p>\n<p>commons-collections:3.1<br \/>\nWysoki<br \/>\nWysoki<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>commons-fileupload:1.3.2<br \/>\nWysoki<br \/>\nWysoki<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>commons-beanutils:1.7.0<br \/>\nWysoki<br \/>\nWysoki<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>commons-codec:1:10<br \/>\nMedium<br \/>\n\u2014<br \/>\n\u2014<br \/>\nPRAWDA<\/p>\n<p>mysql-connector-java:5.1.42<br \/>\nWysoki<br \/>\nWysoki<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>spring-expression:3.0.5<br \/>\nWysoki<br \/>\nkomponent nie znaleziony<\/p>\n<p>PRAWDA<\/p>\n<p>spring-web:3.0.5<br \/>\nWysoki<br \/>\nkomponent nie znaleziony<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>spring-context:3.0.5<br \/>\nMedium<br \/>\nkomponent nie znaleziony<br \/>\n\u2014<br \/>\nPRAWDA<\/p>\n<p>spring-core:3.0.5<br \/>\nMedium<br \/>\nWysoki<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>struts2-config-browser-plugin:2.3.30<br \/>\nMedium<br \/>\n\u2014<br \/>\n\u2014<br \/>\nPRAWDA<\/p>\n<p>spring-tx:3.0.5<br \/>\n\u2014<br \/>\nWysoki<br \/>\n\u2014<br \/>\nFA\u0141SZ<\/p>\n<p>struts-core:1.3.8<br \/>\nWysoki<br \/>\nWysoki<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>xwork-core: 2.3.30<br \/>\nWysoki<br \/>\n\u2014<br \/>\n\u2014<br \/>\nPRAWDA<\/p>\n<p>struts2-core: 2.3.30<br \/>\nWysoki<br \/>\nWysoki<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>struts-taglib:1.3.8<br \/>\n\u2014<br \/>\nWysoki<br \/>\n\u2014<br \/>\nFA\u0141SZ<\/p>\n<p>struts-tiles-1.3.8<br \/>\n\u2014<br \/>\nWysoki<br \/>\n\u2014<br \/>\nFA\u0141SZ<\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">Aplikacja B. Wyniki dotycz\u0105ce luk<\/b><br \/>\n                        <b>Oznaczenia:<\/b><\/p>\n<ul>\n<li>High \u2014 luki o wysokim i krytycznym poziomie w komponencie<\/li>\n<li>Medium \u2014 Luka o \u015brednim poziomie krytyczno\u015bci w komponencie<\/li>\n<li>TRUE \u2014 Prawid\u0142owo zidentyfikowana luka (True positive issue)<\/li>\n<li>FALSE \u2014 Fa\u0142szywe alarm (False positive issue)<\/li>\n<\/ul>\n<p><\/p>\n<p>Komponent<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nSeverity<br \/>\nWynik<br \/>\nKomentarz<\/p>\n<p>dom4j: 1.6.1<br \/>\nCVE-2018-1000632<br \/>\nCVE-2018-1000632<br \/>\nCVE-2018-1000632<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2020-10683<br \/>\nCVE-2020-10683<br \/>\nCVE-2020-10683<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>log4j-core: 2.3<br \/>\nCVE-2017-5645<br \/>\nCVE-2017-5645<br \/>\nCVE-2017-5645<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2020-9488<br \/>\nCVE-2020-9488<br \/>\nCVE-2020-9488<br \/>\nNiski<br \/>\nPRAWDA<\/p>\n<p>log4j: 1.2.14<br \/>\nCVE-2019-17571<br \/>\nCVE-2019-17571<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\nCVE-2020-9488<br \/>\n\u2014<br \/>\nNiski<br \/>\nPRAWDA<\/p>\n<p>SONATYPE-2010-0053<br \/>\n\u2014<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>commons-collections:3.1<br \/>\n\u2014<br \/>\nCVE-2015-6420<br \/>\nCVE-2015-6420<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nDuplikat RCE(OSSINDEX)<\/p>\n<p>\u2014<br \/>\nCVE-2017-15708<br \/>\nCVE-2017-15708<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nDuplikat RCE(OSSINDEX)<\/p>\n<p>SONATYPE-2015-0002<br \/>\nRCE (OSSINDEX)<br \/>\nRCE(OSSINDEX)<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>commons-fileupload:1.3.2<br \/>\nCVE-2016-1000031<br \/>\nCVE-2016-1000031<br \/>\nCVE-2016-1000031<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>SONATYPE-2014-0173<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>commons-beanutils:1.7.0<br \/>\nCVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\nCVE-2019-10086<br \/>\nCVE-2019-10086<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka dotyczy tylko wersji 1.9.2+<\/p>\n<p>commons-codec:1:10<br \/>\nSONATYPE-2012-0050<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>mysql-connector-java:5.1.42<br \/>\nCVE-2018-3258<br \/>\nCVE-2018-3258<br \/>\nCVE-2018-3258<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2019-2692<br \/>\nCVE-2019-2692<br \/>\n\u2014<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\nCVE-2020-2875<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nTa sama luka co CVE-2019-2692, ale z dopiskiem \"ataki mog\u0105 znacz\u0105co wp\u0142yn\u0105\u0107 na dodatkowe produkty\"<\/p>\n<p>\u2014<br \/>\nCVE-2017-15945<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nNie dotyczy mysql-connector-java<\/p>\n<p>\u2014<br \/>\nCVE-2020-2933<br \/>\n\u2014<br \/>\nNiski<br \/>\nFA\u0141SZ<br \/>\nDuplikat CVE-2020-2934<\/p>\n<p>CVE-2020-2934<br \/>\nCVE-2020-2934<br \/>\n\u2014<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>spring-expression:3.0.5<br \/>\nCVE-2018-1270<br \/>\nkomponent nie znaleziony<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2018-1257<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2016-1000027<br \/>\nkomponent nie znaleziony<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2014-0225<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2011-2730<br \/>\n\u2014<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2013-4152<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>CVE-2018-1272<br \/>\n\u2014<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2020-5398<br \/>\n\u2014<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<br \/>\nPrzyk\u0142ad wspieraj\u0105cy IQ: \"Zesp\u00f3\u0142 bada\u0144 bezpiecze\u0144stwa Sonatype odkry\u0142, \u017ce ta luka zosta\u0142a wprowadzona w wersji 3.0.2.RELEASE, a nie w 5.0.x, jak podano w komunikacie.\"<\/p>\n<p>CVE-2013-6429<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>CVE-2014-0054<br \/>\n\u2014<br \/>\nCVE-2014-0054<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>CVE-2013-6430<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>spring-context:3.0.5<br \/>\nCVE-2011-2894<br \/>\nkomponent nie znaleziony<br \/>\n\u2014<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>spring-core:3.0.5<br \/>\n\u2014<br \/>\nCVE-2011-2730<br \/>\nCVE-2011-2730<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2011-2894<br \/>\nCVE-2011-2894<br \/>\nCVE-2011-2894<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2013-4152<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nDuplikat tej samej luki w spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka dotyczy komponentu spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\nCVE-2013-6429<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka dotyczy komponentu spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka dotyczy komponentu spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\nCVE-2013-7315<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nSPLIT z CVE-2013-4152. + Luka dotyczy komponentu spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\nCVE-2014-0054<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka dotyczy komponentu spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka dotyczy komponentu spring-web<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nDuplikat tej samej luki w spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\nCVE-2014-1904<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka dotyczy komponentu spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\nCVE-2014-3625<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka dotyczy komponentu spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\nCVE-2016-9878<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka dotyczy komponentu spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\nCVE-2018-1270<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nDla spring-expression \/ spring-messages<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\nCVE-2018-1271<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka dotyczy komponentu spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2018-1272<br \/>\nCVE-2018-1272<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2014-3578<br \/>\nCVE-2014-3578 (OSSINDEX)<br \/>\nCVE-2014-3578<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>SONATYPE-2015-0327<br \/>\n\u2014<br \/>\n\u2014<br \/>\nNiski<br \/>\nPRAWDA<\/p>\n<p>struts2-config-browser-plugin:2.3.30<br \/>\nSONATYPE-2016-0104<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nPRAWDA<\/p>\n<p>spring-tx:3.0.5<br \/>\n\u2014<br \/>\nCVE-2011-2730<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2011-2894<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1272<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka nie dotyczy spring-tx<\/p>\n<p>struts-core:1.3.8<br \/>\n\u2014<br \/>\nCVE-2011-5057 (OSSINDEX)<\/p>\n<p>Medium<br \/>\nFASLE<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0391 (OSSINDEX)<br \/>\nCVE-2012-0391<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0094 (OSSINDEX)<br \/>\nCVE-2014-0094<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0113 (OSSINDEX)<br \/>\nCVE-2014-0113<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>CVE-2016-1182<br \/>\n3VE-2016-1182<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2011-5057<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0392 (OSSINDEX)<br \/>\nCVE-2012-0392<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0393 (OSSINDEX)<br \/>\nCVE-2012-0393<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>CVE-2015-0899<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\nCVE-2012-0394<br \/>\nCVE-2012-0394<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0838 (OSSINDEX)<br \/>\nCVE-2012-0838<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1965 (OSSINDEX)<br \/>\nCVE-2013-1965<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1966 (OSSINDEX)<br \/>\nCVE-2013-1966<br \/>\nWysoki<br \/>\nFASLE<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\nCVE-2013-2115<br \/>\nWysoki<br \/>\nFASLE<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2134 (OSSINDEX)<br \/>\nCVE-2013-2134<br \/>\nWysoki<br \/>\nFASLE<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2135 (OSSINDEX)<br \/>\nCVE-2013-2135<br \/>\nWysoki<br \/>\nFASLE<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>CVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\nCVE-2015-2992<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2016-0785 (OSSINDEX)<br \/>\nCVE-2016-0785<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>CVE-2016-1181<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\nCVE-2016-4003 (OSSINDEX)<br \/>\nCVE-2016-4003<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nLuka dotycz\u0105ca Struts 2<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-9804<br \/>\n\u2014<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>SONATYPE-2017-0173<br \/>\n\u2014<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2017-7672<br \/>\n\u2014<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nDuplikat do CVE-2017-9804<\/p>\n<p>SONATYPE-2016-0127<br \/>\n\u2014<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>struts2-core:2.3.30<br \/>\n\u2014<br \/>\nCVE-2016-6795<br \/>\nCVE-2016-6795<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\nCVE-2017-9787<br \/>\nCVE-2017-9787<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\nCVE-2017-9791<br \/>\nCVE-2017-9791<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\nCVE-2017-9793<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nDuplikat do CVE-2018-1327<\/p>\n<p>\u2014<br \/>\nCVE-2017-9804<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>\u2014<br \/>\nCVE-2017-9805<br \/>\nCVE-2017-9805<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2016-4003<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nDotyczy Apache Struts 2.x przed 2.3.28, a to jest wersja 2.3.30. Niemniej jednak, na podstawie opisu, CVE dzia\u0142a przy wszystkich wersjach Struts 2, je\u015bli u\u017cywana jest JRE 1.7 i ni\u017csze. Wygl\u0105da na to, \u017ce postanowili si\u0119 tu zabezpieczy\u0107, ale bardziej przypomina to FA\u0141SZ.<\/p>\n<p>\u2014<br \/>\nCVE-2018-1327<br \/>\nCVE-2018-1327<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2017-5638<br \/>\nCVE-2017-5638<br \/>\nCVE-2017-5638<br \/>\nWysoki<br \/>\nPRAWDA<br \/>\nTo ta sama luka, kt\u00f3rej u\u017cyli przest\u0119pcy w Equifax w 2017 roku.<\/p>\n<p>CVE-2017-12611<br \/>\nCVE-2017-12611<br \/>\n\u2014<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>CVE-2018-11776<br \/>\nCVE-2018-11776<br \/>\nCVE-2018-11776<br \/>\nWysoki<br \/>\nPRAWDA<\/p>\n<p>struts-taglib:1.3.8<br \/>\n\u2014<br \/>\nCVE-2012-0394<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nDo struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nDo struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nDo commons-beanutils<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nNie dotyczy taglib<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nDotyczy struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nNie dotyczy taglib<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nNie dotyczy taglib<\/p>\n<p>struts-tiles-1.3.8<br \/>\n\u2014<br \/>\nCVE-2012-0394<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nDo struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nDo struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nPod commons-beanutils<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nNie dotyczy tiles<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\nMedium<br \/>\nFA\u0141SZ<br \/>\nDo struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nNie dotyczy taglib<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nWysoki<br \/>\nFA\u0141SZ<br \/>\nNie dotyczy taglib<\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/516660\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u041f\u041e (\u0430\u043d\u0433\u043b. Software Composition Analysis \u2014 SCA) \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0430\u0441\u0442\u0435\u0442 \u043f\u043e \u043c\u0435\u0440\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0435\u0436\u0435\u0433\u043e\u0434\u043d\u044b\u0445 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u043e\u0431 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u0445 open source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u043c\u0438 Synopsys, Sonatype, Snyk, White Source. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043e\u0442\u0447\u0435\u0442\u0443 The State of Open Source Security Vulnerabilities 2020 \u0447\u0438\u0441\u043b\u043e \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 open source \u0432 2019 \u0432\u044b\u0440\u043e\u0441\u043b\u043e \u043f\u043e\u0447\u0442\u0438 \u0432 1.5 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92520,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92519","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u041f\u041e (\u0430\u043d\u0433\u043b.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47DevSecOps: \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 SCA. \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u041f\u041e (\u0430\u043d\u0433\u043b.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-28T05:42:26+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-28T05:42:26+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47DevSecOps: zasady dzia\u0142ania i por\u00f3wnanie SCA. Cz\u0119\u015b\u0107 pierwsza | ProHoster","description":"Znaczenie analizy zewn\u0119trznych komponent\u00f3w oprogramowania (ang.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47DevSecOps: \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 SCA. \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f | ProHoster","og:description":"\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u041f\u041e (\u0430\u043d\u0433\u043b.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-28T05:42:26+00:00","article:modified_time":"2020-08-28T05:42:26+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92519","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:06:40","updated":"2022-10-01 01:38:08","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/92519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=92519"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/92519\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/92520"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=92519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=92519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=92519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}