[Bro-Dev] [Bro-Commits] [git/bro] topic/bernhard/file-analysis-x509: Change x509 log - now certificates are only logged once per hour. (0d50b8b)
Siwek, Jonathan Luke
jsiwek at illinois.edu
Thu Mar 13 12:36:40 PDT 2014
On Mar 13, 2014, at 12:54 PM, Bernhard Amann <bernhard at ICSI.Berkeley.EDU> wrote:
> function get_file_handle(c: connection, is_orig: bool): string
> {
> set_session(c);
>
> local depth: count;
>
> if ( is_orig )
> {
> depth = c$ssl$client_depth;
> ++c$ssl$client_depth;
> }
> else
> {
> depth = c$ssl$server_depth;
> ++c$ssl$server_depth;
> }
>
> return cat(Analyzer::ANALYZER_SSL, c$start_time, is_orig, id_string(c$id), depth);
> }
>
> I have no idea if that is “matching” or not - in any case, the above C code does not work in combination with that
> file handle generation. Thinking about it, it makes sense - the EndOfFile function probably calls get_file_handle again for
> that connection, gets a different file handle back (because the counters are increased), and hence removal will not work.
Yes, that looks like what would happen.
> …even after reading through the how to, I was not quite clear on the fact, that get_file_handle
> has to always return the same value for the same file. Which is impossible to accomplish in cases
> like this, because, several certificates are sent over a connection, and you do not get any further information
> with the get_file_handle call. So - you more or less have to return differing IDs for everything.
Instead of incrementing the depth in get_file_handle, it could increment it in a x509_certificate handler? That way the handle remains the same between the DataIn/EndOfFile pairs, but the next DataIn/EndOfFile will get a new file handle due to the incremented depth.
Not suggesting you change it from using the pre-computed file id method you currently have, just challenging the impossibility claim :). And I do agree the whole script-layer generation of file handle string is difficult to understand/use, but I don’t have any ideas at the moment for helping that...
> Perhaps the EndOfFile functions should get some warning that details in which circumstances you can use
> them (probably - static per-connection ID).
I don’t think there’s any limitation/circumstances unique to EndOfFile that differs from the other FAF APIs.
> Also - it might be nice to throw some kind of reporter warning when EndOfFile is called for a file ID that
> does not exists.
>
> If I understood everything right, that should never happen during normal operations, should it?
It could be that the file timed out and was already cleaned up before a protocol analyzer called EndOfFile. I think it can also be the case that a protocol analyzer only ever calls EndOfFile because a connection got closed/reset before any file data was seen.
- Jon
More information about the bro-dev
mailing list