:vulcan_salute: Fast, modern, easy-to-use network scanner

sx

License Build Status GoReportCard Status

sx is the command-line network scanner designed to follow the UNIX philosophy.

The goal of this project is to create the fastest network scanner with clean and simple code.

📖 Table of Contents

Features

  • 30x times faster than nmap
  • ARP scan: Scan your local networks to detect live devices
  • ICMP scan: Use advanced ICMP scanning techniques to detect live hosts and firewall rules
  • TCP SYN scan: Traditional half-open scan to find open TCP ports
  • TCP FIN / NULL / Xmas scans: Scan techniques to bypass some firewall rules
  • Custom TCP scans with any TCP flags: Send whatever exotic packets you want and get a result with all the TCP flags set in the reply packet
  • UDP scan: Scan UDP ports and get full ICMP replies to detect open ports or firewall rules
  • Application scans:
    • SOCKS5 scan: Detect live SOCKS5 proxies by scanning ip range or list of ip/port pairs from a file
    • Docker scan: Detect open Docker daemons listening on TCP ports and get information about the docker node
    • Elasticsearch scan: Detect open Elasticsearch nodes and pull out cluster information with all index names
  • JSON output support: sx is designed specifically for convenient automatic processing of results

🛠 Build from source

Requirements:

From the root of the source tree, run:

go build

🚀 Quick Start

Here's a quick examples showing how you can scan networks with sx.

ARP scan

Scan your local network and display the IP address, MAC address and associated hardware vendor of connected devices:

sx arp 192.168.0.1/24

sample output:

192.168.0.1          b0:be:76:40:05:8d    TP-LINK TECHNOLOGIES CO.,LTD.
192.168.0.111        80:c5:f2:0b:02:e3    AzureWave Technology Inc.
192.168.0.171        88:53:95:2d:3c:af    Apple, Inc.

with JSON output:

sx arp --json 192.168.0.1/24

sample output:

{"ip":"192.168.0.1","mac":"b0:be:76:40:05:8d","vendor":"TP-LINK TECHNOLOGIES CO.,LTD."}
{"ip":"192.168.0.111","mac":"80:c5:f2:0b:02:e3","vendor":"AzureWave Technology Inc."}
{"ip":"192.168.0.171","mac":"88:53:95:2d:3c:af","vendor":"Apple, Inc."}

wait 5 seconds before exiting to receive delayed reply packets, by default sx waits 300 milliseconds:

sx arp --exit-delay 5s 192.168.0.1/24

Live scan mode that rescans network every 10 seconds:

sx arp 192.168.0.1/24 --live 10s

TCP scan

Unlike nmap and other scanners that implicitly perform ARP requests to resolve IP addresses to MAC addresses before the actual scan, sx explicitly uses the ARP cache concept. ARP cache file is a simple text file containing JSON string on each line (JSONL file), which has the same JSON fields as the ARP scan JSON output described above. Scans of higher-level protocols like TCP and UDP read the ARP cache file from the stdin and then start the actual scan.

This not only simplifies the design of the program, but also speeds up the scanning process, since it is not necessary to perform an ARP scan every time.

Let's assume that the actual ARP cache is in the arp.cache file. We can create it manually or use ARP scan as shown below:

sx arp 192.168.0.1/24 --json | tee arp.cache

Once we have the ARP cache file, we can run scans of higher-level protocols like TCP SYN scan:

cat arp.cache | sx tcp -p 1-65535 192.168.0.171

sample output:

192.168.0.171        22
192.168.0.171        443

In this case we find out that ports 22 and 443 are open.

scan with JSON output:

cat arp.cache | sx tcp  --json -p 1-65535 192.168.0.171

sample output:

{"scan":"tcpsyn","ip":"192.168.0.171","port":22}
{"scan":"tcpsyn","ip":"192.168.0.171","port":443}

scan multiple port ranges:

cat arp.cache | sx tcp -p 1-23,25-443 192.168.0.171

or individual ports:

cat arp.cache | sx tcp -p 22,443 192.168.0.171

scan ip/port pairs from a file with JSON output:

cat arp.cache | sx tcp --json -f ip_ports_file.jsonl

Each line of the input file is a json string, which must contain the ip and port fields.

sample input file:

{"ip":"10.0.1.1","port":1080}
{"ip":"10.0.2.2","port":1081}

It is possible to specify the ARP cache file using the -a or --arp-cache options:

