Skip to content

Exception run tsunami with python plugins #157

@Vilinvil

Description

@Vilinvil

Hi, I have problems with run a tsunami scanner with a python server. I use image

ghcr.io/google/tsunami-scanner-full from documenation

my system:

uname -srvmpio
Linux 6.11.0-21-generic #21~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Feb 24 16:52:15 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

Firstly I try use this image:

FROM ghcr.io/google/tsunami-scanner-full:latest

USER root

# without nmap I see error:
# 1) [Guice/ErrorInCustomProvider]: FileNotFoundException: Unable to find a valid nmap binary. Make sure Tsunami config contains a valid nmap binary path.
RUN apt-get update && apt-get install -y --no-install-recommends nmap

CMD ["bash"]

build, run and try:

docker build -t local_tsunami_err:latest -f Dockerfile .
docker run --name local_tsunami_err --rm --network host -it local_tsunami_err:latest bash

root@nblx-std-a12b6e:/usr/tsunami# tsunami-py-server >/tmp/py_server.log 2>&1 &
[1] 80
root@nblx-std-a12b6e:/usr/tsunami# ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0   4588  3568 pts/0    Ss   08:00   0:00 bash
root          80  0.0  0.0   4324  3136 pts/0    S    08:01   0:00 /bin/bash /usr/bin/tsunami-py-server
root          81  8.4  0.1 1617372 51140 pts/0   Sl   08:01   0:00 /usr/tsunami/py_venv/bin/python3 /usr/tsunami/py_server/plugin_server.py
root         103  0.0  0.0   7888  3696 pts/0    R+   08:01   0:00 ps -aux
root@nblx-std-a12b6e:/usr/tsunami# tail /tmp/py_server.log 
I0403 08:01:20.854847 133956547563648 plugin_server.py:164] [Python Server] 2026-04-03 08:01:20,854     Cve202532375VulnDetector
I0403 08:01:20.854881 133956547563648 plugin_server.py:164] [Python Server] 2026-04-03 08:01:20,854     ExamplePyVulnDetector
I0403 08:01:20.854907 133956547563648 plugin_server.py:164] [Python Server] 2026-04-03 08:01:20,854     JupyterExposedUiDetector
I0403 08:01:20.854932 133956547563648 plugin_server.py:164] [Python Server] 2026-04-03 08:01:20,854     PyZmqRceDetector
I0403 08:01:20.854960 133956547563648 plugin_server.py:164] [Python Server] 2026-04-03 08:01:20,854     RagFlowRceDetector
I0403 08:01:20.854994 133956547563648 plugin_server.py:164] [Python Server] 2026-04-03 08:01:20,854     Cve202222963VulnDetector
I0403 08:01:20.856550 133956547563648 plugin_server.py:96] [Python Server] 2026-04-03 08:01:20,856 Server started at 127.0.0.1:34567.
I0403 08:01:20.856607 133956547563648 plugin_server.py:189] [Python Server] 2026-04-03 08:01:20,856 Service tsunami.proto.PluginService is now SERVING
I0403 08:01:20.856636 133956547563648 plugin_server.py:189] [Python Server] 2026-04-03 08:01:20,856 Service grpc.reflection.v1alpha.ServerReflection is now SERVING
I0403 08:01:20.856659 133956547563648 plugin_server.py:189] [Python Server] 2026-04-03 08:01:20,856 Service grpc.health.v1.Health is now SERVING
root@nblx-std-a12b6e:/usr/tsunami# tsunami --ip-v4-target 127.0.0.1 --python-plugin-server-address 127.0.0.1 --python-plugin-server-port 34567 >/tmp/tsunami.log 2>&1

And in logs /tmp/tsunami.log I see:

