Open-Source-Software-Entwicklung und Downloads

Browse Subversion Repository

Diff of /trunk/1.8.x/ccs-patch/README.ccs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3875 by kumaneko, Sun Aug 1 11:39:42 2010 UTC revision 3934 by kumaneko, Wed Sep 1 14:04:16 2010 UTC
# Line 2441  Fix 2010/06/09 Line 2441  Fix 2010/06/09
2441        permissions (e.g. allow_env PATH if symlink.target="/"), it triggered        permissions (e.g. allow_env PATH if symlink.target="/"), it triggered
2442        NULL pointer dereference.        NULL pointer dereference.
2443    
2444  Fix 2010/07/29  Fix 2010/09/01
2445    
2446      @ Change keyword syntax.      @ Change directives.
2447    
2448        I removed "allow_" prefix from directives. New directives for files are        I removed "allow_" prefix from directives. New directives for files are
2449        prefixed with "file ". For example, "allow_read" changed to "file read",        prefixed with "file ". For example, "allow_read" changed to "file read",
2450        "allow_ioctl" changed to "file ioctl". New directive for "allow_network"        "allow_ioctl" changed to "file ioctl". New directive for "allow_network
2451        is "network". New directive for "allow_env" is "misc env". New directive        TCP" is "network inet stream", "allow_network UDP" is "network inet
2452        for "allow_signal" is "ipc signal". New directive for "allow_capability"        dgram", "allow_network RAW" is "network inet raw". New directive for
2453        is "capability". These directives correspond with keywords used by        "allow_env" is "misc env". New directive for "allow_signal" is "ipc
2454        profile's CONFIG lines.        signal". New directive for "allow_capability" is "capability". These new
2455          directives correspond with keywords used by profile's CONFIG lines.
2456    
2457        I removed "deny_rewrite" and "allow_rewrite" directives and introduced        I removed "deny_rewrite" and "allow_rewrite" directives and introduced
2458        "file append" directive. Thus, permission for open(O_WRONLY | O_APPEND)        "file append" directive. Thus, permission for open(O_WRONLY | O_APPEND)
# Line 2467  Fix 2010/07/29 Line 2468  Fix 2010/07/29
2468        check requires hooks in filesystem part while almost all hooks for        check requires hooks in filesystem part while almost all hooks for
2469        filesystem part have moved to LSM by Linux 2.6.34.        filesystem part have moved to LSM by Linux 2.6.34.
2470    
2471      @ Distinguish send() and recv() operations for UDP and IP protocols.        New directive for "execute_handler" is "task auto_execute_handler",
2472          "denied_execute_handler" is "task denied_execute_handler".
2473    
2474        Until now, it was impossible for UDP and IP protocols to allow either      @ Distinguish send() and recv() operations.
2475    
2476          Until now, it was impossible for UDP and IP sockets to allow either
2477        only sending or only receiving because permissions were aggregated with        only sending or only receiving because permissions were aggregated with
2478        "connect" keyword. I broke "connect" keyword into "send" and "recv"        "connect" keyword. I broke "connect" keyword into "send" and "recv"
2479        keywords so that you can keep access control for send() operation enabled        keywords so that you can keep access control for send() operation enabled
2480        when you have to turn access control for recv() operation off due to        when you have to disable access control for recv() operation due to
2481        application breakage by filtering incoming datagram.        application breakage by discarding incoming datagram.
2482    
2483      @ Wait for next connection/datagram if current connection/datagram was      @ Wait for next connection/datagram if current connection/datagram was
2484        discarded.        discarded.
2485    
2486        Regarding "network TCP accept", "network UDP recv", "network RAW recv"        Regarding "network inet stream accept", "network inet dgram recv",
2487        keywords, I modified to wait for next connection/datagram if current        "network inet raw recv" directives, I modified to wait for next
2488        connection/datagram was discarded. LSM hooks for these keywords are        connection/datagram if current connection/datagram was discarded.
2489        currently missing because this behavior may break applications.        LSM hooks for these directives are currently missing because this
2490        If you found applications broken by this behavior, you can set        behavior may break applications. If you found applications broken by
2491        CONFIG::network::inet_tcp_accept and/or CONFIG::network::inet_udp_recv        this behavior, you can set CONFIG::network::inet_stream_accept and/or
2492        and/or CONFIG::network::inet_raw_recv to mode=disabled in order to        CONFIG::network::inet_dgram_recv and/or CONFIG::network::inet_raw_recv
2493        disable filtering for incoming connection/datagram.        to mode=disabled in order to only disable filtering for incoming
2494          connection/datagram.
2495    
2496        @ Add Unix domain socket restriction support.
2497    
2498          Until now, it was possible to restrict only inet domain sockets (i.e.
2499          TCP/UDP/RAW). I added restriction for Unix domain sockets (i.e. stream/
2500          dgram/seqpacket). New directive "network unix" is added as well as
2501          "network inet" directive.
2502    
2503      @ Allow specifying multiple permissions in a line.      @ Allow specifying multiple permissions in a line.
2504    
# Line 2525  Fix 2010/07/29 Line 2537  Fix 2010/07/29
2537    
2538      @ Add a new keyword "any" for domain transition control.      @ Add a new keyword "any" for domain transition control.
2539    
2540        To be able to make it easier to apply execute_handler on each domain,        To be able to make it easier to apply auto_execute_handler on each
2541        I added "any" keyword to domain transition control keywords. Now,        domain, I added "any" keyword to domain transition control keywords. Now,
2542        "initialize_domain /usr/sbin/sshd" changed to        "initialize_domain /usr/sbin/sshd" changed to
2543        "initialize_domain /usr/sbin/sshd from any" and        "initialize_domain /usr/sbin/sshd from any" and
2544        "keep_domain <kernel> /usr/sbin/sshd /bin/bash" changed to        "keep_domain <kernel> /usr/sbin/sshd /bin/bash" changed to
2545        "keep_domain any from <kernel> /usr/sbin/sshd /bin/bash".        "keep_domain any from <kernel> /usr/sbin/sshd /bin/bash".
2546    
2547        "keep_domain /path/to/execute_handler from any" will allow you to apply        "keep_domain /path/to/auto_execute_handler from any" will allow you to
2548        execute_handler for any domains without creating domains for        apply auto_execute_handler for any domains without creating domains for
2549        execute_handler.        auto_execute_handler.
2550    
2551      @ Change buffering mode for reading policy.      @ Change buffering mode for reading policy.
2552    
# Line 2555  Fix 2010/07/29 Line 2567  Fix 2010/07/29
2567        the exception policy and specify "use_group 0" from the domains in the        the exception policy and specify "use_group 0" from the domains in the
2568        domain policy.        domain policy.
2569    
2570        "ignore_global_allow_read" and "ignore_global_allow_env" keywords were        "ignore_global_allow_read" and "ignore_global_allow_env" directives were
2571        removed from domain policy and "use_group" keyword was added.        removed from domain policy and "use_group" keyword was added.
2572    
2573      @ Allow controlling generation of access granted logs for per an entry      @ Allow controlling generation of access granted logs for per an entry
# Line 2564  Fix 2010/07/29 Line 2576  Fix 2010/07/29
2576        I added per-entry flag which controls generation of grant logs because        I added per-entry flag which controls generation of grant logs because
2577        Xen and KVM issues ioctl requests so frequently. For example,        Xen and KVM issues ioctl requests so frequently. For example,
2578    
2579          file ioctl /dev/null 0x5401 ; set audit=no          file ioctl /dev/null 0x5401 if audit=no
2580    
2581        will suppress /proc/ccs/grant_log even if profile says grant_log=yes .        will suppress /proc/ccs/grant_log even if profile says grant_log=yes .
2582    
2583          file ioctl /dev/null 0x5401 ; set audit=yes          file ioctl /dev/null 0x5401 if audit=yes
2584    
2585        will generate /proc/ccs/grant_log even if profile says grant_log=no .        will generate /proc/ccs/grant_log even if profile says grant_log=no .
2586    
# Line 2578  Fix 2010/07/29 Line 2590  Fix 2010/07/29
2590    
2591        This flag is intended for frequently accessed resources like        This flag is intended for frequently accessed resources like
2592    
2593          file read /var/www/html/\{\*\}/\*.html ; set audit=no          file read /var/www/html/\{\*\}/\*.html if audit=no
2594    
2595        .        .
2596    
2597        @ Change profile structure.
2598    
2599          To make it clear that preferences can be specified by per-profile basis,
2600          I removed global preference ("PREFERENCE::"). Now, you need to explicitly
2601          specify per-profile preference ("$profilenumber-PREFERENCE::").
2602          
2603          I changed default mode for access grant logs from "yes" to "no".
2604          You may change mode to "yes" if you want all grant logs to be generated.
2605          You may override mode using "if audit=yes" if you want specific grant
2606          logs to be generated.
2607    
2608          Since printing all warning/error messages to console is noisy,
2609          I changed verbose mode control from per-preference basis to
2610          per-functionality basis. Now, you can selectively print warning/error
2611          messages.
2612    
2613        @ Automatically create domain by execve() even if enforcing mode.
2614    
2615          Until now, new domains are not created if the domain was not defined and
2616          current domain is enforcing mode ("CONFIG::file::execute=enforcing").
2617    
2618          To be able to restrict shell session without using "keep_domain",
2619          I changed to create new domains automatically even if current domain is
2620          enforcing mode.
2621    
2622        @ Replace "task.state" with "auto_domain_transition".
2623    
2624          task.state is difficult to use. Thus, I replaced task.state with
2625          auto_domain_transition which performs domain transition instead of
2626          changing current process's state variables.
2627    
2628          If domain transition failed, current process will be killed by SIGKILL
2629          signal. This should not happen in normal circumstances, for you know the
2630          domain to transit to and thereby you will define the domain beforehand
2631          when you use "auto_domain_transition" keyword.
2632    
2633        @ Replace "allow_transit" with "task manual_domain_transition".
2634    
2635          I changed this directive to specify absolute domainname (e.g.
2636          "<kernel> /usr/sbin/httpd //app=cgi1\040id=10000") rather than virtual
2637          pathname (e.g. "//app=cgi1\040id=10000") because you know the domain to
2638          transit to and thereby you will define the domain beforehand when you use
2639          "task manual_domain_transition" directive.
2640    
2641          This change allows you to jump to arbitrary domain.
2642    
2643        @ Add "task auto_domain_transition".
2644    
2645          This is similar to "task manual_domain_transition", but is automatically
2646          applied if conditions are met. For example,
2647    
2648            task auto_domain_transition <kernel> //./non-root if task.uid!=0
2649    
2650          will automatically jump to "<kernel> //./non-root" domain if current
2651          process's UID is not 0 whereas
2652    
2653            task manual_domain_transition <kernel> //./non-root if task.uid!=0
2654    
2655          will jump to "<kernel> //./non-root" domain if current process's UID is
2656          not 0 and current process wrote "<kernel> //./non-root" + '\n' to
2657          /proc/ccs/.transition interface.
2658    
2659          If domain transition failed, current process will be killed by SIGKILL
2660          signal.
2661    
2662      @ Optimize for object's size.      @ Optimize for object's size.
2663    
2664        I merged similar code in order to reduce object's filesize.        I merged similar code in order to reduce object's filesize.
2665    
2666    Version 1.8.0 2010/XX/XX   Feature enhancement release.

Legend:
Removed from v.3875  
changed lines
  Added in v.3934

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26