sx tcp -a arp.cache -p 22,443 192.168.0.171

or stdin redirect:

sx tcp -p 22,443 192.168.0.171 < arp.cache

You can also use the tcp syn subcommand instead of the tcp:

cat arp.cache | sx tcp syn -p 22 192.168.0.171

tcp subcomand is just a shorthand for tcp syn subcommand unless --flags option is passed, see below.

TCP FIN scan

Most network scanners try to interpret results of the scan. For instance they say "this port is closed" instead of "I received a RST". Sometimes they are right. Sometimes not. It's easier for beginners, but when you know what you're doing, you keep on trying to deduce what really happened from the program's interpretation, especially for more advanced scan techniques.

sx tries to overcome those problems. It returns information about all reply packets for TCP FIN, NULL, Xmas and custom TCP scans. The information contains IP address, TCP port and all TCP flags set in the reply packet.

TCP FIN scan and its other variations (NULL and Xmas) exploit RFC793 Section 3.9:

SEGMENT ARRIVES

If the state is CLOSED (i.e., TCB does not exist) then

 all data in the incoming segment is discarded.  An incoming
 segment containing a RST is discarded.  An incoming segment not
 containing a RST causes a RST to be sent in response.  The
 acknowledgment and sequence field values are selected to make the
 reset sequence acceptable to the TCP that sent the offending
 segment.

so closed port should return packet with RST flag.

This section also states that:

If the state is LISTEN then

...

Any other control or text-bearing segment (not containing SYN) must have an ACK and thus would be discarded by the ACK processing. An incoming RST segment could not be valid, since it could not have been sent in response to anything sent by this incarnation of the connection. So you are unlikely to get here, but if you do, drop the segment, and return.

the main phrase here: drop the segment, and return. So an open port on most operating systems will drop the TCP packet containing any flags except SYN,ACK and RST.

Let's scan some closed port with TCP FIN scan:

cat arp.cache | sx tcp fin --json -p 23 192.168.0.171

sample output:

{"scan":"tcpfin","ip":"192.168.0.171","port":23,"flags":"ar"}

flags field contains all TCP flags in the reply packet, where each letter represents one of the TCP flags:

  • s - SYN flag
  • a - ACK flag
  • f - FIN flag
  • r - RST flag
  • p - PSH flag
  • u - URG flag
  • e - ECE flag
  • c - CWR flag
  • n - NS flag

In this case we find out that port 23 sent reply packet with ACK and RST flags set (typical response for a closed port according to the rfc793).

If we scan an open port, we get no response (unless the firewall is spoofing the responses).

Other types of TCP scans can be conducted by analogy.

TCP NULL scan:

cat arp.cache | sx tcp null --json -p 23 192.168.0.171

TCP Xmas scan:

cat arp.cache | sx tcp xmas --json -p 23 192.168.0.171

Custom TCP scans

It is possible to send TCP packets with custom TCP flags using --flags option.

Let's send TCP packet with SYN, FIN and ACK flags set to fingerprint remote OS:

cat arp.cache | sx tcp --flags syn,fin,ack --json -p 23 192.168.0.171

Windows and MacOS will not respond to this packet, but Linux will send reply packet with RST flag.

Possible arguments to --flags option:

  • syn - SYN flag
  • ack - ACK flag
  • fin - FIN flag
  • rst - RST flag
  • psh - PSH flag
  • urg - URG flag
  • ece - ECE flag
  • cwr - CWR flag
  • ns - NS flag

UDP scan

sx can help investigate open UDP ports. UDP scan exploits RFC1122 Section 4.1.3.1:

If a datagram arrives addressed to a UDP port for which there is no pending LISTEN call, UDP SHOULD send an ICMP Port Unreachable message.

Similar to TCP scans, sx returns information about all reply ICMP packets for UDP scan. The information contains IP address, ICMP packet type and code set in the reply packet.

For instance, to detect DNS server on host, run:

cat arp.cache | sx udp --json -p 53 192.168.0.171

sample output:

{"scan":"udp","ip":"192.168.0.171","icmp":{"type":3,"code":3}}

In this case we find out that host sent ICMP reply packet with Destination Unreachable type and Port Unreachable code (typical response for a closed port according to the rfc1122).

Firewalls typically set ICMP code distinct from Port Unreachanble and so can be easily detected.

Rate limiting

Sometimes you need to limit the speed at which generated packets are sent. This can be done with the --rate option.

