Re: families

Robert Rich <[email protected]>
Newsgroups gmane.comp.security.nessus.devel
Message-ID <[email protected]>
Michel Arboi wrote:

>Erik <[email protected]> writes:
>
>  
>
>>What about removing the restriction for a plugin to belong to only one
>>"family"?  Instead of a 'family' field, how about something like a
>>'keywords' or 'families' field
>>    
>>
>
>This has been discussed. That looks like a good idea but need some
>changes in the core product (and the protocol?)
>  
>
I think ultimately a flat one-to-one grouping mechanism for plugins is 
going to be prone to the same ambiguities and overlap that you're seeing 
now.  Reassigning the plugins to a new list of families is still 
worthwhile, because the current list could be improved...but it won't 
really enhance the overall product.

If the changes would be significant, would it be possible to introduce 
Erik's idea as something new and maintain the existing families as a 
legacy holdover for backwards compatibility?

>Anyway, we should decide what families are used for. I think they are
>good to select or unselect a set of plugins.
>Apart from DoS (which could be removed by an enhanced safe_checks, as
>I said), I think that families are useful to find and enable or
>disable a specific plugin, or to select a whole set, e.g Windows or
>HTTP & CGI
>  
>
I think the answer to this question will make the development of a new 
list of families much easier.  However, because of the technical 
limitations of families, you can really only have one purpose.  Any more 
than that, and it becomes complicated.  What if you have a plugin that 
uses default account credentials to execute an HTTP query against a 
sample application to enumerate EJBs in a remote container through JNDI, 
possibly killing it in the process?  Obviously a rediculous example, but 
this plugin works over HTTP, exploits default passwords, uses a sample 
application, tests JNDI security and ultimately just gathers information 
in a manner that could potentially kill the service(s).  You could pick 
a family for this plugin, but there aren't really any that serve it 
best, which is probably why we currently have a set of families that are 
somewhat orthogonal.

A family, right now, is just a single valued property of a plugin...the 
grouping function of families is done through a function of searching 
those properties for equal values.  Extending that idea, would it be 
difficult to implement a generic plugin properties model, one that is 
typed, supports multi-valued and/or nested attributes?  Using this 
approach, you could implement arbitrary plugin groups like Erik was 
after above, for the purpose that Michel proposes for families (grouping 
plugins for execution).  You could then group plugins by creating simple 
queries against these properties...i.e.:

- Plugins that work over HTTP. (PROTO == (HTTP || HTTPS))
- Plugins that attack IIS. (APP == ".*IIS.*")
- Plugins that address a SANS Top 20 issue (SANS20 == TRUE )
- Plugins that could kill the service. ( DANGEROUS == TRUE )
- Plugins that are designed to kill the service. ( DOS == TRUE )
- Plugins that are really only useful if you have credentials. ( 
REQCREDS == TRUE )
- Plugins that have a CVE associated with them ( #CVEID > 0 )
- Plugins that check for HIGH severity issues ( SEVERITY == HIGH )

You could also implement something that i've been yearning for.  Some 
type of model that helps reflect the maturity/quality of a plugin so you 
can run wide open on test environments, but be more cautious in 
production/customer environments (consider the sourceforge 'development 
status' model)

- Plugins that are stable (DEVSTATUS == STABLE)

The other aspect of this, though, is that additional properties can help 
on the reporting side of things.  It takes some effort to get at the 
information that is contained in the default output of reports.  Most of 
the time, it's nothing big (having to parse a list of CVE-IDs, using 
regexes to extract data from recommendations in the info), but it slows 
the process and can be problematic.  Being able to directly access a set 
of typed properties for each plugin, possibly including associated KB 
entries/etc, would make it much easier to fold and spindle the output 
into things that are useful for a given purpose.  Looking at 
vulnerability databases such ICAT and OSVDB, there are several 
potentially useful properties of a plugin that could be added directly 
to the plugin, or indirectly by reference to the associated db.

- Vulnerability Type - Buffer Overflow, Race Condition, etc
- Attack Scope - Local, Remote
- Loss - Availability, Confidentiality, Superuser Access, Process User 
Access
- Known Exploits - True/False (or URLs)

This whole generic properties thing could be bunk, and is probably a lot 
of effort for minimal return, but i think if we're considering going 
back through and touching each of the nearly 2100 plugins that are out 
there now, it'd be good to get the most bang for the buck.

My $.02.

_______________________________________________
Nessus-devel mailing list
[email protected]
http://mail.nessus.org/mailman/listinfo/nessus-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.