Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d08787902a | ||
|
|
a752f65658 | ||
|
|
e50040883f | ||
|
|
55a46992d4 |
No files matched your search
@@ -1,3 +1,9 @@
|
||||
## Release 2.8.3
|
||||
|
||||
The docker API client version, used by the proxy package and the weaveutil command, was bumped from 1.18 to 1.24. As of March 2024, Docker API versions below 1.24 are deprecated. This means that the minimum supported Docker version is now 1.12.0.
|
||||
|
||||
Provision was made in weaveutil program and the weave script to override the API version used, via the environment variable `DOCKER_API_VERSION`. The same variable is used by standard docker clients.
|
||||
|
||||
## Release 2.8.2
|
||||
|
||||
This is the first release since forking from weaveworks/weave. While no new functionality has been added, there have been many changes.
|
||||
|
||||
@@ -4,7 +4,7 @@ This repository contains a fork of Weave Net, the first product developed by Wea
|
||||
|
||||
[](https://goreportcard.com/report/github.com/rajch/weave)
|
||||
[](https://hub.docker.com/r/rajchaudhuri/weave-kube)
|
||||

|
||||

|
||||
[](reweave/scans/report.md)
|
||||
|
||||
The history of the ReWeave effort can be found in [HISTORY.md](HISTORY.md).
|
||||
|
||||
@@ -14,7 +14,7 @@ func containerAddrs(args []string) error {
|
||||
}
|
||||
bridgeName := args[0]
|
||||
|
||||
client, err := docker.NewVersionedClientFromEnv("1.18")
|
||||
client, err := newVersionedDockerClientFromEnv(defaulDockerAPIVersion)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
)
|
||||
|
||||
func inspectContainer(containerNameOrID string) (*docker.Container, error) {
|
||||
c, err := docker.NewVersionedClientFromEnv("1.18")
|
||||
c, err := newVersionedDockerClientFromEnv(defaulDockerAPIVersion)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to connect to docker: %s", err)
|
||||
}
|
||||
@@ -174,7 +174,7 @@ func parseContainerArgs(args []string) docker.CreateContainerOptions {
|
||||
func runContainer(args []string) error {
|
||||
containerOptions := parseContainerArgs(args)
|
||||
|
||||
c, err := docker.NewVersionedClientFromEnv("1.18")
|
||||
c, err := newVersionedDockerClientFromEnv(defaulDockerAPIVersion)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to connect to docker: %s", err)
|
||||
}
|
||||
@@ -206,7 +206,7 @@ func listContainers(args []string) error {
|
||||
cmdUsage("list-containers", "[<label>]")
|
||||
}
|
||||
|
||||
c, err := docker.NewVersionedClientFromEnv("1.18")
|
||||
c, err := newVersionedDockerClientFromEnv(defaulDockerAPIVersion)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to connect to docker: %s", err)
|
||||
}
|
||||
@@ -233,7 +233,7 @@ func stopContainer(args []string) error {
|
||||
cmdUsage("stop-container", "<container-id> [<container-id2> ...]")
|
||||
}
|
||||
|
||||
c, err := docker.NewVersionedClientFromEnv("1.18")
|
||||
c, err := newVersionedDockerClientFromEnv(defaulDockerAPIVersion)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to connect to docker: %s", err)
|
||||
}
|
||||
@@ -252,7 +252,7 @@ func killContainer(args []string) error {
|
||||
cmdUsage("kill-container", "<container-id> [<container-id2> ...]")
|
||||
}
|
||||
|
||||
c, err := docker.NewVersionedClientFromEnv("1.18")
|
||||
c, err := newVersionedDockerClientFromEnv(defaulDockerAPIVersion)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to connect to docker: %s", err)
|
||||
}
|
||||
@@ -288,7 +288,7 @@ func removeContainer(args []string) error {
|
||||
}
|
||||
}
|
||||
|
||||
c, err := docker.NewVersionedClientFromEnv("1.18")
|
||||
c, err := newVersionedDockerClientFromEnv(defaulDockerAPIVersion)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to connect to docker: %s", err)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
docker "github.com/fsouza/go-dockerclient"
|
||||
)
|
||||
|
||||
const defaulDockerAPIVersion = "1.24"
|
||||
const swarmDockerAPIVersion = "1.26"
|
||||
|
||||
// newVersionedDockerClientFromEnv offers some control over the version
|
||||
// of the docker client weaveutil uses for a number of operations.
|
||||
// The version specified by the caller, usually defaulDockerAPIVersion,
|
||||
// may be overridden by setting an environment variable called
|
||||
// DOCKER_API_VERSION.
|
||||
func newVersionedDockerClientFromEnv(apiVersionString string) (*docker.Client, error) {
|
||||
overridenAPIVersion, ok := os.LookupEnv("DOCKER_API_VERSION")
|
||||
if ok && overridenAPIVersion != "" {
|
||||
apiVersionString = overridenAPIVersion
|
||||
}
|
||||
return docker.NewVersionedClientFromEnv(apiVersionString)
|
||||
}
|
||||
@@ -90,6 +90,8 @@ func usage() {
|
||||
for cmd := range commands {
|
||||
fmt.Fprintln(os.Stderr, cmd)
|
||||
}
|
||||
fmt.Fprintln(os.Stderr)
|
||||
fmt.Fprintf(os.Stderr, "Set an environment variable called DOCKER_API_VERSION to control the API version used.\nDefault is: %v\n", defaulDockerAPIVersion)
|
||||
}
|
||||
|
||||
func cmdUsage(cmd string, usage string) {
|
||||
|
||||
@@ -75,9 +75,9 @@ func isDockerPluginEnabled(args []string) error {
|
||||
}
|
||||
|
||||
func newDockerClient() (*docker.Client, error) {
|
||||
// API 1.21 is the first version that supports docker network
|
||||
// commands
|
||||
c, err := docker.NewVersionedClientFromEnv("1.21")
|
||||
// API 1.21 was the first version that supports docker network
|
||||
// commands. In March 2024, the minimum suupported API is 1.24
|
||||
c, err := newVersionedDockerClientFromEnv(defaulDockerAPIVersion)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to connect to docker: %s", err)
|
||||
}
|
||||
|
||||
@@ -4,12 +4,10 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/fsouza/go-dockerclient"
|
||||
docker "github.com/fsouza/go-dockerclient"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
const DOCKER_API_VERSION = "1.26"
|
||||
|
||||
func swarmManagerPeers(args []string) error {
|
||||
info, err := dockerInfo()
|
||||
if err != nil {
|
||||
@@ -32,7 +30,7 @@ func swarmManagerPeers(args []string) error {
|
||||
}
|
||||
|
||||
func dockerInfo() (*docker.DockerInfo, error) {
|
||||
client, err := docker.NewVersionedClientFromEnv(DOCKER_API_VERSION)
|
||||
client, err := newVersionedDockerClientFromEnv(swarmDockerAPIVersion)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "docker.NewVersionedClientFromEnv")
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ func createVolumeContainer(args []string) error {
|
||||
label := args[2]
|
||||
bindMounts := args[3:]
|
||||
|
||||
c, err := docker.NewVersionedClientFromEnv("1.18")
|
||||
c, err := newVersionedDockerClientFromEnv(defaulDockerAPIVersion)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to connect to docker: %s", err)
|
||||
}
|
||||
|
||||
@@ -2,7 +2,10 @@ package proxy
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"slices"
|
||||
"strings"
|
||||
|
||||
docker "github.com/fsouza/go-dockerclient"
|
||||
)
|
||||
|
||||
type createExecInterceptor struct{ proxy *Proxy }
|
||||
@@ -18,7 +21,19 @@ func (i *createExecInterceptor) InterceptRequest(r *http.Request) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, hasWeaveWait := container.Volumes["/w"]; !hasWeaveWait {
|
||||
// The .Volumes property seems to have been replaced with .Mounts in Docker
|
||||
// API 1.20.
|
||||
// .Volumes was a list, where the key was the mount path or destination
|
||||
// .Mounts is an array of objects, where the .Destination property
|
||||
// corresponds to the old .Volumes list key.
|
||||
//
|
||||
// if _, hasWeaveWait := container.Volumes["/w"]; !hasWeaveWait {
|
||||
// return nil
|
||||
// }
|
||||
mountIndex := slices.IndexFunc(container.Mounts, func(m docker.Mount) bool {
|
||||
return m.Destination == "/w"
|
||||
})
|
||||
if mountIndex == -1 {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
+42
-6
@@ -9,6 +9,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"slices"
|
||||
"strings"
|
||||
"sync"
|
||||
"syscall"
|
||||
@@ -125,6 +126,16 @@ func (j attachJob) Stop() {
|
||||
j.timer.Stop()
|
||||
}
|
||||
|
||||
const defaulDockerAPIVersion = "1.24"
|
||||
|
||||
func dockerAPIVersion() string {
|
||||
overridenAPIVersion, ok := os.LookupEnv("DOCKER_API_VERSION")
|
||||
if ok && overridenAPIVersion != "" {
|
||||
return overridenAPIVersion
|
||||
}
|
||||
return defaulDockerAPIVersion
|
||||
}
|
||||
|
||||
func StubProxy(c Config) (*Proxy, error) {
|
||||
p := &Proxy{
|
||||
Config: c,
|
||||
@@ -139,7 +150,14 @@ func StubProxy(c Config) (*Proxy, error) {
|
||||
// to insulate ourselves from breaking changes to the API, as
|
||||
// happened in 1.20 (Docker 1.8.0) when the presentation of
|
||||
// volumes changed in `inspect`.
|
||||
client, err := weavedocker.NewVersionedClient(c.DockerHost, "1.18")
|
||||
// Updated in March 2024: We can't do that any more. Protocol
|
||||
// version has to be updated to minimum 1.24.
|
||||
// The presentation of volumes aspect has been handled later in
|
||||
// this file. There may be other breaking changes if we change
|
||||
// the protocol again, so will wait and watch.
|
||||
// The default, 1.24, can be overridden using an environment
|
||||
// variable called DOCKER_API_VERSION.
|
||||
client, err := weavedocker.NewVersionedClient(c.DockerHost, dockerAPIVersion())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -212,15 +230,33 @@ func (proxy *Proxy) findVolume(v string) (string, error) {
|
||||
return "", fmt.Errorf("Could not find the weavewait volume: %s", err)
|
||||
}
|
||||
|
||||
if container.Volumes == nil {
|
||||
return "", fmt.Errorf("Could not find the weavewait volume")
|
||||
// The .Volumes property seems to have been replaced with .Mounts in Docker
|
||||
// API 1.20.
|
||||
// .Volumes was a list, where the key was the mount path or destination
|
||||
// .Mounts is an array of objects, where the .Destination property
|
||||
// corresponds to the old .Volumes list key.
|
||||
//
|
||||
// if container.Volumes == nil {
|
||||
// return "", fmt.Errorf("Could not find the weavewait volume - no volumes : %+v", container)
|
||||
// }
|
||||
//
|
||||
// volume, ok := container.Volumes[v]
|
||||
// if !ok {
|
||||
// return "", fmt.Errorf("Could not find the weavewait volume named '%v' : %+v", v, container)
|
||||
// }
|
||||
mounts := container.Mounts
|
||||
if mounts == nil {
|
||||
return "", fmt.Errorf("Could not find the weavewait volume - no volumes : %+v", container)
|
||||
}
|
||||
|
||||
volume, ok := container.Volumes[v]
|
||||
if !ok {
|
||||
return "", fmt.Errorf("Could not find the weavewait volume")
|
||||
mountIndex := slices.IndexFunc(mounts, func(m docker.Mount) bool {
|
||||
return m.Destination == v
|
||||
})
|
||||
if mountIndex < 0 {
|
||||
return "", fmt.Errorf("Could not find the weavewait volume named '%v' : %+v", v, container)
|
||||
}
|
||||
|
||||
volume := container.Mounts[mountIndex].Name
|
||||
return volume, nil
|
||||
}
|
||||
|
||||
|
||||
+25
-1
@@ -2,7 +2,31 @@
|
||||
|
||||
All changes made to the weave net codebase during the reweave effort will be documented in this file.
|
||||
|
||||
## 2.8.2 latest
|
||||
## 2.8.3
|
||||
|
||||
### Changed
|
||||
|
||||
* Changed version in `reweave/Makefile` to 2.8.3
|
||||
* Modified reweave and main CHANGELOG.md
|
||||
* Modified the `weave` script
|
||||
|
||||
## 2.8.3-beta1 (a752f656)
|
||||
|
||||
### Changed
|
||||
|
||||
* The docker API client version, used by the proxy package and the weaveutil command, was bumped from 1.18 to 1.24. As of March 2024, Docker API versions below 1.24 are deprecated. This means that the minimum supported Docker version is now 1.12.0
|
||||
* The scan report now scans all images other than the V2 Docker plugin
|
||||
|
||||
### Added
|
||||
|
||||
* Provision was made in weaveutil program and the weave script to override the API version used, via the environment variable `DOCKER_API_VERSION`. The same variable is used by standard docker clients
|
||||
|
||||
### Fixed
|
||||
|
||||
* Fixed `proxy.go` in the proxy package to handle changes in the Docker API. In the 1.24 API, container objects expose a `.Mounts` property rather than a `.Volumes` property.
|
||||
* The `weave` script was modified to add a `-t` switch when invoking functionality inside a container. This ensures that output is visible even when using the Weave docker proxy
|
||||
|
||||
## 2.8.2 (7b087168)
|
||||
|
||||
### Changed
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
IMAGE_VERSION ?= 2.8.2
|
||||
IMAGE_VERSION ?= 2.8.3
|
||||
REGISTRY_USER ?= rajchaudhuri
|
||||
|
||||
ALPINE_BASEIMAGE ?= alpine:3.19.1
|
||||
|
||||
+79
-4
@@ -1,11 +1,14 @@
|
||||
# Vulnerability Report
|
||||
|
||||
Report date: 2024-03-03
|
||||
```
|
||||
Report date: 2024-03-08
|
||||
Unique vulnerability count: 14
|
||||
Images version: 2.8.2
|
||||
Images version: 2.8.3
|
||||
```
|
||||
|
||||
## Scanner Details
|
||||
|
||||
```
|
||||
Application: grype
|
||||
Version: 0.74.7
|
||||
BuildDate: 2024-02-26T18:24:14Z
|
||||
@@ -16,11 +19,13 @@ GoVersion: go1.21.7
|
||||
Compiler: gc
|
||||
Syft Version: v0.105.1
|
||||
Supported DB Schema: 5
|
||||
```
|
||||
|
||||
## Vulnerabilities
|
||||
|
||||
weave-kube: (14)
|
||||
### weave-kube: (14)
|
||||
|
||||
```
|
||||
NAME INSTALLED FIXED-IN TYPE VULNERABILITY SEVERITY
|
||||
busybox 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
@@ -36,9 +41,11 @@ ssl_client 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
```
|
||||
|
||||
weave-npc: (12)
|
||||
### weave-npc: (12)
|
||||
|
||||
```
|
||||
NAME INSTALLED FIXED-IN TYPE VULNERABILITY SEVERITY
|
||||
busybox 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
@@ -52,3 +59,71 @@ ssl_client 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
```
|
||||
|
||||
### weave: (14)
|
||||
|
||||
```
|
||||
NAME INSTALLED FIXED-IN TYPE VULNERABILITY SEVERITY
|
||||
busybox 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
curl 8.5.0-r0 apk CVE-2024-0853 Medium
|
||||
libuv 1.47.0-r0 apk CVE-2024-24806 High
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
```
|
||||
|
||||
### weaveexec: (14)
|
||||
|
||||
```
|
||||
NAME INSTALLED FIXED-IN TYPE VULNERABILITY SEVERITY
|
||||
busybox 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
curl 8.5.0-r0 apk CVE-2024-0853 Medium
|
||||
libuv 1.47.0-r0 apk CVE-2024-24806 High
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
```
|
||||
|
||||
### weavedb: (0)
|
||||
|
||||
```
|
||||
No vulnerabilities found
|
||||
```
|
||||
|
||||
### network-tester: (14)
|
||||
|
||||
```
|
||||
NAME INSTALLED FIXED-IN TYPE VULNERABILITY SEVERITY
|
||||
busybox 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
curl 8.5.0-r0 apk CVE-2024-0853 Medium
|
||||
libuv 1.47.0-r0 apk CVE-2024-24806 High
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
```
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
NAME INSTALLED FIXED-IN TYPE VULNERABILITY SEVERITY
|
||||
busybox 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
curl 8.5.0-r0 apk CVE-2024-0853 Medium
|
||||
libuv 1.47.0-r0 apk CVE-2024-24806 High
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
@@ -1,13 +0,0 @@
|
||||
NAME INSTALLED FIXED-IN TYPE VULNERABILITY SEVERITY
|
||||
busybox 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
busybox 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
busybox-binsh 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42366 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42365 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42364 Medium
|
||||
ssl_client 1.36.1-r15 apk CVE-2023-42363 Medium
|
||||
@@ -5,6 +5,7 @@ set -e
|
||||
# required.
|
||||
: "${IMAGE_VERSION:=}"
|
||||
: "${REGISTRY_USER:=}"
|
||||
: "${IMAGE_LIST:=weave-kube weave-npc weave weaveexec weavedb network-tester}"
|
||||
|
||||
if [ -z "${IMAGE_VERSION}" ] || [ -z "${REGISTRY_USER}" ] ; then
|
||||
>&2 echo "Please provide valid values for IMAGE_VERSION and REGISTRY_USER."
|
||||
@@ -13,11 +14,6 @@ fi
|
||||
|
||||
echo "Scanning images and collecting data..."
|
||||
|
||||
# Currently, we are interested only in the weave-kube and weave-npc
|
||||
# images.
|
||||
WEAVE_KUBE_IMAGE="${REGISTRY_USER}/weave-kube:${IMAGE_VERSION}"
|
||||
WEAVE_NPC_IMAGE="${REGISTRY_USER}/weave-npc:${IMAGE_VERSION}"
|
||||
|
||||
# Get directory of script file
|
||||
a="/$0"; a="${a%/*}"; a="${a:-.}"; a="${a##/}/"; BINDIR=$(cd "$a"; pwd)
|
||||
|
||||
@@ -26,32 +22,49 @@ SCANDIR="${BINDIR}/../scans"
|
||||
mkdir -p "${SCANDIR}"
|
||||
|
||||
# Scan images
|
||||
grype "${WEAVE_KUBE_IMAGE}" --add-cpes-if-none >"${SCANDIR}/weave-kube-list-vulns.txt"
|
||||
grype "${WEAVE_NPC_IMAGE}" --add-cpes-if-none >"${SCANDIR}/weave-npc-list-vulns.txt"
|
||||
for im in ${IMAGE_LIST};do
|
||||
grype "${REGISTRY_USER}/${im}:${IMAGE_VERSION}" --add-cpes-if-none >"${SCANDIR}/${im}-list-vulns.txt"
|
||||
done
|
||||
|
||||
UNIQUECOUNT=$(tail -n +2 -q "${SCANDIR}/weave-npc-list-vulns.txt" "${SCANDIR}/weave-kube-list-vulns.txt" | sort -u | wc -l)
|
||||
#UNIQUECOUNT=$(tail -n +2 -q "${SCANDIR}/weave-npc-list-vulns.txt" "${SCANDIR}/weave-kube-list-vulns.txt" | sort -u | wc -l)
|
||||
UNIQUECOUNT=$(tail -n +2 -q "${SCANDIR}"/*-list-vulns.txt | sort -u | wc -l)
|
||||
BADGECOLOR="blue"
|
||||
|
||||
if [ "$UNIQUECOUNT" -gt "0" ]; then
|
||||
BADGECOLOR="orange"
|
||||
fi
|
||||
|
||||
echo "Generating report..."
|
||||
|
||||
# Produce report
|
||||
printf "# Vulnerability Report\n\n" > "${SCANDIR}/report.md"
|
||||
{
|
||||
printf "\`\`\`\n"
|
||||
printf "Report date: %s\n" "$(date +'%Y-%m-%d')"
|
||||
printf "Unique vulnerability count: %s\n" "${UNIQUECOUNT}"
|
||||
#tail -n +2 -q "${SCANDIR}/weave-npc-list-vulns.txt" "${SCANDIR}/weave-kube-list-vulns.txt" | sort -u | wc -l
|
||||
printf "Images version: %s\n" "${IMAGE_VERSION}"
|
||||
printf "\`\`\`\n"
|
||||
printf "\n## Scanner Details\n\n"
|
||||
printf "\`\`\`\n"
|
||||
grype version
|
||||
printf "\n## Vulnerabilities\n\nweave-kube: (%s) \n\n" "$(tail +2 "${SCANDIR}/weave-kube-list-vulns.txt" | wc -l)"
|
||||
cat "${SCANDIR}/weave-kube-list-vulns.txt"
|
||||
printf "\nweave-npc: (%s)\n\n" "$(tail +2 "${SCANDIR}/weave-npc-list-vulns.txt" | wc -l)"
|
||||
cat "${SCANDIR}/weave-npc-list-vulns.txt"
|
||||
printf "\`\`\`\n"
|
||||
printf "\n## Vulnerabilities\n\n"
|
||||
for im in ${IMAGE_LIST};do
|
||||
printf "### ${im}: (%s) \n\n" "$(tail +2 "${SCANDIR}/${im}-list-vulns.txt" | wc -l)"
|
||||
printf "\`\`\`\n"
|
||||
cat "${SCANDIR}/${im}-list-vulns.txt"
|
||||
printf "\`\`\`\n\n"
|
||||
done
|
||||
|
||||
} >> "${SCANDIR}/report.md"
|
||||
|
||||
rm -f "${SCANDIR}"/*-list-vulns.txt
|
||||
|
||||
echo "Generating badge..."
|
||||
|
||||
# Produce Vulnerability Count badge json for README
|
||||
cat <<EOBADGE > "${SCANDIR}/badge.json"
|
||||
{"schemaVersion": 1, "label": "Vulnerabilty count", "message": "${UNIQUECOUNT}", "color": "${BADGECOLOR}"}
|
||||
EOBADGE
|
||||
EOBADGE
|
||||
|
||||
echo "Done."
|
||||
@@ -3,16 +3,17 @@ set -e
|
||||
|
||||
[ -n "$WEAVE_DEBUG" ] && set -x
|
||||
|
||||
# Release Version
|
||||
SCRIPT_VERSION="unreleased"
|
||||
IMAGE_VERSION=latest
|
||||
[ "$SCRIPT_VERSION" = "unreleased" ] || IMAGE_VERSION=$SCRIPT_VERSION
|
||||
IMAGE_VERSION=${WEAVE_VERSION:-$IMAGE_VERSION}
|
||||
|
||||
# Minimum tested version of Docker + Weave Net
|
||||
MIN_DOCKER_VERSION=1.10.0
|
||||
MIN_DOCKER_VERSION=1.12.0
|
||||
|
||||
# These are needed for remote execs, hence we introduce them here
|
||||
DOCKERHUB_USER=${DOCKERHUB_USER:-weaveworks}
|
||||
DOCKERHUB_USER=${DOCKERHUB_USER:-rajchaudhuri}
|
||||
BASE_EXEC_IMAGE=$DOCKERHUB_USER/weaveexec
|
||||
EXEC_IMAGE=$BASE_EXEC_IMAGE:$IMAGE_VERSION
|
||||
WEAVEDB_IMAGE=$DOCKERHUB_USER/weavedb:latest
|
||||
@@ -95,8 +96,8 @@ where <peer> = <ip_address_or_fqdn>[:<port>]
|
||||
<peer_id> = <nickname> | <weave internal peer ID>
|
||||
<mode> = consensus[=<count>] | seed=<mac>,... | observer
|
||||
|
||||
To troubleshoot and visualize Weave networks, try Weave Cloud: http://www.weave.works/product/cloud/
|
||||
EOF
|
||||
# To troubleshoot and visualize Weave networks, try Weave : http://www.weave.works/product/cloud/
|
||||
}
|
||||
|
||||
usage() {
|
||||
@@ -155,6 +156,8 @@ exec_remote() {
|
||||
-e COVERAGE \
|
||||
-e CHECKPOINT_DISABLE \
|
||||
-e AWSVPC \
|
||||
-e DOCKER_API_VERSION \
|
||||
-t \
|
||||
$WEAVEEXEC_DOCKER_ARGS $EXEC_IMAGE --local "$@"
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user