Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFI emulator exception: Future <Future pending> attached to a different loop #415

Open
Chrzi opened this issue Feb 8, 2022 · 0 comments

Comments

@Chrzi
Copy link
Contributor

Chrzi commented Feb 8, 2022

Python version: 3.9
tanner version: latest master

During handling an RFI request the following exception pop up in the tanner error log and the request is not logged.

Can be reproduced by simply sending a GET request like this: http://127.0.0.1/test?v=http://test.localhost

What I noticed during debugging was that the loop running the handle() method is a different one from the self._loop set during initialization to asyncio.get_event_loop() .

Aside from this exception, it would probably be good to wrap the emulators handle() method into a try except block and return "unknown" as the detection in case of an exception.

2022-02-08 11:05:22 ERROR:aiohttp.server:log_exception: Error handling request
Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 435, in _handle_request
    resp = await request_handler(request)
  File "/usr/lib/python3.9/site-packages/aiohttp/web_app.py", line 504, in _handle
    resp = await handler(request)
  File "/usr/lib/python3.9/site-packages/Tanner-0.6.0-py3.9.egg/tanner/server.py", line 58, in handle_event
    detection = await self.base_handler.handle(data, session)
  File "/usr/lib/python3.9/site-packages/Tanner-0.6.0-py3.9.egg/tanner/emulators/base.py", line 190, in handle
    detection = await self.emulate(data, session)
  File "/usr/lib/python3.9/site-packages/Tanner-0.6.0-py3.9.egg/tanner/emulators/base.py", line 172, in emulate
    detection = await self.handle_get(session, data)
  File "/usr/lib/python3.9/site-packages/Tanner-0.6.0-py3.9.egg/tanner/emulators/base.py", line 148, in handle_get
    possible_get_detection = await self.get_emulation_result(session, get_data, self.get_emulators)
  File "/usr/lib/python3.9/site-packages/Tanner-0.6.0-py3.9.egg/tanner/emulators/base.py", line 120, in get_emulation_result
    emulation_result = await self.emulators[detection["name"]].handle(attack_params[detection["name"]], session)
  File "/usr/lib/python3.9/site-packages/Tanner-0.6.0-py3.9.egg/tanner/emulators/rfi.py", line 99, in handle
    result = await self.get_rfi_result(attack_params[0]["value"])
  File "/usr/lib/python3.9/site-packages/Tanner-0.6.0-py3.9.egg/tanner/emulators/rfi.py", line 80, in get_rfi_result
    await asyncio.sleep(1, loop=self._loop)
  File "/usr/lib/python3.9/asyncio/tasks.py", line 655, in sleep
    return await future
RuntimeError: Task <Task pending name='Task-4351832' coro=<RequestHandler._handle_request() running at /usr/lib/python3.9/site-packages/aiohttp/web_protocol.py:435> cb=[<TaskWakeupMethWrapper object at 0x7f3a74b13ca0>()]> got Future <Future pending> attached to a different loop
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant