ARGUSBug Unchecked length in ArgusGenerateRecordStruct causes SEGFAULT
Chris Benedict via Argus-info
argus-info at lists.andrew.cmu.edu
Fri Aug 19 19:09:56 EDT 2016
Carter,
Sounds good to me. I wasn't sure how you would like the bug fixed so I just
included something quick and dirty.
I also have a divide-by-zero bug I will be sending a report in for on
Monday.
Thanks for the quick response.
--
Chris Benedict
Prometheus Computing
On Aug 19, 2016 4:58 PM, "Carter Bullard" <carter at qosient.com> wrote:
> Hey Chris,
> Thanks for the bug report. The condition that you are highlighting, where
> a flow record's label string is assumed to have length greater than zero,
> shouldn’t occur using argus and argus clients programs. Sorry to see that
> you could provide a sample file that shows that it can :O(
>
> OK, so we are parsing input flow records, and the condition is that we
> have an ARGUS_LABEL_DSR, that doesn’t contain a valid label string. The
> standard way to deal with parsing error conditions is to just keep
> processing, rather than throw an error exception. If a DSR is corrupt, we
> assume the record is corrupt, and we toss the single record. In your
> sample file, the record that has the bad label section, also doesn’t have a
> valid metrics section, so its pretty messed up.
>
> The fix that we are adding to the master distribution, causes us to toss
> the corrupted record and continue on, which then processes the other
> records that are in your sample file.
>
> Our recommendation is:
>
> if (tlabel->hdr.argus_dsrvl8.len <= 0) {
> retn = NULL;
> break;
> }
>
> If this satisfies, the fix will be in the next release.
> Carter
>
>
> > On Aug 19, 2016, at 5:54 PM, Chris Benedict via Argus-info <
> argus-info at lists.andrew.cmu.edu> wrote:
> >
> >> Description:
> >
> > This issue was discovered with AFL (http://lcamtuf.coredump.cx/afl/).
> >
> > Within ArgusGenerateRecordStruct() in common/argus_client.c at line
> 2834 the
> > variable 'tlabel->hdr.argus_dsrvl8.len' is not checked. When set to 0
> as in
> > the sample provided, it causes 'llen' to be set to a negative number.
> When
> > passed to bzero() at line 2836 it causes a segmentation fault and
> causes the
> > application to crash.
> >
> > This bug is potentially exploitable. We request an appropriate CVE.
> >
> >> How-To-Repeat:
> >
> > Download sample from:
> > https://nfiles.nist.gov/seos/1000/mpd/ui27082016897c598e94f8f9febc46
> 82415276ed88
> >
> > Execute with ra:
> > ra -r sample
> >
> > Please note, the file will only be available until August 26, 2016. If
> you
> > encounter any difficulty please contact me at
> > c.benedict at prometheuscomputing.com.
> >
> >> Fix:
> >
> > Add bounds checking to the relevant function at around line 2834 such
> as:
> >
> > if (tlabel->hdr.argus_dsrvl8.len <= 0) {
> > ArgusLog (LOG_ERR, "ArgusGenerateRecordStruct: pre
> > ARGUS_LABEL_DSR len is zero");
> > break;
> > }
> >
> >> Originator: Chris Benedict, Aurelien Delaitre, NIST SAMATE Project,
> https://samate.nist.gov
> >> Organization:
> > National Institute of Standards and Technology
> >> ARGUS support: none
> >> Release: argus-3.0
> >> Product: ra
> >> Synopsis: Unchecked length in ArgusGenerateRecordStruct causes
> SEGFAULT
> >> Class: sw-bug
> >> Severity: serious
> >> Priority: high
> >
> >> Environment: Linux
> >
> > System: Linux 4.7.0-1-ARCH #1 SMP PREEMPT Mon Aug 8 22:05:58 CEST
> > 2016 x86_64 GNU/Linux
> >
> >
> > Paths: /usr/local/sbin/argus /usr/local/bin/ra /usr/bin/make
> > /usr/bin/gcc /usr/bin/cc
> >
> > ARGUS: Argus Version 3.0.8.2
> > RA: Ra Version 3.0.8.2
> >
> >
> > GCC: Using built-in specs.
> > COLLECT_GCC=/usr/bin/gcc
> > COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/lto-wrapper
> > Target: x86_64-pc-linux-gnu
> > Thread model: posix
> > gcc version 6.1.1 20160802 (GCC)
> >
> > LIBC:
> > -rw-r--r-- 1 root root 4769020 Aug 6 05:17 /lib/libc.a
> > -rw-r--r-- 1 root root 255 Aug 6 05:16 /lib/libc.so
> > lrwxrwxrwx 1 root root 12 Aug 6 05:17 /lib/libc.so.6 -> libc-2.24.so
> > -rwxr-xr-x 1 root root 1951744 Aug 6 05:17 /lib/libc-2.24.so
> > -rw-r--r-- 1 root root 4769020 Aug 6 05:17 /usr/lib/libc.a
> > -rw-r--r-- 1 root root 255 Aug 6 05:16 /usr/lib/libc.so
> > lrwxrwxrwx 1 root root 12 Aug 6 05:17 /usr/lib/libc.so.6 ->
> libc-2.24.so
> > -rwxr-xr-x 1 root root 1951744 Aug 6 05:17 /usr/lib/libc-2.24.so
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist1.pair.net/pipermail/argus/attachments/20160819/7e0470ea/attachment.html>
More information about the argus
mailing list