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

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 3961 by kumaneko, Tue Sep 7 05:07:31 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        @ Remove "if" and "; set" keyword.
2574    
2575          I removed need for specifying these keyword.
2576          You can simply specify like below.
2577    
2578            file read /etc/shadow task.uid=0
2579    
2580        @ Remove per-profile preference.
2581    
2582          I removed per profile preference in order to make code simpler.
2583    
2584      @ Allow controlling generation of access granted logs for per an entry      @ Allow controlling generation of access granted logs for per an entry
2585        basis.        basis.
2586    
2587        I added per-entry flag which controls generation of grant logs because        I added per-entry flag which controls generation of grant logs because
2588        Xen and KVM issues ioctl requests so frequently. For example,        Xen and KVM issues ioctl requests so frequently. For example,
2589    
2590          file ioctl /dev/null 0x5401 ; set audit=no          file ioctl /dev/null 0x5401 audit=no
2591    
2592        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 .
2593    
2594          file ioctl /dev/null 0x5401 ; set audit=yes          file ioctl /dev/null 0x5401 audit=yes
2595    
2596        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 .
2597    
2598          file ioctl /dev/null 0x5401          file ioctl /dev/null 0x5401
2599    
2600        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 .
2601    
2602        This flag is intended for frequently accessed resources like        This flag is intended for frequently accessed resources like
2603    
2604          file read /var/www/html/\{\*\}/\*.html ; set audit=no          file read /var/www/html/\{\*\}/\*.html audit=no
2605    
2606        .        .
2607    
2608        @ Automatically create domain by execve() even if enforcing mode.
2609    
2610          Until now, new domains are not created if the domain was not defined and
2611          current domain is enforcing mode ("CONFIG::file::execute=enforcing").
2612    
2613          To be able to restrict shell session without using "keep_domain",
2614          I changed to create new domains automatically even if current domain is
2615          enforcing mode.
2616    
2617        @ Replace "task.state" with "auto_domain_transition".
2618    
2619          task.state is difficult to use. Thus, I replaced task.state with
2620          auto_domain_transition which performs domain transition instead of
2621          changing current process's state variables.
2622    
2623          If domain transition failed, current process will be killed by SIGKILL
2624          signal. This should not happen in normal circumstances, for you know the
2625          domain to transit to and thereby you will define the domain beforehand
2626          when you use "auto_domain_transition" keyword.
2627    
2628        @ Replace "allow_transit" with "task manual_domain_transition".
2629    
2630          I changed this directive to specify absolute domainname (e.g.
2631          "<kernel> /usr/sbin/httpd //app=cgi1\040id=10000") rather than virtual
2632          pathname (e.g. "//app=cgi1\040id=10000") because you know the domain to
2633          transit to and thereby you will define the domain beforehand when you use
2634          "task manual_domain_transition" directive.
2635    
2636          This change allows you to jump to arbitrary domain.
2637    
2638        @ Add "task auto_domain_transition".
2639    
2640          This is similar to "task manual_domain_transition", but is automatically
2641          applied whenever conditions are met. For example,
2642    
2643            task auto_domain_transition <kernel> //./non-root task.uid!=0
2644    
2645          will automatically jump to "<kernel> //./non-root" domain if current
2646          process's UID is not 0 whereas
2647    
2648            task manual_domain_transition <kernel> //./non-root task.uid!=0
2649    
2650          will jump to "<kernel> //./non-root" domain if current process's UID is
2651          not 0 and current process wrote "<kernel> //./non-root" + '\n' to
2652          /proc/ccs/.transition interface.
2653    
2654          If domain transition failed, current process will be killed by SIGKILL
2655          signal.
2656    
2657      @ Optimize for object's size.      @ Optimize for object's size.
2658    
2659        I merged similar code in order to reduce object's filesize.        I merged similar code in order to reduce object's filesize.
2660    
2661    Version 1.8.0 2010/XX/XX   Feature enhancement release.

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

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