For example, to limit the speed to 1 packet per 5 seconds:

cat arp.cache | sx tcp --rate 1/5s --json -p 22,80,443 192.168.0.171

Live LAN TCP SYN scanner

As an example of scan composition, you can combine ARP and TCP SYN scans to create live TCP port scanner that periodically scan whole LAN network.

Start live ARP scan and save results to arp.cache file:

sx arp 192.168.0.1/24 --live 10s --json | tee arp.cache

In another terminal start TCP SYN scan:

while true; do sx tcp -p 1-65535 -a arp.cache -f arp.cache; sleep 30; done

SOCKS5 scan

sx can detect live SOCKS5 proxies. To scan, you must specify an IP range or JSONL file with ip/port pairs.

For example, an IP range scan:

sx socks -p 1080 10.0.0.1/16

scan ip/port pairs from a file with JSON output:

sx socks --json -f ip_ports_file.jsonl 

Each line of the input file is a json string, which must contain the ip and port fields.

sample input file:

{"ip":"10.0.1.1","port":1080}
{"ip":"10.0.2.2","port":1081}

You can also specify a range of ports to scan:

sx socks -p 1080-4567 -f ips_file.jsonl

In this case only ip addresses will be taken from the file and the port field is no longer necessary.

Elasticsearch scan

Elasticsearch scan retrieves the cluster information and a list of all indexes along with aliases.

For example, an IP range scan:

sx elastic -p 9200 10.0.0.1/16

By default the scan uses the http protocol, to use the https protocol specify the --proto option:

sx elastic --proto https -p 9200 10.0.0.1/16

scan ip/port pairs from a file with JSON output:

sx elastic --json -f ip_ports_file.jsonl

Each line of the input file is a json string, which must contain the ip and port fields.

sample input file:

{"ip":"10.0.1.1","port":9200}
{"ip":"10.0.2.2","port":9201}

You can also specify a range of ports to scan:

sx elastic -p 9200-9267 -f ips_file.jsonl

In this case only ip addresses will be taken from the file and the port field is no longer necessary.

Usage help

sx help

📜 References

🤝 Contributing

Contributions, issues and feature requests are welcome.

💎 Credits

Logo is designed by mikhailtsoy.com

License

This project is licensed under the MIT License. See the LICENSE file for the full license text.

