Help to create dev environments for bug hunting - Inheritance issues


I was trying to create qubes based on a template qube having software tools related to bug hunting, specifically Burp Suite Community. But I experienced issues when trying to execute Burp with the app menu shortcuts of the template-based app qubes, which they do nothing.

Burp was installed from its official site using its installation script, which made it visible in the “available apps” of the template without problem and the app menu shortcut of the template triggered Burp also without problem (I know that templates aren’t for running software, I just tested the install of Burp in my first steps using the OS).

After the installation of Burp using the installation script, a directory with the executable was created in a custom directory of my choice, which was possible to make it available in its “child-qubes” by moving the directory to /usr/local.orig/lib/ (after reading online about how /usr/local.orig/ solved a similar problem) hoping that the lib part made sense as software installation from non-default sources (non-package-manager installs).
It worked, but the app menu shortcut of Burp for the app qubes didn’t. They did nothing. I changed the exec= part of its .desktop file thinking that the shortcut was pointing to a location only available in the template qube, but that didn’t work.

“Maybe the problem was trying to use app qubes in a situation where other qube type is more appropriate,” I thought. So I started to read about Standalones and how they are suitable for similar needs, like the “creation of dev environments where you need many custom tools”.

This introduced other problems.


Standalone docs say :

When you create a standalone from a template, the standalone is a complete clone of the template, including the entire filesystem.
Qubes Docs - About Standalones in updating section

but the standalone qubes I created based on my template qube didn’t contain the files and directories of the template. I tried a kinda prof of concept (POV) creating a text file at /home/user/test.txt in the template and AFTER that, I created a standalone based on that template. I shutdown/restart the template qube BEFORE creating the standalone, but the text file was not present in the standalone filesystem!
What I missed?

What I need

  • Suggestions for an optimal approach to create qubes packed with tools installed from default (e.g. via package manager) and other sources (e.g. via manually executed install scripts).
  • Understand why a text file in the home of a template qube is not inherited by a standalone based on it.

Install the tools in some other directory instead of /home or /usr/local in template, e.g. in /opt.

I think the doc is wrong here and only root image is being cloned from template and template private image is not being cloned.

1 Like

Thanks for your reply.

Updated configuration made to template qube

I changed the BurpSuiteCommunity directory containing the executable to /opt/ and created a symbolic link called
burp pointing to /opt/BurpSuiteCommunity/BurpSuiteCommunity at /bin (which is a symlink included by default pointing to /usr/bin), so I can trigger BurpSuite with burp command from all the standalones based on that template qube.
I don’t know if this is the better approach given the Filesystem Hierarchy Standard or some Qubes OS best practices, but it works!

Feedback is always appreciated.

About docs likely being wrong

What do you recommend in this case?
If the docs are wrong how to proceed and contribute?
I don’t feel an advanced Qubes OS user yet to tweak too much the docs and make a pull request of that size.

You can just add the directory with binaries to the PATH environment variable, e.g. in template run:

echo 'export PATH="/opt/BurpSuiteCommunity/BurpSuiteCommunity:$PATH"' >> /etc/profile.d/

You can try to edit the docs, it’s not too hard and the whole process of editing the docs with screenshots as an example is available: