オープンソース・ソフトウェアの開発とダウンロード

Subversion リポジトリの参照

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

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

branches/ccs-patch/README.ccs revision 3869 by kumaneko, Thu Jul 29 13:29:11 2010 UTC trunk/1.8.x/ccs-patch/README.ccs revision 4088 by kumaneko, Mon Oct 25 07:08:29 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/10/25
2445    
2446      @ Change keyword syntax.      @ Fix umount() pathname calculation.
2447    
2448          "mount --bind /path/to/file1 /path/to/file2" is legal.
2449          Therefore, "umount /path/to/file2" is also legal.
2450          Do not automatically append trailing '/' if pathname to be unmounted
2451          does not end with '/'.
2452    
2453        @ Change directives.
2454    
2455        I removed "allow_" prefix from directives. New directives for files are        I removed "allow_" prefix from directives. New directives for files are
2456        prefixed with "file ". For example, "allow_read" changed to "file read",        prefixed with "file ". For example, "allow_read" changed to "file read",
2457        "allow_ioctl" changed to "file ioctl". New directive for "allow_network"        "allow_ioctl" changed to "file ioctl". New directive for "allow_network
2458        is "network". New directive for "allow_env" is "misc env". New directive        TCP" is "network inet stream", "allow_network UDP" is "network inet
2459        for "allow_signal" is "ipc signal". New directive for "allow_capability"        dgram", "allow_network RAW" is "network inet raw". New directive for
2460        is "capability". These directives correspond with keywords used by        "allow_env" is "misc env". New directive for "allow_signal" is "ipc
2461        profile's CONFIG lines.        signal". New directive for "allow_capability" is "capability". These new
2462          directives correspond with keywords used by profile's CONFIG lines.
2463    
2464        I removed "deny_rewrite" and "allow_rewrite" directives and introduced        I removed "deny_rewrite" and "allow_rewrite" directives and introduced
2465        "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 2475  Fix 2010/07/29
2475        check requires hooks in filesystem part while almost all hooks for        check requires hooks in filesystem part while almost all hooks for
2476        filesystem part have moved to LSM by Linux 2.6.34.        filesystem part have moved to LSM by Linux 2.6.34.
2477    
2478      @ Distinguish send() and recv() operations for UDP and IP protocols.        New directive for "execute_handler" is "task auto_execute_handler",
2479          "denied_execute_handler" is "task denied_execute_handler".
2480    
2481        Until now, it was impossible for UDP and IP protocols to allow either      @ Distinguish send() and recv() operations.
2482    
2483          Until now, it was impossible for UDP and IP sockets to allow either
2484        only sending or only receiving because permissions were aggregated with        only sending or only receiving because permissions were aggregated with
2485        "connect" keyword. I broke "connect" keyword into "send" and "recv"        "connect" keyword. I broke "connect" keyword into "send" and "recv"
2486        keywords so that you can keep access control for send() operation enabled        keywords so that you can keep access control for send() operation enabled
2487        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
2488        application breakage by filtering incoming datagram.        application breakage by discarding incoming datagram.
2489    
2490      @ Wait for next connection/datagram if current connection/datagram was      @ Add Unix domain socket restriction support.
       discarded.  
2491    
2492        Regarding "network TCP accept", "network UDP recv", "network RAW recv"        Until now, it was possible to restrict only inet domain sockets (i.e.
2493        keywords, I modified to wait for next connection/datagram if current        TCP/UDP/RAW). I added restriction for Unix domain sockets (i.e. stream/
2494        connection/datagram was discarded. LSM hooks for these keywords are        dgram/seqpacket). New directive "network unix" is added as well as
2495        currently missing because this behavior may break applications.        "network inet" directive.
       If you found applications broken by this behavior, you can set  
       CONFIG::network::inet_tcp_accept and/or CONFIG::network::inet_udp_recv  
       and/or CONFIG::network::inet_raw_recv to mode=disabled in order to  
       disable filtering for incoming connection/datagram.  
2496    
2497      @ Allow specifying multiple permissions in a line.      @ Allow specifying multiple permissions in a line.
2498    
# Line 2525  Fix 2010/07/29 Line 2531  Fix 2010/07/29
2531    
2532      @ Add a new keyword "any" for domain transition control.      @ Add a new keyword "any" for domain transition control.
2533    
2534        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
2535        I added "any" keyword to domain transition control keywords. Now,        domain, I added "any" keyword to domain transition control keywords. Now,
2536        "initialize_domain /usr/sbin/sshd" changed to        "initialize_domain /usr/sbin/sshd" changed to
2537        "initialize_domain /usr/sbin/sshd from any" and        "initialize_domain /usr/sbin/sshd from any" and
2538        "keep_domain <kernel> /usr/sbin/sshd /bin/bash" changed to        "keep_domain <kernel> /usr/sbin/sshd /bin/bash" changed to
2539        "keep_domain any from <kernel> /usr/sbin/sshd /bin/bash".        "keep_domain any from <kernel> /usr/sbin/sshd /bin/bash".
2540    
2541        "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
2542        execute_handler for any domains without creating domains for        apply auto_execute_handler for any domains without creating domains for
2543        execute_handler.        auto_execute_handler.
2544    
2545      @ Change buffering mode for reading policy.      @ Change buffering mode for reading policy.
2546    
# Line 2555  Fix 2010/07/29 Line 2561  Fix 2010/07/29
2561        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
2562        domain policy.        domain policy.
2563    
2564        "ignore_global_allow_read" and "ignore_global_allow_env" keywords were        "ignore_global_allow_read" and "ignore_global_allow_env" directives were
2565        removed from domain policy and "use_group" keyword was added.        removed from domain policy and "use_group" keyword was added.
2566    
2567        @ Remove "if" and "; set" keyword.
2568    
2569          I removed need for specifying these keyword.
2570          You can simply specify like below.
2571    
2572            file read /etc/shadow task.uid=0
2573    
2574        @ Remove "file_pattern" keyword.
2575    
2576          I removed "file_pattern" keyword because it is impossible to predefine
2577          all possible pathname patterns. Also, learning pathnames using incomplete
2578          patterns makes it difficult to later replace using "path_group" keyword.
2579    
2580        @ Replace verbose= parameter with statistic interface.
2581    
2582          Since it is noisy if a lot of policy violation messages are printed,
2583          I removed printk(). To be able to check whether policy violation occurred
2584          or not, I introduced /proc/ccs/stat interface which counts number of
2585          policy violations occurred. You can firstly check /proc/ccs/stat and then
2586          check /proc/ccs/reject_log .
2587    
2588        @ Remove global preference.
2589    
2590          I removed global preference in order to make code simpler.
2591    
2592      @ Allow controlling generation of access granted logs for per an entry      @ Allow controlling generation of access granted logs for per an entry
2593        basis.        basis.
2594    
2595        I added per-entry flag which controls generation of grant logs because        I added per-entry flag which controls generation of grant logs because
2596        Xen and KVM issues ioctl requests so frequently. For example,        Xen and KVM issues ioctl requests so frequently. For example,
2597    
2598          file ioctl /dev/null 0x5401 ; set audit=no          file ioctl /dev/null 0x5401 grant_log=no
2599    
2600        will suppress /proc/ccs/grant_log even if profile says grant_log=yes .        will suppress /proc/ccs/grant_log even if preference says grant_log=yes .
2601    
2602          file ioctl /dev/null 0x5401 ; set audit=yes          file ioctl /dev/null 0x5401 grant_log=yes
2603    
2604        will generate /proc/ccs/grant_log even if profile says grant_log=no .        will generate /proc/ccs/grant_log even if preference says grant_log=no .
2605    
2606          file ioctl /dev/null 0x5401          file ioctl /dev/null 0x5401
2607    
2608        will generate /proc/ccs/grant_log only if profile says grant_log=yes .        will generate /proc/ccs/grant_log only if preference says grant_log=yes .
2609    
2610        This flag is intended for frequently accessed resources like        This flag is intended for frequently accessed resources like
2611    
2612          file read /var/www/html/\{\*\}/\*.html ; set audit=no          file read /var/www/html/\{\*\}/\*.html grant_log=no
2613    
2614        .        .
2615    
2616        @ Automatically create domain by execve() even if enforcing mode.
2617    
2618          Until now, new domains are not created if the domain was not defined and
2619          current domain is enforcing mode ("CONFIG::file::execute=enforcing").
2620    
2621          To be able to restrict shell session without using "keep_domain",
2622          I changed to create new domains automatically even if current domain is
2623          enforcing mode.
2624    
2625        @ Replace "task.state" with "auto_domain_transition".
2626    
2627          task.state is difficult to use. Thus, I replaced task.state with
2628          auto_domain_transition which performs domain transition instead of
2629          changing current process's state variables.
2630    
2631          If domain transition failed, current process will be killed by SIGKILL
2632          signal. This should not happen in normal circumstances, for you know the
2633          domain to transit to and thereby you will define the domain beforehand
2634          when you use "auto_domain_transition" keyword.
2635    
2636        @ Replace "allow_transit" with "task manual_domain_transition".
2637    
2638          I changed this directive to specify absolute domainname (e.g.
2639          "<kernel> /usr/sbin/httpd //app=cgi1\040id=10000") rather than virtual
2640          pathname (e.g. "//app=cgi1\040id=10000") because you know the domain to
2641          transit to and thereby you will define the domain beforehand when you use
2642          "task manual_domain_transition" directive.
2643    
2644          This change allows you to jump to arbitrary domain.
2645    
2646        @ Add "task auto_domain_transition".
2647    
2648          This is similar to "task manual_domain_transition", but is automatically
2649          applied whenever conditions are met. For example,
2650    
2651            task auto_domain_transition <kernel> //./non-root task.uid!=0
2652    
2653          will automatically jump to "<kernel> //./non-root" domain if current
2654          process's UID is not 0 whereas
2655    
2656            task manual_domain_transition <kernel> //./non-root task.uid!=0
2657    
2658          will jump to "<kernel> //./non-root" domain if current process's UID is
2659          not 0 and current process wrote "<kernel> //./non-root" + '\n' to
2660          /proc/ccs/.transition interface.
2661    
2662          If domain transition failed, current process will be killed by SIGKILL
2663          signal.
2664    
2665      @ Optimize for object's size.      @ Optimize for object's size.
2666    
2667        I merged similar code in order to reduce object's filesize.        I merged similar code in order to reduce object's filesize.
2668    
2669    Version 1.8.0 2010/XX/XX   Feature enhancement release.

Legend:
Removed from v.3869  
changed lines
  Added in v.4088

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