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

Remove files without rebuilding datasets #216

Open
1 task
pavb-fr opened this issue Nov 14, 2023 · 4 comments
Open
1 task

Remove files without rebuilding datasets #216

pavb-fr opened this issue Nov 14, 2023 · 4 comments

Comments

@pavb-fr
Copy link

pavb-fr commented Nov 14, 2023

Currently the deletion of files is not supported by Ursadb as mentioned in the documentation
https://github.com/CERT-Polska/ursadb/blob/master/docs/datasets.md#add-and-remove-files

But we have some use cases where we want to add a lot of temporary files for a short duration.
We would like to be able to remove them after use without reindexing the database which could be very time consuming.

The tag feature on dataset seems very interesting for such use cases but it is not supported by the solution MalwareDB / MQuery.

  • Be able to delete individual files from dataset without rebuild
@pavb-fr
Copy link
Author

pavb-fr commented Nov 14, 2023

Maybe it can be linked to this issue on Mwdb
CERT-Polska/mwdb-core#560

If we can have a different ursadb tag by mwdb bucket

@msm-code
Copy link
Contributor

msm-code commented Nov 14, 2023

But we have some use cases where we want to add a lot of temporary files for a short duration.

Hi, do I understand correctly that you want to index some files temporarily and later remove them all? You can remove datasets (groups of files) (as you already know from documentation you linked), just not individual files.

The only problem is that it's hard to know which datasets to remove after indexing, but it's actually very simple to fix. You can group files during indexing by adding a specified tag (known as taint in ursadb world), for example:

index "/opt" with taints ["temporary123"]

This will create datasets with tags, similarly to the screen below:

image

Datasets with one set of tags will never merge with datasets that have different tags. So after your temporary work is done, you can just query for all datasets with your tag temporary123 and issue dataset "xxxx" drop commands.

I think this is even easier than keeping track of which files to remove after processing. And the added benefit is that (if you want to) you may use the tags to scope your mquery queries to for example only query your temporary files. Would this work for you?

@pavb-fr
Copy link
Author

pavb-fr commented Nov 15, 2023

Yes I think it should be fine for my use case when the issue CERT-Polska/mwdb-core#560 will be closed. Indeed I need a way to split the sample files by tag to be able to index them correctly.
Having a different s3 bucket or a different root path for the samples should fixed that.

On the other hand, I still have errors in mquery with missing files. But as described in the documentation mquery should ignored them. Maybe the issue should be open on mquery rather than here.

@msm-code
Copy link
Contributor

On the other hand, I still have errors in mquery with missing files. But as described in the documentation mquery should ignored them. Maybe the issue should be open on mquery rather than here.

If you remove the dataset from ursadb it shouldn't be an issue - the files will be gone from mquery as well. But if you just remove files from disk then you'll get errors.

I agree that CERT-Polska/mwdb-core#560 may help with implementing this in practice

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

2 participants