Vuls의 cpeNames에서 새로 설치된 pseudo를 활용

6019 단어 cpevulsrepovuls

개요


최근에 Vuls에서 구현된 cpeNames에서 pseudo의 사용 방법을 기록합니다.
지금까지 호스트의 항목에 cpeNames를 추가해야 합니다.
예를 들어, 네트워크 디바이스의 cpeNames를 등록하는 경우 호스트를 추가로 설정해야 합니다.이런 상황에서 그것은 cpe:/...명칭의 포장으로 간주되고 보기 어렵다.type=pseudo의 가져오기는 cpeNames의 검사 결과를 더욱 쉽게 볼 수 있게 한다.

주의 사항


원래 CPE는 NVD에 등록되지 않았을 가능성이 있습니다.
  • 예를 들어 1-2년 전WordPress 버전은 3개의 시스템만 등록했다.
  • 지금 등록되어 있습니다.
  • 등록되지 않은 제품도 있다.
  • 예를 들어 야마하 공유기의 RT1200이 있지만 RT1210 등이 없다.
  • CPE 정보가 업데이트되었는지 여부는 NVD만 알 수 있습니다.
  • CPE를 검색해 최근 버전으로 등록하면 향후 등록 가능성도 높다.
  • 검색 결과 주 버전 이전 버전에만 등록하면 CPE 정보가 업데이트되지 않고 Vuls에 로그인해도 유용한 결과를 얻지 못할 수 있음(Vuls의 원인이 아니라 CPE 정보 자체가 없기 때문).
  • 등록한 부분은 문제가 없기 때문에 CPE 업데이트를 기다리기 위해 먼저 등록하는 전략도 있다고 본다.
  • 시용하다


    vuls 업그레이드


    2017/11/06 업데이트된 버전과 이후의 Vuls가 필요합니다.
    그렇지 않으면 뒤의 정확한 설정에도 다음과 같은 오류가 발생할 수 있습니다.
  • 수정되었으니 먼저 업데이트
  • vuls@localhost:~$ vuls configtest
    [Nov  1 00:00:00] ERROR [localhost] Error loading /opt/vuls/config.toml, network is invalid. User is empty
    [Nov  1 00:00:00] ERROR [localhost] If you update Vuls and get this error, there may be incompatible changes in config.toml
    [Nov  1 00:00:00] ERROR [localhost] Please check README: https://github.com/future-architect/vuls#configuration
    vuls@localhost:~$ 
    

    config.toml 편집


    일반적으로 [servers] 아래에 [servers.HOSTNAME]라고 쓰여 있으며, 새로운 호스트로 cpe를 만들어 한데 모은 것이다.
    예를 들어 호스트 이름이 네트워크로 통합되기를 원할 때 다음과 같다.
    [default]
    
    [servers]
    
    [servers.localhost]
    host = "localhost"
    port = "local"
    
    [servers.network]
    type="pseudo"
    cpeNames = [
      "cpe:/o:cisco:ios:15.5t",
      "cpe:/o:yamaha:rtx1200:10.01.22",
      "cpe:/o:yamaha:rtx1100:8.03.83",
    ]
    
    상기 config에서 다음과 같은 내용을 보여 주기를 기대합니다.
  • 호스트 이름:localhost로 로컬 스캔
  • 호스트 이름: 네트워크에서 Cisco IOS, YAMAHA RTX1100/RTX1200 펌웨어 모니터링
  • 호스트 검색과 달리 host 또는 port 항목이 필요하지 않습니다.type=pseudocpeNames 항목만 있으면 됩니다.
  • cpeNames를 가져옵니다.


    예를 들어 사과 IOS라면 go-cpe-dictionary의 DB로서의 cpe이다.db로 확인하세요.
    vuls@localhost:~$ sqlite3 ./cpe.db 'select name from cpes' | grep cisco | grep ios | grep 15
    cpe:/a:cisco:ios:15.2%282%29ea
    cpe:/a:cisco:ios:15.2%282%29ea1
    cpe:/a:cisco:ios:15.2%282%29eb
    cpe:/a:cisco:ios:15.2%282%29eb1
    cpe:/o:cisco:ios:11.1%2815%29
    ...
    vuls@localhost:~$ sqlite3 ./cpe.db 'select name from cpes' | grep cisco | grep ios:15.6
    cpe:/o:cisco:ios:15.6%280.17%29t
    cpe:/o:cisco:ios:15.6%281%29t0a
    cpe:/o:cisco:ios:15.6%282%29sn
    cpe:/o:cisco:ios:15.6%282%29sp
    cpe:/o:cisco:ios:15.6%282%29sp1
    cpe:/o:cisco:ios:15.6%283%29m
    cpe:/o:cisco:ios:15.6%283%29m1b
    cpe:/o:cisco:ios:15.6%283%29m2
    cpe:/o:cisco:ios:15.6%283%29m2a
    cpe:/o:cisco:ios:15.6%283%29m3
    vuls@localhost:~$ 
    
    이것을 보았는데 예를 들면 15.6(3)m3cpe:/o:cisco:ios:15.6%283%29m3에 등록했다.
    찾으려면 공장 이름과 제품 등을 소문자로 입력해 CPE명의 도안을 보고 등록하는 것이 좋다.

    스캔


    평소처럼 스캔해 볼게요.
  • 스캔할 때Detected: network: pseudo에서 식별된 것 같습니다.
  • vuls@terra00:~/scripts$ ./vuls-scan 
    [Nov  1 00:00:00]  INFO [localhost] Start scanning
    [Nov  1 00:00:00]  INFO [localhost] config: /opt/vuls/config.toml
    [Nov  1 00:00:00]  INFO [localhost] Validating config...
    [Nov  1 00:00:00]  INFO [localhost] Detecting Server/Container OS... 
    [Nov  1 00:00:00]  INFO [localhost] Detecting OS of servers... 
    [Nov  1 00:00:00]  INFO [localhost] (1/2) Detected: network: pseudo 
    [Nov  1 00:00:00]  INFO [localhost] (2/2) Detected: localhost: ubuntu 16.04
    [Nov  1 00:00:00]  INFO [localhost] Detecting OS of containers... 
    [Nov  1 00:00:00]  INFO [localhost] Detecting Platforms... 
    [Nov  1 00:00:03]  INFO [localhost] (1/2) network is running on other
    [Nov  1 00:00:03]  INFO [localhost] (2/2) localhost is running on other
    [Nov  1 00:00:03]  INFO [localhost] Scanning vulnerabilities... 
    [Nov  1 00:00:03]  INFO [localhost] Open boltDB: /opt/vuls/cache.db
    [Nov  1 00:00:03]  INFO [localhost] Scanning vulnerable OS packages...
    [Nov  1 00:00:03]  INFO [localhost] apt-get update...
    ...
    
    VulsRepo에서 볼 때 Hostname은 localhost와 네트워크 두 종류로 나뉜다.

    여기에는 왼쪽에 Package를 추가하면 RTX1200 및 CiscoIOS에 대한 평가가 표시됩니다.
  • RTX1100에 기재되지 않은 것은 등록된 8.03.83이 최종 버전 이전에 있었고 최종 버전에는 CVE를 분배하는 취약성이 포함되지 않았기 때문이다.
  • cpeNames


    CPE에 대한 개요, 참조IPA 자료
    필요한 cpeNames 획득 방법을 적으십시오.
  • cpe.db가 있는 디렉터리에서 다음 확인을 실행합니다.
  • $ sqlite3 ./cpe.db 'select name from cpes' | grep "<調べたいもの>"
  • 다양한 이름이 나왔는데 어떤 이름을 선택하시겠습니까?
  • 우선 범주
  • cpe:/h:…용 하드웨어
  • cpe:/h:cisco:catalyst_2950:-는 사과 Catallyst2950입니다.
  • cpe:/o:…용 OS
  • cpe:/o:google:android:7.1.2는 안드로이드 7시리즈의 마지막이다.
  • cpe:/a:… 애플리케이션
  • cpe:/a:apache:struts:2.3.33는 Apache Struts2입니다.3 계열
  • 공급업체 이름, 제품 이름, 최신 버전 -1의 버전이 있으면 사용합니다.
  • 예를 들어, Apache Struts의 경우 2.3/2.5입니다.
  • 최신 버전은 CPE에 등록되지 않은 것 같습니다.
  • 업데이트 시 이전 버전으로 CPE에 등록하시겠습니까?
  • 물품에 따라 예컨대 VMwareToolscpe:/a:vmware:tools:9.4.5도 등록됐다.

    총결산


    위에서 말한 바와 같이 "servers. 총집합용 이름"에 type="pseudo"쓰기cpeNames만 하면 됩니다.
    네트워크 장치의 대수가 적으면 모든 공유기의 서버로 집합할 수 있고 버전이 통일되면 미리 등록할 수 있습니다.
    또한 cpeName은 서버가 속한 시스템에 따라 요약할 수도 있습니다.
  • 인사 시스템의 Struts, 공유기의 cpeNames, 영업 수업의 wordpress, 공유기의 cpeNames 등.
  • 지금까지 호스트 종속 방식으로 등록했기 때문에 시스템별로 등록하는 등
  • 마지막으로 네트워크 장치의 펌웨어를 당연하게 보면 기존의 펌웨어 버전을 알아야 합니다.

    좋은 웹페이지 즐겨찾기