Comments
  • Instructions how to build under Windows?

    Instructions how to build under Windows?

    When trying to compile under Windows with regular go install <...> there is an error:

    >go install github.com/v-byte-cpu/sx@latest
    go: downloading github.com/v-byte-cpu/sx v0.5.0
    go: downloading github.com/google/gopacket v1.1.20-0.20210304165259-20562ffb40f8
    go: downloading github.com/spf13/cobra v1.5.0
    go: downloading github.com/docker/docker v20.10.7+incompatible
    go: downloading github.com/moby/moby v20.10.7+incompatible
    go: downloading go.uber.org/zap v1.23.0
    go: downloading github.com/docker/go-units v0.4.0
    go: downloading github.com/opencontainers/go-digest v1.0.0
    go: downloading github.com/docker/distribution v2.7.1+incompatible
    go: downloading github.com/containerd/containerd v1.4.4
    go: downloading github.com/Microsoft/go-winio v0.4.16
    go: downloading github.com/konsorten/go-windows-terminal-sequences v1.0.1
    # github.com/v-byte-cpu/sx/command
    go\pkg\mod\github.com\v-byte-cpu\[email protected]\command\root.go:168:56: too many arguments in call to afpacket.NewPacketSource
            have (string, bool)
            want (string)
    
  • how can i scan internet servers

    how can i scan internet servers

    sx arp xxx can only get mac address of servers which in local network, and sx tcp xxx scan mode can only be used with arp scan result before. so how can i scan internet servers, i cannot get its mac address.

  • Many duplicate MAC address

    Many duplicate MAC address

    I'm seeing 100+ IP addresses sharing a Mac address during an ARP scan.

    I check my managed switch and those do not appear.

    Is this an issue with my network or a problem with the way sx is scanning ARP?

  • Error: stdin is from a terminal

    Error: stdin is from a terminal

    TCP scans are failing with Error: stdin is from a terminal exception.

    Environment information:

    • OS: Kali 2021.2
    • Console & shell: XFCE TerminalEmulator + zsh
    • sx: pre-built binary release (tested on v0.2 & 0.3)

    Some sx snippets I tested with (I renamed sx binary to sxscanner, because Kali already has some tool named sx):

    sxscanner tcp fin -p 80 10.10.10.230
    sxscanner tcp -p 1-65535 10.10.10.230
    

    Issues might be somewhere here: sx/command/config.go#L288, but I don't know Go, so now sure what can cause the issue.

  • Can't build docker image with podman

    Can't build docker image with podman

    $ podman build -t sx .
    STEP 1: FROM golang:1.16-alpine AS builder
    ✔ docker.io/library/golang:1.16-alpine
    Getting image source signatures
    Copying blob 540db60ca938 done
    Copying blob 0510c868ecb4 done
    Copying blob 4c4ab2625f07 done
    Copying blob afea3b2eda06 done
    Copying blob adcc1eea9eea done
    Copying config 270727b8fd done
    Writing manifest to image destination
    Storing signatures
    STEP 2: RUN apk add --no-cache libpcap-dev libc-dev gcc linux-headers
    fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
    fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
    (1/17) Installing libgcc (10.2.1_pre1-r3)
    (2/17) Installing libstdc++ (10.2.1_pre1-r3)
    (3/17) Installing binutils (2.35.2-r1)
    (4/17) Installing libgomp (10.2.1_pre1-r3)
    (5/17) Installing libatomic (10.2.1_pre1-r3)
    (6/17) Installing libgphobos (10.2.1_pre1-r3)
    (7/17) Installing gmp (6.2.1-r0)
    (8/17) Installing isl22 (0.22-r0)
    (9/17) Installing mpfr4 (4.1.0-r0)
    (10/17) Installing mpc1 (1.2.0-r0)
    (11/17) Installing gcc (10.2.1_pre1-r3)
    (12/17) Installing musl-dev (1.2.2-r0)
    (13/17) Installing libc-dev (0.7.2-r3)
    (14/17) Installing libpcap (1.10.0-r0)
    (15/17) Installing pkgconf (1.7.3-r0)
    (16/17) Installing libpcap-dev (1.10.0-r0)
    (17/17) Installing linux-headers (5.7.8-r0)
    Executing busybox-1.32.1-r6.trigger
    OK: 135 MiB in 32 packages
    --> 5af35877a00
    STEP 3: ADD . /app
    --> 67e808a4805
    STEP 4: WORKDIR /app
    --> 93f4d5205ce
    STEP 5: RUN go build -ldflags "-w -s" -o /sx
    go: github.com/docker/[email protected]+incompatible: Get "https://proxy.golang.org/github.com/docker/docker/@v/v20.10.6+incompatible.mod": dial tcp: lookup proxy.golang.org: Try again
    STEP 6: FROM alpine:3.13
    Error: error building at STEP "RUN go build -ldflags "-w -s" -o /sx": error while running runtime: exit status 1
    
  • ICMP Scan: sending ICMP for IPs not listed in the ARP cache

    ICMP Scan: sending ICMP for IPs not listed in the ARP cache

    Hi, I'm experimenting with "sx" and found an interesting issue.

    Well, I was trying to ICMP scan a local WiFi network. First of all, I generated the ARP cache file. After that I run the ICMP Scan. Everything seems to work, but the interesting thing that I'm talking about is: I generated a PCAP file while I was scanning the network and noted that even though I had just provided an ARP cache of 3 entries, sx had sent ICMP packets for all the subnet I provided in the command line.

    I was expecting ICMP packets only for the 3 IP addresses/MACs listed in the ARP cache file. This is the ARP cache I used:

    {"ip":"192.168.15.1","mac":"d8:c6:78:1f:bc:90","vendor":"MitraStar Technology Corp."} {"ip":"192.168.15.250","mac":"c8:5d:38:29:6b:08","vendor":"HUMAX Co., Ltd."} {"ip":"192.168.15.238","mac":"c8:5d:38:29:77:2f","vendor":"HUMAX Co., Ltd."}

    Another thing that I noticed was that for each ICMP packet sent and which the MAC was not listed in the ARP cache, "sx" included the MAC address of the first entry in the ARP cache as the Ethernet frame destination address.

    For example, for the IPs:

    • 192.168.15.10 -> MAC d8:c6:78:1f:bc:90
    • 192.168.15.20 -> MAC d8:c6:78:1f:bc:90
    • 192.168.15.30 -> MAC d8:c6:78:1f:bc:90

    Is it how it's supposed to work?

    p.s) I'm using a development version. sx version dev

    Thanks for any feedback.

  • fix(deps): update module github.com/moby/moby to v20.10.18+incompatible

    fix(deps): update module github.com/moby/moby to v20.10.18+incompatible

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/moby/moby | require | patch | v20.10.7+incompatible -> v20.10.18+incompatible |


    Release Notes

    moby/moby

    v20.10.18+incompatible

    Compare Source

    v20.10.17+incompatible

    Compare Source

    v20.10.16+incompatible

    Compare Source

    v20.10.15+incompatible

    Compare Source

    v20.10.14+incompatible

    Compare Source

    v20.10.13+incompatible

    Compare Source

    v20.10.12+incompatible

    Compare Source

    v20.10.11+incompatible

    Compare Source

    v20.10.10+incompatible

    Compare Source

    v20.10.9+incompatible

    Compare Source

    v20.10.8+incompatible

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/docker/docker to v20.10.18+incompatible

    fix(deps): update module github.com/docker/docker to v20.10.18+incompatible

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/docker/docker | require | patch | v20.10.7+incompatible -> v20.10.18+incompatible |


    Release Notes

    docker/docker

    v20.10.18+incompatible

    Compare Source

    v20.10.17+incompatible

    Compare Source

    v20.10.16+incompatible

    Compare Source

    v20.10.15+incompatible

    Compare Source

    v20.10.14+incompatible

    Compare Source

    v20.10.13+incompatible

    Compare Source

    v20.10.12+incompatible

    Compare Source

    v20.10.11+incompatible

    Compare Source

    v20.10.10+incompatible

    Compare Source

    v20.10.9+incompatible

    Compare Source

    v20.10.8+incompatible

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

  • SX displays usage statement for all command line arguments

    SX displays usage statement for all command line arguments

    Hi,

    It looks like the sx command returns a usage statement for most everything. For example, "sx arp 192.168.1.0/24" displays a usage statement.

    Thanks, -G

  • fix(deps): update module github.com/jinzhu/copier to v0.3.0

    fix(deps): update module github.com/jinzhu/copier to v0.3.0

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/jinzhu/copier | require | minor | v0.2.9 -> v0.3.0 |


    Release Notes

    jinzhu/copier

    v0.3.0

    Compare Source


    Configuration

    :date: Schedule: At any time (no schedule defined).

    :vertical_traffic_light: Automerge: Disabled by config. Please merge this manually once you are satisfied.

    :recycle: Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    :no_bell: Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • afpacket: fix NewPacketSource params GOOS!=linux

    afpacket: fix NewPacketSource params GOOS!=linux

    The signature of afpacket.NewPacketSource was updated in readwriter.go (29ca59d5) for GOOS=linux, but the signature for that same function in readwriter_other.go for GOOS!=linux was not updated to match. This causes a build failure when GOOS!=linux. The build failure is not critical since only GOOS=linux is supported .

  • chore(deps): update alpine docker tag to v3.17

    chore(deps): update alpine docker tag to v3.17

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | alpine | final | minor | 3.16 -> 3.17 |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/moby/moby to v20.10.20+incompatible [security]

    fix(deps): update module github.com/moby/moby to v20.10.20+incompatible [security]

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/moby/moby | require | patch | v20.10.7+incompatible -> v20.10.20+incompatible |

    GitHub Vulnerability Alerts

    GHSA-vp35-85q5-9f25

    Description

    Moby is the open source Linux container runtime and set of components used to build a variety of downstream container runtimes, including Docker CE, Mirantis Container Runtime (formerly Docker EE), and Docker Desktop. Moby allows for building container images using a set of build instructions (usually named and referred to as a "Dockerfile"), and a build context, which is not unlike the CWD in which the Dockerfile instructions are executed.

    Containers may be built using a variety of tools and build backends available in the Moby ecosystem; in all cases, builds may not include files outside of the build context (such as using absolute or relative-parent paths). This is enforced through both checks in the build backends, and the containerization of the build process itself.

    Versions of Git where CVE-2022-39253 is present and exploited by a malicious repository, when used in combination with Moby, are subject to an unexpected inclusion of arbitrary filesystem paths in the build context, without any visible warning to the user.

    This issue was originally reported by Wenxiang Qian of Tencent Blade Team, and the root-cause analysis was performed by Cory Snider of Mirantis, with assistance from Bjorn Neergaard of the same. The issue was then reported to the Git project, and Taylor Blau led the process resolving the root issue in Git.

    Impact

    This vulnerability originates in Git, but can be used to violate assumptions that may have security implications for users of Moby and related components. Users may rely on the fact that a build context ensures that outside files cannot be referenced or incorporated using multiple enforcement mechanisms, or expect a warning if this does not hold true. A maliciously crafted Git repository exploiting CVE-2022-39253 can violate this assumption, and potentially include sensitive files that are subsequently uploaded to a container image repository, or disclosed by code inside the resulting container image.

    As this issue cannot be triggered remotely, except by users who already have full control over the daemon through the API, and it requires exploiting a vulnerability in Git by convincing a user to build a maliciously crafted repository, the impact in Moby is considered low.

    Patches

    Moby 20.10.20, and Mirantis Container Runtime (formerly Docker Enterprise Edition) 20.10.14 will contain mitigations for CVE-2022-39253 when a Git clone is performed by Moby components (on either the daemon or API client side). However, as these mitigations only apply to certain scenarios (build of git+<protocol>://... URL contexts) and cannot protect against a malicious repository already on disk, users should update to a version of Git containing patches for CVE-2022-39253 on all their systems running both API clients and daemons.

    Specifically, patches in Moby (including patches incorporated from BuildKit) protect against the following:

    • docker build with the legacy builder (e.g. DOCKER_BUILDKIT unset or set to 0) of a Git URL context. Note that depending on available API versions and the CLI version, the Git clone operation can take place on either the client or the daemon side. Both must be updated (or have Git updated) to fully protect this build method.
    • docker build with the BuildKit builder (e.g. DOCKER_BUILDKIT=1) of a Git URL context.
    • docker buildx build with BUILDKIT_CONTEXT_KEEP_GIT_DIR=1 of a Git URL context.

    Patches in BuildKit incorporated into Docker Compose protect against CVE-2022-39253 during Compose-driven builds of Git URL contexts.

    Patches in Moby and related projects such as BuildKit, the Docker CLI, and Docker Compose cannot fully protect against CVE-2022-39253, as it may be triggered by a malicious repository already on disk that a unpatched Git client has interacted with (specifically, commands that check out submodules such as git clone --recursive, git submodule update, etc. may have already triggered the Git vulnerability).

    Workarounds

    While this behavior is unexpected and undesirable, and has resulted in this security advisory, users should keep in mind that building a container entails arbitrary code execution. Users should not build a repository/build context they do not trust, as containerization cannot protect against all possible attacks.

    When building with BuildKit (e.g. docker buildx build or docker build with DOCKER_BUILDKIT=1), this issue cannot be exploited unless --build-arg BUILDKIT_CONTEXT_KEEP_GIT_DIR=1 was also passed, as by default BuildKit will discard the .git directory of a Git URL context immediately after cloning and checking out the repository.

    For more information

    If you have any questions or comments about this advisory:


    Release Notes

    moby/moby

    v20.10.20+incompatible

    Compare Source

    v20.10.19+incompatible

    Compare Source

    v20.10.18+incompatible

    Compare Source

    v20.10.17+incompatible

    Compare Source

    v20.10.16+incompatible

    Compare Source

    v20.10.15+incompatible

    Compare Source

    v20.10.14+incompatible

    Compare Source

    v20.10.13+incompatible

    Compare Source

    v20.10.12+incompatible

    Compare Source

    v20.10.11+incompatible

    Compare Source

    v20.10.10+incompatible

    Compare Source

    v20.10.9+incompatible

    Compare Source

    v20.10.8+incompatible

    Compare Source


    Configuration

    📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/stretchr/testify to v1.8.1

    fix(deps): update module github.com/stretchr/testify to v1.8.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/stretchr/testify | require | patch | v1.8.0 -> v1.8.1 |


    Release Notes

    stretchr/testify

    v1.8.1

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/docker/docker to v20.10.21+incompatible

    fix(deps): update module github.com/docker/docker to v20.10.21+incompatible

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/docker/docker | require | patch | v20.10.7+incompatible -> v20.10.21+incompatible |


    Release Notes

    docker/docker

    v20.10.21+incompatible

    Compare Source

    v20.10.20+incompatible

    Compare Source

    v20.10.19+incompatible

    Compare Source

    v20.10.18+incompatible

    Compare Source

    v20.10.17+incompatible

    Compare Source

    v20.10.16+incompatible

    Compare Source

    v20.10.15+incompatible

    Compare Source

    v20.10.14+incompatible

    Compare Source

    v20.10.13+incompatible

    Compare Source

    v20.10.12+incompatible

    Compare Source

    v20.10.11+incompatible

    Compare Source

    v20.10.10+incompatible

    Compare Source

    v20.10.9+incompatible

    Compare Source

    v20.10.8+incompatible

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/spf13/cobra to v1.6.1

    fix(deps): update module github.com/spf13/cobra to v1.6.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/spf13/cobra | require | minor | v1.5.0 -> v1.6.1 |


    Release Notes

    spf13/cobra

    v1.6.1

    Compare Source

    Bug fixes 🐛
    • Fixes a panic when AddGroup isn't called before AddCommand(my-sub-command) is executed. This can happen within more complex cobra file structures that have many different inits to be executed. Now, the check for groups has been moved to ExecuteC and provides more flexibility when working with grouped commands - @​marckhouzam (and shout out to @​aawsome, @​andig and @​KINGSABRI for a deep investigation into this! 👏🏼)

    v1.6.0

    Compare Source

    Summer 2022 Release

    Some exciting changes make their way to Cobra! Command completions continue to get better and better (including adding --help and --version automatic flags to the completions list). Grouping is now possible in your help output as well! And you can now use the OnFinalize method to cleanup things when all "work" is done. Checkout the full changelog below:


    Features 🌠
    Deprecation 👎🏼
    • ExactValidArgs is deprecated (but not being removed entirely). This is abit nuanced, so checkout #​1643 for further information and the updated user_guide.md on how this may affect you (and how you can take advantage of the correct behavior in the validators): @​umarcor #​1643
    Bug fixes 🐛
    Dependencies 🗳️
    Testing 🤔
    Docs ✏️
    Misc 💭

    Note: Per #​1804, we will be moving away from "seasonal" releases and doing more generic point release targets. Continue to track the milestones and issues in the spf13/cobra GitHub repository for more information!

    Great work everyone! Cobra would never be possible without your contributions! 🐍

    Full Changelog: https://github.com/spf13/cobra/compare/v1.5.0...v1.6.0


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • Error log 76, 214

    Error log 76, 214

    @v-byte-cpu hi, Why this error come to me help me plz... {"level":"error","ts":1665350624.2440908,"caller":"log/logger.go:76","msg":"socks","error":"dial tcp 192.168.0.241:1080: i/o timeout","stacktrace":"github.com/v-byte-cpu/sx/command/log.(*logger).Error\n\t/home/creedx/sx/command/log/logger.go:76\ngithub.com/v-byte-cpu/sx/command.startScanEngine.func3\n\t/home/creedx/sx/command/root.go:214"} Screenshot-81

An easy-to-use, flexible network simulator library in Go.

ns-x An easy-to-use, flexible network simulator library for Go. Feature Programmatically build customizable and scalable network topology from basic n

Dec 13, 2022
A modular is an opinionated, easy-to-use P2P network stack for decentralized applications written in Go.

xlibp2p xlibp2p is an opinionated, easy-to-use P2P network stack for decentralized applications written in Go. xlibp2p is made to be minimal, robust,

Nov 9, 2022
Xlibp2p: an opinionated, easy-to-use P2P network stack for decentralized applications written in Go

xlibp2p xlibp2p is an opinionated, easy-to-use P2P network stack for decentraliz

Nov 9, 2022
Modern network boot server.
Modern network boot server.

bofied demo.mp4 Modern network boot server. Overview bofied is a network boot server. It provides everything you need to PXE boot a node, from a (prox

Dec 17, 2022
TCPProbe is a modern TCP tool and service for network performance observability.
TCPProbe is a modern TCP tool and service for network performance observability.

TCPProbe is a modern TCP tool and service for network performance observability. It exposes information about socket’s underlying TCP session, TLS and HTTP (more than 60 metrics). you can run it through command line or as a service. the request is highly customizable and you can integrate it with your application through gRPC. it runs in a Kubernetes cluster as cloud native application and by adding annotations on pods allow a fine control of the probing process.

Dec 15, 2022
🐶 A modern alternative network traffic sniffer.
🐶  A modern alternative network traffic sniffer.

sniffer A modern alternative network traffic sniffer inspired by bandwhich(Rust) and nethogs(C++). sniffer.mov Introduction 中文介绍 sniffer is designed f

Dec 29, 2022
sonarbyte is a simple and fast subdomain scanner written in go to extract subdomain from Rapid7's DNS Database using omnisint's api.
 sonarbyte is a simple and fast subdomain scanner written in go to extract subdomain from Rapid7's DNS Database using omnisint's api.

sonarbyte Description Sonarbyte is a simple and fast subdomain scanner written in go to extract subdomains from Rapid7's DNS Database using omnisint's

Jul 27, 2022
GoScan is a port-scanner made entirely in Go-lang. The purpose of the tool is to be fast, dynamic and simple so that a professional in the CyberSecurity area can make an optimized list of ports
GoScan is a port-scanner made entirely in Go-lang. The purpose of the tool is to be fast, dynamic and simple so that a professional in the CyberSecurity area can make an optimized list of ports

?? GoScan GoScan is a port-scanner made entirely in Go-lang. The purpose of the tool is to be fast, dynamic and simple so that a professional in the C

Jul 19, 2022
Subdomain scanner, asynchronous dns packets, use pcap to scan 1600,000 subdomains in 1 second

ksubdomain是一款基于无状态的子域名爆破工具,类似无状态端口扫描,支持在Windows/Linux/Mac上进行快速的DNS爆破,在Mac和Windows上理论最大发包速度在30w/s,linux上为160w/s。 hacking8信息流的src资产收集 https://i.hacking8

Dec 31, 2022
A modern, fast and scalable websocket framework with elegant API written in Go
A modern, fast and scalable websocket framework with elegant API written in Go

About neffos Neffos is a cross-platform real-time framework with expressive, elegant API written in Go. Neffos takes the pain out of development by ea

Jan 4, 2023
🖥️ Fast, modern and cross-platform SSH client
🖥️ Fast, modern and cross-platform SSH client

??️ Fast, modern and cross-platform SSH client Installation Build from source Requirements for building the project from source: Node 16 Go >= 1.17 Wa

Mar 20, 2022
Use Consul to do service discovery, use gRPC +kafka to do message produce and consume. Use redis to store result.
Use  Consul to do service discovery, use gRPC +kafka to do message produce and consume. Use redis to store result.

目录 gRPC/consul/kafka简介 gRPC+kafka的Demo gRPC+kafka整体示意图 限流器 基于redis计数器生成唯一ID kafka生产消费 kafka生产消费示意图 本文kafka生产消费过程 基于pprof的性能分析Demo 使用pprof统计CPU/HEAP数据的

Jul 9, 2022
Package socket provides a low-level network connection type which integrates with Go's runtime network poller to provide asynchronous I/O and deadline support. MIT Licensed.

socket Package socket provides a low-level network connection type which integrates with Go's runtime network poller to provide asynchronous I/O and d

Dec 14, 2022
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.

Connecting the Next Billion People Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core

Dec 31, 2022
Optimize Windows's network/NIC driver settings for NewTek's NDI(Network-Device-Interface).

windows-ndi-optimizer[WIP] Optimize Windows's network/NIC driver settings for NewTek's NDI(Network-Device-Interface). How it works This is batchfile d

Apr 15, 2022
A simple network analyzer that capture http network traffic
A simple network analyzer that capture http network traffic

httpcap A simple network analyzer that captures http network traffic. support Windows/MacOS/Linux/OpenWrt(x64) https only capture clienthello colorful

Oct 25, 2022
Zero Trust Network Communication Sentinel provides peer-to-peer, multi-protocol, automatic networking, cross-CDN and other features for network communication.
Zero Trust Network Communication Sentinel provides peer-to-peer, multi-protocol, automatic networking, cross-CDN and other features for network communication.

Thank you for your interest in ZASentinel ZASentinel helps organizations improve information security by providing a better and simpler way to protect

Nov 1, 2022
🚀Gev is a lightweight, fast non-blocking TCP network library based on Reactor mode. Support custom protocols to quickly and easily build high-performance servers.
🚀Gev is a lightweight, fast non-blocking TCP network library based on Reactor mode. Support custom protocols to quickly and easily build high-performance servers.

gev 中文 | English gev is a lightweight, fast non-blocking TCP network library based on Reactor mode. Support custom protocols to quickly and easily bui

Jan 6, 2023
Fast implementation of the collectd network protocol for go.

go-cdclient A fast, dependency free implementation of the collectd binary network protocol. How fast? This package can form an encrypted metric packet

Feb 6, 2022