Changeset 484


Ignore:
Timestamp:
03/26/11 13:09:16 (3 years ago)
Author:
sgrubb
Message:
  • Add new event types
  • Update syscall tables
  • On i386, audit rules do not work on inode's with a large number
  • Improve the robustness of libaudit field encoding functions
Location:
branches/1.8
Files:
1 added
16 edited

Legend:

Unmodified
Added
Removed
  • branches/1.8/ChangeLog

    r483 r484  
    88- Fix parsing state problem in libauparse 
    99- Update prelude support 
     10- Add new event types 
     11- Update syscall tables 
     12- On i386, audit rules do not work on inode's with a large number 
     13- Improve the robustness of libaudit field encoding functions 
    1014 
    11151.7.18 
  • branches/1.8/lib/Makefile.am

    r373 r484  
    11# Makefile.am --  
    2 # Copyright 2004-2008 Red Hat Inc., Durham, North Carolina. 
     2# Copyright 2004-2009 Red Hat Inc., Durham, North Carolina. 
    33# All Rights Reserved. 
    44# 
     
    4444BUILT_SOURCES += alpha_tables.h 
    4545endif 
     46if USE_ARMEB 
     47BUILT_SOURCES += armeb_tables.h 
     48endif 
    4649noinst_PROGRAMS = gen_actiontabs_h gen_errtabs_h gen_fieldtabs_h \ 
    4750        gen_flagtabs_h gen_ftypetabs_h gen_i386_tables_h \ 
     
    5154if USE_ALPHA 
    5255noinst_PROGRAMS += gen_alpha_tables_h 
     56endif 
     57if USE_ARMEB 
     58noinst_PROGRAMS += gen_armeb_tables_h 
    5359endif 
    5460gen_actiontabs_h_SOURCES = gen_tables.c gen_tables.h actiontab.h 
     
    6268alpha_tables.h: gen_alpha_tables_h Makefile 
    6369        ./gen_alpha_tables_h --lowercase --i2s --s2i alpha_syscall > $@ 
     70endif 
     71 
     72if USE_ARMEB 
     73gen_armeb_tables_h_SOURCES = gen_tables.c gen_tables.h armeb_table.h 
     74gen_armeb_tables_h_CFLAGS = $(AM_CFLAGS) '-DTABLE_H="armeb_table.h"' 
     75armeb_tables.h: gen_armeb_tables_h Makefile 
     76        ./gen_armeb_tables_h --lowercase --i2s --s2i armeb_syscall > $@ 
    6477endif 
    6578 
  • branches/1.8/lib/alpha_table.h

    r1 r484  
    11/* alpha_table.h -- 
    2  * Copyright 2005-07 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2005-07,2010-11 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    420420_S(477, "timerfd") 
    421421_S(478, "eventfd") 
    422  
     422_S(479, "recvmmsg") 
     423_S(480, "fallocate") 
     424_S(481, "timerfd_create") 
     425_S(482, "timerfd_settime") 
     426_S(483, "timerfd_gettime") 
     427_S(484, "signalfd4") 
     428_S(485, "eventfd2") 
     429_S(486, "epoll_create1") 
     430_S(487, "dup3") 
     431_S(488, "pipe2") 
     432_S(489, "inotify_init1") 
     433_S(490, "preadv") 
     434_S(491, "pwritev") 
     435_S(492, "rt_tgsigqueueinfo") 
     436_S(493, "perf_event_open") 
     437_S(494, "fanotify_init") 
     438_S(495, "fanotify_mark") 
     439_S(496, "prlimit64") 
     440 
  • branches/1.8/lib/audit_logging.c

    r241 r484  
    11/* audit_logging.c --  
    2  * Copyright 2005-2008 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2005-2008,2010,2011 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    8686        int i; 
    8787 
     88        if (str == NULL) 
     89                return 0; 
     90 
    8891        for (i=0; i<size; i++) { 
    8992                // we don't test for > 0x7f because str[] is signed. 
     
    103106        const char *hex = "0123456789ABCDEF"; 
    104107 
     108        if (final == NULL) 
     109                return NULL; 
     110 
     111        if (buf == NULL) { 
     112                *final = 0; 
     113                return final; 
     114        } 
     115 
    105116        for (i=0; i<size; i++) { 
    106117                *ptr++ = hex[(buf[i] & 0xF0)>>4]; /* Upper nibble */ 
     
    116127        char *str; 
    117128 
    118         if (vlen == 0) 
     129        if (vlen == 0 && value) 
    119130                vlen = strlen(value); 
    120131 
    121         if (audit_value_needs_encoding(value, vlen)) { 
     132        if (value && audit_value_needs_encoding(value, vlen)) { 
    122133                char *tmp = malloc(2*vlen + 1); 
    123                 audit_encode_value(tmp, value, vlen); 
    124                 asprintf(&str, "%s=%s", name, tmp); 
    125                 free(tmp); 
     134                if (tmp) { 
     135                        audit_encode_value(tmp, value, vlen); 
     136                        asprintf(&str, "%s=%s", name, tmp); 
     137                        free(tmp); 
     138                } else 
     139                        str = NULL; 
    126140        } else 
    127                 asprintf(&str, "%s=\"%s\"", name, value); 
     141                asprintf(&str, "%s=\"%s\"", name, value ? value : "?"); 
    128142        return str; 
    129143} 
     
    135149{ 
    136150        int res; 
    137         char tmp[PATH_MAX]; 
     151        char tmp[PATH_MAX+1]; 
    138152 
    139153        /* get the name of the current executable */ 
    140         if ((res = readlink("/proc/self/exe", tmp, PATH_MAX - 1)) == -1) { 
     154        if ((res = readlink("/proc/self/exe", tmp, PATH_MAX)) == -1) { 
    141155                strcpy(exename, "\"?\""); 
    142156                audit_msg(LOG_ERR, "get_exename: cannot determine executable"); 
    143157        } else { 
    144                 int len; 
    145  
    146158                tmp[res] = '\0'; 
    147                 len = strlen(tmp); 
    148                 if (len < res) 
    149                         res = len; 
    150159                if (audit_value_needs_encoding(tmp, res)) 
    151160                        return audit_encode_value(exename, tmp, res); 
  • branches/1.8/lib/i386_table.h

    r306 r484  
    11/* i386_table.h -- 
    2  * Copyright 2005-09 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2005-11 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    355355_S(334, "pwritev") 
    356356_S(335, "rt_tgsigqueueinfo") 
    357 _S(336, "perf_counter_open") 
     357_S(336, "perf_event_open") 
     358_S(337, "recvmmsg") 
     359_S(338, "fanotify_init") 
     360_S(339, "fanotify_mark") 
     361_S(340, "prlimit64") 
    358362 
  • branches/1.8/lib/ia64_table.h

    r306 r484  
    11/* ia64_table.h -- 
    2  * Copyright 2005-09 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2005-11 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    313313_S(1320, "pwritev") 
    314314_S(1321, "rt_tgsigqueueinfo") 
     315_S(1322, "recvmmsg") 
     316_S(1323, "fanotify_init") 
     317_S(1324, "fanotify_mark") 
     318_S(1325, "prlimit64") 
    315319 
  • branches/1.8/lib/libaudit.c

    r415 r484  
    11/* libaudit.c --  
    2  * Copyright 2004-2007,2010 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2004-2009 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    281281                        continue; 
    282282                } 
    283                 if (nv.value == NULL) 
    284                         return 1;  
     283                if (nv.value == NULL) { 
     284                        fclose(f); 
     285                        return 1; 
     286                } 
    285287 
    286288                /* identify keyword or error */ 
     
    10831085                        break; 
    10841086                case AUDIT_FILETYPE: 
    1085                         if (flags != AUDIT_FILTER_EXIT && flags != AUDIT_FILTER_ENTRY) 
     1087                        if (!(flags == AUDIT_FILTER_EXIT || flags == AUDIT_FILTER_ENTRY)) 
    10861088                                return -17; 
    10871089                        rule->values[rule->field_count] =  
     
    11151117                        } 
    11161118 
    1117                         if (field == AUDIT_PPID && flags != AUDIT_FILTER_EXIT  
    1118                                 && flags != AUDIT_FILTER_ENTRY) 
     1119                        if (field == AUDIT_PPID && !(flags == AUDIT_FILTER_EXIT 
     1120                                || flags == AUDIT_FILTER_ENTRY)) 
    11191121                                return -17; 
    11201122                         
     
    11251127                                return -21; 
    11261128 
    1127                         rule->values[rule->field_count] = strtol(v, NULL, 0); 
     1129                        if (field == AUDIT_INODE) 
     1130                                rule->values[rule->field_count] = 
     1131                                        strtoul(v, NULL, 0); 
     1132                        else 
     1133                                rule->values[rule->field_count] = 
     1134                                        strtol(v, NULL, 0); 
    11281135                        break; 
    11291136        } 
  • branches/1.8/lib/libaudit.h

    r402 r484  
    11/* libaudit.h --  
    2  * Copyright 2004-2009 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2004-2011 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    4747 * 1600 - 1699 kernel crypto events 
    4848 * 1700 - 1799 kernel anomaly records 
    49  * 1800 - 1999 future kernel use (maybe integrity labels and related events) 
     49 * 1800 - 1899 kernel integrity labels and related events 
     50 * 1800 - 1999 future kernel use 
    5051 * 2001 - 2099 unused (kernel) 
    5152 * 2100 - 2199 user space anomaly records 
     
    8990#define AUDIT_SYSTEM_SHUTDOWN   1128    /* System shutdown */ 
    9091#define AUDIT_SYSTEM_RUNLEVEL   1129    /* System runlevel change */ 
     92#define AUDIT_SERVICE_START     1130    /* Service (daemon) start */ 
     93#define AUDIT_SERVICE_STOP      1131    /* Service (daemon) stop */ 
    9194 
    9295#define AUDIT_FIRST_DAEMON      1200 
     
    129132#ifndef AUDIT_CAPSET 
    130133#define AUDIT_CAPSET            1322    /* Capability syscall structures */ 
     134#endif 
     135 
     136#ifndef AUDIT_MMAP 
     137#define AUDIT_MMAP              1323 /* Descriptor and flags in mmap */ 
     138#endif 
     139 
     140#ifndef AUDIT_NETFILTER_PKT 
     141#define AUDIT_NETFILTER_PKT     1324 /* Packets traversing netfilter chains */ 
     142#endif 
     143#ifndef AUDIT_NETFILTER_CFG 
     144#define AUDIT_NETFILTER_CFG     1325 /* Netfilter chain modifications */ 
    131145#endif 
    132146 
  • branches/1.8/lib/lookup_table.c

    r373 r484  
    3838#include "alpha_tables.h" 
    3939#endif 
     40#ifdef WITH_ARMEB 
     41#include "armeb_tables.h" 
     42#endif 
    4043#include "i386_tables.h" 
    4144#include "ia64_tables.h" 
     
    5356#include "optabs.h" 
    5457 
     58#ifndef EM_ARM 
     59#define EM_ARM  40 
     60#endif 
     61 
    5562struct int_transtab { 
    5663    int        key; 
     
    6976    { MACH_ALPHA,   AUDIT_ARCH_ALPHA  } 
    7077#endif 
     78#ifdef WITH_ARMEB 
     79    { MACH_ARMEB,   AUDIT_ARCH_ARMEB  } 
     80#endif 
    7181}; 
    7282#define AUDIT_ELF_NAMES (sizeof(elftab)/sizeof(elftab[0])) 
     
    115125                case MACH_ALPHA: 
    116126                        found = alpha_syscall_s2i(sc, &res); 
     127                        break; 
     128#endif 
     129#ifdef WITH_ARMEB 
     130                case MACH_ARMEB: 
     131                        found = armeb_syscall_s2i(sc, &res); 
    117132                        break; 
    118133#endif 
     
    147162                        return alpha_syscall_i2s(sc); 
    148163#endif 
     164#ifdef WITH_ARMEB 
     165                case MACH_ARMEB: 
     166                        return armeb_syscall_i2s(sc); 
     167#endif 
    149168        } 
    150169        return NULL; 
  • branches/1.8/lib/machinetab.h

    r373 r484  
    3434_S(MACH_ALPHA,   "alpha"  ) 
    3535#endif 
     36#ifdef WITH_ARMEB 
     37_S(MACH_ARMEB,   "armeb"  ) 
     38#endif 
  • branches/1.8/lib/msg_typetab.h

    r402 r484  
    11/* msg_typetab.h -- 
    2  * Copyright 2005-07 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2005-07,2009-11 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    7272_S(AUDIT_SYSTEM_SHUTDOWN,            "SYSTEM_SHUTDOWN"               ) 
    7373_S(AUDIT_SYSTEM_RUNLEVEL,            "SYSTEM_RUNLEVEL"               ) 
     74_S(AUDIT_SERVICE_START,              "SERVICE_START"                 ) 
     75_S(AUDIT_SERVICE_STOP,               "SERVICE_STOP"                  ) 
    7476_S(AUDIT_DAEMON_START,               "DAEMON_START"                  ) 
    7577_S(AUDIT_DAEMON_END,                 "DAEMON_END"                    ) 
     
    103105_S(AUDIT_BPRM_FCAPS,                 "BPRM_FCAPS"                    ) 
    104106_S(AUDIT_CAPSET,                     "CAPSET"                        ) 
     107_S(AUDIT_MMAP,                       "MMAP"                          ) 
     108_S(AUDIT_NETFILTER_PKT,              "NETFILTER_PKT"                 ) 
     109_S(AUDIT_NETFILTER_CFG,              "NETFILTER_CFG"                 ) 
    105110_S(AUDIT_AVC,                        "AVC"                           ) 
    106111_S(AUDIT_SELINUX_ERR,                "SELINUX_ERR"                   ) 
  • branches/1.8/lib/ppc_table.h

    r306 r484  
    11/* ppc_table.h -- 
    2  * Copyright 2005-09 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2005-09,2011 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    337337_S(321, "pwritev") 
    338338_S(322, "rt_tgsigqueueinfo") 
     339_S(323, "fanotify_init") 
     340_S(324, "fanotify_mark") 
     341_S(325, "prlimit64") 
     342_S(326, "socket") 
     343_S(327, "bind") 
     344_S(328, "connect") 
     345_S(329, "listen") 
     346_S(330, "accept") 
     347_S(331, "getsockname") 
     348_S(332, "getpeername") 
     349_S(333, "socketpair") 
     350_S(334, "send") 
     351_S(335, "sendto") 
     352_S(336, "recv") 
     353_S(337, "recvfrom") 
     354_S(338, "shutdown") 
     355_S(339, "setsockopt") 
     356_S(340, "getsockopt") 
     357_S(341, "sendmsg") 
     358_S(342, "recvmsg") 
     359_S(343, "recvmmsg") 
     360_S(344, "accept4") 
    339361 
  • branches/1.8/lib/s390_table.h

    r306 r484  
    11/* s390_table.h -- 
    2  * Copyright 2005-09 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2005-11 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    329329_S(329, "pwritev") 
    330330_S(330, "rt_tgsigqueueinfo") 
    331 _S(331, "perf_counter_open") 
     331_S(331, "perf_event_open") 
     332_S(332, "fanotify_init") 
     333_S(333, "fanotify_mark") 
     334_S(334, "prlimit64") 
    332335 
  • branches/1.8/lib/s390x_table.h

    r306 r484  
    11/* s390x_table.h -- 
    2  * Copyright 2005,2006,2008-09 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2005,2006,2008-11 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    293293_S(329, "pwritev") 
    294294_S(330, "rt_tgsigqueueinfo") 
    295 _S(331, "perf_counter_open") 
     295_S(331, "perf_event_open") 
     296_S(332, "fanotify_init") 
     297_S(333, "fanotify_mark") 
     298_S(334, "prlimit64") 
    296299 
  • branches/1.8/lib/syscall-update.txt

    r213 r484  
    77arch/ia64/include/asm/unistd.h 
    88arch/alpha/include/asm/unistd.h 
     9arch/arm/include/asm/unistd.h 
    910 
     11For adding new arches, the following might be useful to get a first pass file: 
     12 
     13cat unistd.h | grep '^#define __NR_' | tr -d ')' | tr 'NR+' ' ' | awk '{ printf "_S(%s, \"%s\")\n", $6, $3 }; ' 
     14 
     15it will still need hand editing 
  • branches/1.8/lib/x86_64_table.h

    r306 r484  
    11/* x86_64_table.h -- 
    2  * Copyright 2005-09 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2005-11 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    319319_S(296, "pwritev") 
    320320_S(297, "rt_tgsigqueueinfo") 
    321 _S(298, "perf_counter_open") 
     321_S(298, "perf_event_open") 
     322_S(299, "recvmmsg") 
     323_S(300, "fanotify_init") 
     324_S(301, "fanotify_mark") 
     325_S(302, "prlimit64") 
    322326 
Note: See TracChangeset for help on using the changeset viewer.