INFO: An exception was caught and reported. Message: java.lang.IllegalArgumentException: Address types of NameResolver 'unix' for '127.0.0.1:34567' not supported by transportjava.lang.IllegalArgumentException: Address types of NameResolver 'unix' for '127.0.0.1:34567' not supported by transport    at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:750)    at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:771)    at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:635)    at io.grpc.internal.ManagedChannelImplBuilder.build(ManagedChannelImplBuilder.java:668)    at io.grpc.ForwardingChannelBuilder2.build(ForwardingChannelBuilder2.java:260)    at com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule.getLanguageServerChannel(RemoteVulnDetectorLoadingModule.java:85)    at com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule.lambda$configure$0(RemoteVulnDetectorLoadingModule.java:68)    at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:423)    at com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule.configure(RemoteVulnDetectorLoadingModule.java:66)    at com.google.inject.AbstractModule.configure(AbstractModule.java:64)    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:426)    at com.google.inject.AbstractModule.install(AbstractModule.java:106)    at com.google.tsunami.main.cli.TsunamiCli$TsunamiCliModule.configure(TsunamiCli.java:206)    at com.google.inject.AbstractModule.configure(AbstractModule.java:64)    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:426)    at com.google.inject.spi.Elements.getElements(Elements.java:113)    at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:160)    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)    at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:240)    at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:245)    at com.google.tsunami.main.cli.TsunamiCli.doMain(TsunamiCli.java:298)    at com.google.tsunami.main.cli.TsunamiCli.main(TsunamiCli.java:317)Apr 03, 2026 8:01:50 AM com.google.tsunami.main.cli.TsunamiCli doMainSEVERE: Exiting due to workflow execution exceptions.com.google.inject.CreationException: Unable to create injector, see the following errors:1) An exception was caught and reported. Message: Address types of NameResolver 'unix' for '127.0.0.1:34567' not supported by transport  at TsunamiCli$TsunamiCliModule.configure(TsunamiCli.java:206)      \_ installed by: TsunamiCli$TsunamiCliModule -> RemoteVulnDetectorLoadingModule1 error======================Full classname legend:======================RemoteVulnDetectorLoadingModule: "com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule"TsunamiCli$TsunamiCliModule:     "com.google.tsunami.main.cli.TsunamiCli$TsunamiCliModule"========================End of classname legend:========================    at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:589)    at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:163)    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)    at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:240)    at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:245)    at com.google.tsunami.main.cli.TsunamiCli.doMain(TsunamiCli.java:298)    at com.google.tsunami.main.cli.TsunamiCli.main(TsunamiCli.java:317)Caused by: java.lang.IllegalArgumentException: Address types of NameResolver 'unix' for '127.0.0.1:34567' not supported by transport    at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:750)    at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:771)    at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:635)    at io.grpc.internal.ManagedChannelImplBuilder.build(ManagedChannelImplBuilder.java:668)    at io.grpc.ForwardingChannelBuilder2.build(ForwardingChannelBuilder2.java:260)    at com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule.getLanguageServerChannel(RemoteVulnDetectorLoadingModule.java:85)    at com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule.lambda$configure$0(RemoteVulnDetectorLoadingModule.java:68)    at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:423)    at com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule.configure(RemoteVulnDetectorLoadingModule.java:66)    at com.google.inject.AbstractModule.configure(AbstractModule.java:64)    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:426)    at com.google.inject.AbstractModule.install(AbstractModule.java:106)    at com.google.tsunami.main.cli.TsunamiCli$TsunamiCliModule.configure(TsunamiCli.java:206)    at com.google.inject.AbstractModule.configure(AbstractModule.java:64)    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:426)    at com.google.inject.spi.Elements.getElements(Elements.java:113)    at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:160)    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)    ... 4 more

I also try:
tsunami --ip-v4-target 127.0.0.1 --python-plugin-server-address "dns:///127.0.0.1" --python-plugin-server-port 34567 >/tmp/tsunami.log 2>&1
But get error:

INFO: An exception was caught and reported. Message: java.lang.IllegalArgumentException: Could not find a NameResolverProvider for dns:///127.0.0.1:34567java.lang.IllegalArgumentException: Could not find a NameResolverProvider for dns:///127.0.0.1:34567    at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:741)    at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:771)    at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:635)    at io.grpc.internal.ManagedChannelImplBuilder.build(ManagedChannelImplBuilder.java:668)    at io.grpc.ForwardingChannelBuilder2.build(ForwardingChannelBuilder2.java:260)    at com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule.getLanguageServerChannel(RemoteVulnDetectorLoadingModule.java:85)    at com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule.lambda$configure$0(RemoteVulnDetectorLoadingModule.java:68)    at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:423)    at com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule.configure(RemoteVulnDetectorLoadingModule.java:66)    at com.google.inject.AbstractModule.configure(AbstractModule.java:64)    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:426)    at com.google.inject.AbstractModule.install(AbstractModule.java:106)    at com.google.tsunami.main.cli.TsunamiCli$TsunamiCliModule.configure(TsunamiCli.java:206)    at com.google.inject.AbstractModule.configure(AbstractModule.java:64)    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:426)    at com.google.inject.spi.Elements.getElements(Elements.java:113)    at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:160)    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)    at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:240)    at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:245)    at com.google.tsunami.main.cli.TsunamiCli.doMain(TsunamiCli.java:298)    at com.google.tsunami.main.cli.TsunamiCli.main(TsunamiCli.java:317)Apr 03, 2026 11:00:58 AM com.google.tsunami.main.cli.TsunamiCli doMainSEVERE: Exiting due to workflow execution exceptions.com.google.inject.CreationException: Unable to create injector, see the following errors:1) An exception was caught and reported. Message: Could not find a NameResolverProvider for dns:///127.0.0.1:34567  at TsunamiCli$TsunamiCliModule.configure(TsunamiCli.java:206)      \_ installed by: TsunamiCli$TsunamiCliModule -> RemoteVulnDetectorLoadingModule1 error======================Full classname legend:======================RemoteVulnDetectorLoadingModule: "com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule"TsunamiCli$TsunamiCliModule:     "com.google.tsunami.main.cli.TsunamiCli$TsunamiCliModule"========================End of classname legend:========================    at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:589)    at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:163)    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)    at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:240)    at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:245)    at com.google.tsunami.main.cli.TsunamiCli.doMain(TsunamiCli.java:298)    at com.google.tsunami.main.cli.TsunamiCli.main(TsunamiCli.java:317)Caused by: java.lang.IllegalArgumentException: Could not find a NameResolverProvider for dns:///127.0.0.1:34567    at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:741)    at io.grpc.internal.ManagedChannelImpl.getNameResolver(ManagedChannelImpl.java:771)    at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:635)    at io.grpc.internal.ManagedChannelImplBuilder.build(ManagedChannelImplBuilder.java:668)    at io.grpc.ForwardingChannelBuilder2.build(ForwardingChannelBuilder2.java:260)    at com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule.getLanguageServerChannel(RemoteVulnDetectorLoadingModule.java:85)    at com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule.lambda$configure$0(RemoteVulnDetectorLoadingModule.java:68)    at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:423)    at com.google.tsunami.plugin.RemoteVulnDetectorLoadingModule.configure(RemoteVulnDetectorLoadingModule.java:66)    at com.google.inject.AbstractModule.configure(AbstractModule.java:64)    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:426)    at com.google.inject.AbstractModule.install(AbstractModule.java:106)    at com.google.tsunami.main.cli.TsunamiCli$TsunamiCliModule.configure(TsunamiCli.java:206)    at com.google.inject.AbstractModule.configure(AbstractModule.java:64)    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:426)    at com.google.inject.spi.Elements.getElements(Elements.java:113)    at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:160)    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)    ... 4 more

I probably founded workaround. At least I can see in the logs that the scan is complete. Dockerfile with workaround

FROM ghcr.io/google/tsunami-scanner-full:latest

USER root

# without nmap I see error:
# 1) [Guice/ErrorInCustomProvider]: FileNotFoundException: Unable to find a valid nmap binary. Make sure Tsunami config contains a valid nmap binary path.
RUN apt-get update && apt-get install -y --no-install-recommends nmap

RUN apt-get install -y --no-install-recommends zip unzip

RUN unzip -o /usr/tsunami/tsunami.jar && \
    echo 'io.grpc.internal.DnsNameResolverProvider' >> META-INF/services/io.grpc.NameResolverProvider && \
    echo 'io.grpc.internal.PickFirstLoadBalancerProvider' >> META-INF/services/io.grpc.LoadBalancerProvider && \
    zip -r0 /usr/tsunami/tsunami-fixed.jar .

RUN mv /usr/tsunami/tsunami-fixed.jar /usr/tsunami/tsunami.jar

CMD ["bash"]

Can you help me figure it out what I do wrong? I am not familiar with java but I am ready to give more information if necessary

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions