Vuls가 Alpine Linux를 지원했습니다.

안녕하세요, Vuls의 조금, 사우나 삼촌입니다.
컨테이너용 경량 OS인, Alpine Linux입니다만 상당히 유행하고 있는 것 같네요. Docker의 공식 이미지도 Alpine 베이스가 되고 있다든가. Docker Official Images are Moving to Alpine Linux


GitHub의 ISSUE나 Slack에서도 Alpine, Alpine, 별로 유문이니까 대응하지 않으면 안 하고 있었어.
드디어 얼마 전 기세로 구현한 Vuls:#545을 병합한 걸로 Vuls의 스캔 가능한 OS에 Alpine Linux이 추가되었습니다.
사용법은 Vuls:#545 에 쓰고 있기 때문에 그것 봐 달라고 해, 이 Vuls Advent Calendar3일째에서는 어떤 느낌으로 Alpine Linux에 대응했는지를 써 보겠습니다.

Alpine Linux에서 제공하는 취약성 정보



alpine-secdb 에서 YAML 형식으로 제공되고 있어.
현재는 v3.2 - v3.6의 취약성 정보가 제공되고 있는군요. 링크

v3.6의 정보를 보면 각 버전에 대해
- community.yaml
- main.yaml
의 2 파일에 걸쳐 제공되고 있습니다. 왜 2개로 나뉘어져 있는가?
Vuls의 Issue 경유로 공식 위키에 그 이유가 실려 있다는 정보가 있다.
htps : // 우우키. A lPinene x. 오 rg / uki / 에나 b ぇ_ 콧물에 ty_ 레포시와 ry
Starting with Alpine Linux version 3.3, there is a new repository called community.
Many packages have been moved from the main repository to community to 
indicate that they are not guaranteed to be supported beyond six months. 
If you are using any of these packages, be sure to add the community repository.

그리고, 2개 보면 좋지, 라고.
so in my opinion it would make sense to check against both - why should we left of users of software from the community repo

YAML의 내용은, 이런 느낌.
packages:
  - pkg:
      name: apache2
      secfixes:
        2.4.27-r1:
          - CVE-2017-9798
        2.4.26-r0:
          - CVE-2017-3167
          - CVE-2017-3169
          - CVE-2017-7659
          - CVE-2017-7668
          - CVE-2017-7679
        2.4.27-r0:
          - CVE-2017-9789

패키지명, 버전명, 고쳐진 CVE-ID의 리스트가 된다. 이 정보를 사용할 수 없습니다.

Alpine-secdb 캡처



2017/12/3 시점의 Vuls에서는, 인터넷상에 공개되고 있는 취약성 데이터베이스를 사용해 거기에 Vuls로부터 액세스하기 쉽게 하기 위해서 이하의 2개의 툴을 만들어 사용하고 있다.

  • go-cve-dictionary
  • 미국 NIST에서 제공 NVD
  • IPA가 제공하는 일본어 취약성 정보 JVN


  • goval-dictionary
  • Linux 기반 배포자가 제공하는 OVAL 형식의 취약성 데이터베이스


  • 그래서, 이번 Alpine-secdb를 어쨌든 Vuls에 넣을까라고 고민하고, 다른 툴로서 리포지토리 나눠줄까-와도 생각이 들었는데, 그렇게 되면 셋업의 수고가 늘어나므로 그래일까, 음등 사우나로 고민해 결국 alpine-secdb를 억지로 OVAL 형식으로 변환하여 통합하기로 했다. OVAL 형식으로 하는 편이 Vuls 본체측의 실장이 편해지네요.

    그것이 이것 goval-dictionary:#22
    Alpine-secdb에서 YAML을 페치 해 와서 DB에 넣어 뿐.

    이용 예는 여기에 썼다.

    Vuls 측 구현



    이 풀릭 Vuls:#545이 Vuls측의 구현이야.
    구현은 간단했다.
    이하, 무엇을 하고 있는지 써라.
  • Alpine Linux를 판별
  • ls /etc/alpine-release 로 판별하고 있어
  • serverspec의 구현을 철저하게 참고하겠습니다.

  • 설치된 소프트웨어 목록을 가져옵니다 부분
  • apk info -v
  • 업데이트 후의 버전을 취해 간다 부분
  • apk version 를 퍼스 하고 있다


  • 기본 그냥 대응할 수 있었어. OVAL 형식으로 했기 때문에 기존의 구현에 탔다.
    저는 OVAL 형식에 맞춰서 좋았어요. 천재입니다.

    그런데 사우나에서도 가자(토요일 20:40기)

    좋은 웹페이지 즐겨찾기