Rafal Krypa [Thu, 14 Dec 2017 14:20:18 +0000 (15:20 +0100)]
Monitor mount/umount events on the system and update app mount namespaces
It is possible that file system path that has access guarded by a privilege
is not available when application starts, but becomes available later.
The reason for this is because a parent directory containing such path
may be a mount point that is not yet mounted at the time when application
starts.
If the application doesn't hold privilege to the directory in question,
it should have a dummy, empty directory mounted over that path. But this
cannot be done properly when application starts and the privileged directory
is not yet available.
Later, while application is running, the parent mount point may be mounted.
This mount will be propagated to mount namespaces of all running applications.
Then the applications that do not hold the required privilege will be able
to access privileged directory in that mount points, because dummy bind
mount wasn't done.
This patch implements a watcher keeping track of mount/unmount events in
the system. When such event is detected, mount namespaces of all running
applications will be reevaluated. If a privileged directory shows up in
mount namespace of an already running application and the application doesn't
hold required privilege, the directory will be hidden from the app.
Change-Id: Idb7044d764a620b64666bfa5e6b1724b504866f0
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Yunjin Lee [Wed, 3 Jan 2018 01:49:45 +0000 (10:49 +0900)]
Add core privilege: devicecertificate
- Refers to: https://review.tizen.org/gerrit/#/c/165621/
Change-Id: I74518afab72d31acabde8b80f9c31f6cfdbff095
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
Rafal Krypa [Tue, 19 Dec 2017 09:00:15 +0000 (10:00 +0100)]
client: do not add application process to hardcoded groups
Initial implementation of privilege enforcement with mount namespaces
included client code that added all application processes to hardcoded
set of groups: priv_externalstorage and priv_mediastorage.
This is wrong. Enforcement of privileges by either groups or mount
namespaces is to be configured in respectively privilege-group.list and
privilege-mount.list. Application process should be added to a group
if and only if it holds a privilege that is configured to be enforced
with a group. Similarly proper mounts and umounts will be done in application
mount namespace based on privilege status.
There is no need to hardcode groups. If a privilege is enforced with mount
namespace, it should not require additional group assignment. If it used
to be enforced with a group, but it has been switched to enforcement with
mount, filesystem permissions need to be adjusted, not security-manager code.
Privileges mediastorage and external storage are now enforced with bind
mounts. They are being removed from privilege-group mapping - combining
these two mechanisms is undesired.
Change-Id: I41204daa24329e8e9648b3ecb4e53d87c763b35b
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Rafal Krypa [Thu, 14 Dec 2017 15:54:39 +0000 (16:54 +0100)]
During application start, privileged directory enforced by bind mount may be missing
When trying to prepare mount namespace for application process, check whether a
directory that requires privilege and should be bind mounted is missing. In such
case ignore it and continue preparation.
Change-Id: I08d5295440bb018d93295cb2817c643211b88c5f
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Rafal Krypa [Thu, 14 Dec 2017 16:21:27 +0000 (17:21 +0100)]
Identify apps by Smack label instead of appName in NSMountLogic
NSMountLogic and Worker code used to take appName as application identifier
and then needed to translate it to Smack label. It was very awkward, because
such conversion needs access to PrivilegeDB in order to check hybrid status.
Now Smack label is being passed to that code right away, eliminating the
need for fetching Smack label.
Change-Id: I62c137ad08a5d7d271aa8d6adcb25e8bb56bdfe1
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Rafal Krypa [Thu, 14 Dec 2017 15:35:11 +0000 (16:35 +0100)]
Fix NSMountLogic in case when user has no running applications
In some cases directory /run/user/UID/ may exist, but /run/user/UID/apps/
might not. Such case was incorrectly handled in NSMountLogic::readFiles(),
it caused an exception to be thrown.
Fixed implementation first checks whether directory exists before trying
to read it.
Change-Id: Ibae0415eac066672d50cf184d82aa3f53c7efdf0
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Rafal Krypa [Wed, 20 Dec 2017 08:10:19 +0000 (09:10 +0100)]
Fix MountNS::isPathBound()
Previous implementation of the method checking whether given source path
is bind-mounted on a given destination path was unreliable.
By careless pattern matching in /proc/self/mountinfo it could easily
return false positive (determine that bind mount exists when it doesn't)
or false negative (say that bind mount doesn't exist when it does).
New implementation relies on calling lstat() on both paths and comparing
results. If both paths have the same ID of containing device and the same
inode number, they are considered to be bind mounted.
Change-Id: I63386dd44f2c1d114705b93a76993a9bc812a90d
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
jin-gyu.kim [Thu, 7 Dec 2017 02:09:09 +0000 (11:09 +0900)]
Release 1.2.30
* Fix bugs found in the code by static analysis
* Fix the bug for clearing SharedRO Smack rules
* Fix the potential memory leak.
* security-manager-cmd: add new option "manage-privilege" for policy manipulation
* Add hybrid flag setting to security-manager-cmd
* Add ConfigFile class for run-time reading and parsing of config files
* Allow privilege enforcement with bind mounts to be configured
* Don't enable mount namespace code when the config file is missing or empty
Change-Id: I848d24b8cbbaa3e557722d9a0665f9c3a984c7fb
Rafal Krypa [Thu, 30 Nov 2017 08:38:45 +0000 (09:38 +0100)]
Don't enable mount namespace code when the config file is missing or empty
Function isMountNamespaceEnabled will read the privilege-mount.list config
file and return false when reading of that file fails or when it doesn't
contain any proper configuration entries.
Change-Id: I20fabefde1523e204c02e5ab8eb8bbdd532a8b4f
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Rafal Krypa [Tue, 28 Nov 2017 12:01:38 +0000 (13:01 +0100)]
Allow privilege enforcement with bind mounts to be configured
Add configuration file describing which privileges are to be enforced
with bind mounts and how. New config privilege-mount.list now assigns
privileges to their mount points and specifies source directory to bind
mount.
Change-Id: I7e2fb7a483803d0a8877d142b8e1df7a37ae18e3
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Rafal Krypa [Tue, 28 Nov 2017 07:49:46 +0000 (08:49 +0100)]
Add ConfigFile class for run-time reading and parsing of config files
New code reads config file and splits it into lines to vector, with one
element per file line. Each line is represented as vector itself, with
one element per white space separated token.
Lines that are empty or start with '#' are ignored.
New code is now used for parsing Smack policy templates and privilege to
group mapping.
Change-Id: I009cf2a33f0233a170666cfe27fd7604fb7f4340
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
akoszewski [Mon, 11 Sep 2017 13:15:49 +0000 (15:15 +0200)]
Add hybrid flag setting to security-manager-cmd
Change-Id: Ifca5479d87ec44de856b0bda6625960e010e31ba
Dariusz Michaluk [Mon, 24 Jul 2017 11:07:21 +0000 (13:07 +0200)]
security-manager-cmd: add new option "manage-privilege" for policy manipulation
Allow/deny privilege for application and user.
Change-Id: I371549ed2aa06ba7b2deef8543c0eff712ed8bd0
jin-gyu.kim [Tue, 3 Jan 2017 04:42:08 +0000 (13:42 +0900)]
Fix the potential memory leak.
- Dynamic memory referenced by 'array' can be lost in error case.
Change-Id: Iea68a69be02dcddc74c560792502464a9a1e19bb
jin-gyu.kim [Fri, 12 May 2017 07:33:04 +0000 (16:33 +0900)]
Fix the bug for clearing SharedRO Smack rules
- Some SharedRO Smack rules were not cleared in uninstallation.
- Include the missing SharedRO rules in uninstalltion.
Change-Id: Ic63468a78002aca4d2c0b6c1bdc925faa5050580
Bartlomiej Grzelewski [Mon, 20 Nov 2017 16:35:53 +0000 (17:35 +0100)]
Fix bugs found in the code by static analysis
Change-Id: I662d10db09931d6d3154dd263f6e6aaaa2fbf0b4
Tomasz Swierczek [Fri, 17 Nov 2017 09:03:52 +0000 (10:03 +0100)]
Release 1.2.29
* Adding privilege group priv_tee_client.
* Include empty rules.merged file in the package
Change-Id: I9c58f5c82f0d9e95e5805f3ee95500cd94e7c9c3
r.tyminski [Thu, 9 Nov 2017 15:16:47 +0000 (16:16 +0100)]
Adding privilege group priv_tee_client.
Adding priv_tee_client group for http://tizen.org/privilege/tee.client
Change-Id: I40dbdce238fe2be4640e0e18339178303ddcbe78
Rafal Krypa [Wed, 8 Nov 2017 15:11:35 +0000 (16:11 +0100)]
Include empty rules.merged file in the package
This is to fix startup of security-manager-rules-loader.service systemd
unit in case when no applications are registered in security-manager.
This is a rare scenario, that wasn't considered until now, because there
were always some preloaded applications on snapshot images. But IoT images
are actually built with no preloaded applications, triggering the bug.
Empty file with aggregated Smack rules is provided to handle such case.
In case of package upgrade, existing file will not be overwritten thanks
to %config(noreplace) directive.
Change-Id: I1743672547abcdd42f520b34eba45c67402b37b1
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
jin-gyu.kim [Fri, 3 Nov 2017 08:00:18 +0000 (17:00 +0900)]
Release 1.2.28
* Add support for external storage directories
* When preparation of database connection fails, indicate this with a file fleg
* Fix security-manager package installation/update
* Remove duplicated -fPIC flag
* Fix database script
* Add test to check TizenVersion update in database.
Change-Id: I7f0f1f9c8d70f6439a13c90b860c4497fb2bd48b
Zofia Abramowska [Fri, 13 Oct 2017 10:46:07 +0000 (12:46 +0200)]
Add support for external storage directories
Applications can be also installed on external storages.
Security-manager has to accept such paths during application
installation. This commit adds such support for local and
global apps.
Change-Id: Idc6fa2930aa6fdcae9191844597da31ae13ecc20
Rafal Krypa [Fri, 13 Oct 2017 16:46:50 +0000 (18:46 +0200)]
When preparation of database connection fails, indicate this with a file fleg
A special file flag will be created by security-manager if it fails to
open its database or fails to initialize prepared statements.
This would indicate that database is either missing or broken. In such case
an empty file will be created at TZ_SYS_DB/.security-manager.db-broken
Change-Id: I6461b71134d6ce706d4295851a45840b3cf0be39
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Dariusz Michaluk [Thu, 7 Sep 2017 14:18:18 +0000 (16:18 +0200)]
Fix security-manager package installation/update
Change-Id: I117f2694ab042a05d6d5f05e3c79ee4fcc0aca9f
Dariusz Michaluk [Thu, 17 Aug 2017 12:28:18 +0000 (14:28 +0200)]
Remove duplicated -fPIC flag
Change-Id: I1ef9791b0a283e497b33b2508926673a390dff89
Bartlomiej Grzelewski [Tue, 24 Oct 2017 09:02:00 +0000 (11:02 +0200)]
Fix database script
Fix update of Tizen Version during application installation.
Change-Id: I17db2e6948aefcf625c9db3d2595a5667a74c054
Bartlomiej Grzelewski [Fri, 25 Aug 2017 12:26:38 +0000 (14:26 +0200)]
Add test to check TizenVersion update in database.
Change-Id: I8271b61cd1a40eb87edce474df83d9157f9e7031
jin-gyu.kim [Wed, 18 Oct 2017 11:12:11 +0000 (20:12 +0900)]
Release 1.2.27
* Prepare app_inst_req for handling multiple app_ids at once
* Add new API for installing pkg_id with multiple app_ids at once
* Add new functions to filesystem operations wrapper
* Add mount namespace operations wrapper
* Add IPC channel implementation
* Prepare app to launch in mount namespace
* Modify app launched in mount namespace
* Gotta catch 'em all (TizenPlatformConfig::Exception)
* Fix: Check if file exist before umount is made
Change-Id: I896cbafa175b134634a762dd55d0182ba0e570b7
Dariusz Michaluk [Wed, 18 Oct 2017 08:13:31 +0000 (10:13 +0200)]
Fix: Check if file exist before umount is made
Change-Id: I03aaa60dd23021fd19d716ccf995a0ff737f108c
Krzysztof Jackiewicz [Fri, 29 Sep 2017 10:56:03 +0000 (12:56 +0200)]
Gotta catch 'em all (TizenPlatformConfig::Exception)
There are still several places in code where TizenPlatformConfig::Exception is
thrown and unhandled. Missing catches added. Code refactored to avoid throwing
exceptions during global data initialization.
Change-Id: I6ae7bda10152c33fff9fcaa6c98b23222a1aeb81
Dariusz Michaluk [Mon, 2 Oct 2017 13:14:48 +0000 (15:14 +0200)]
Modify app launched in mount namespace
This commit adds worker that will be able to manage with mount namespace.
If mount namespace is not supported, security-manager will run without worker,
otherwise worker will be communicated with security-manager through IPC channel.
If app privilege status changes, worker will allow/deny access to filesystem directory
associated with this privilege.
Change-Id: I056cd752c228335c7b67a607bddc0934c7a79ddd
Dariusz Michaluk [Mon, 2 Oct 2017 12:26:19 +0000 (14:26 +0200)]
Prepare app to launch in mount namespace
This commit changes security_manager_prepare_app() behaviour.
The new functionality requires CAP_SYS_ADMIN capability added to the calling process.
Changes include:
- runtime detection of namespace support (check access to "/proc/self/ns/mnt"
which exists in kernel 3.8+ only),
- if mount namespace is not supported, app launch in the old way,
privileges are handled by groups,
- if mount namespace support is detected, app launch in mount namespace,
some privileges are handled in the new way,
- these privileges are:
a) http://tizen.org/privilege/externalstorage
(mapped to /opt/media filesystem directory)
b) http://tizen.org/privilege/mediastorage
(mapped to /opt/usr/media filesystem directory)
- if app privilege status is set to deny, the above directory
is bind mounted to dummy directory (no access to filesystem)
Change-Id: Ic41ea9eb48c369934bcafe406aa1b4207f67523d
Dariusz Michaluk [Mon, 2 Oct 2017 13:04:08 +0000 (15:04 +0200)]
Add IPC channel implementation
Change-Id: I18a7de2933e3a3543dca6c738c0cb9a6dcc74eb1
Dariusz Michaluk [Mon, 2 Oct 2017 11:59:06 +0000 (13:59 +0200)]
Add mount namespace operations wrapper
This commit adds:
- mount namespace helper functions,
- privilege to filesystem paths mapping,
- application to mount namespace mapping.
Change-Id: I572b316297c7512455829305674fd1be2ea07656
Dariusz Michaluk [Mon, 2 Oct 2017 11:08:12 +0000 (13:08 +0200)]
Add new functions to filesystem operations wrapper
This commit adds:
- create/remove directory/files functions,
- get text file contents function,
- error handling improvement,
- function names convention.
Change-Id: I7861f26d14cb1e61af990881044eaea047b3f345
Rafal Krypa [Tue, 26 Sep 2017 15:13:02 +0000 (17:13 +0200)]
Add new API for installing pkg_id with multiple app_ids at once
New client function security_manager_app_inst_req_next() enables installer
to add information about multiple applications. Each application in
request has its own app_id, privileges and app-defined privileges.
All other parameters set on the installation request are shared.
Sample usage of the new API (simplified, no error checking):
security_manager_app_inst_req_new(&p_req);
/* Per-package attributes */
security_manager_app_inst_req_set_pkg_id(p_req, pkgId);
/* Per-app attributes */
security_manager_app_inst_req_set_app_id(p_req, appId1);
security_manager_app_inst_req_add_privilege(p_req, appId1_priv1);
security_manager_app_inst_req_next(p_req);
security_manager_app_inst_req_set_app_id(p_req, appId2);
security_manager_app_inst_req_add_privilege(p_req, appId2_priv1);
security_manager_app_install(p_req);
security_manager_app_inst_req_free(p_req);
Change-Id: Ia1a42071bcf7356f17622c1d110778e803d3f39a
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Rafal Krypa [Wed, 20 Sep 2017 10:19:49 +0000 (12:19 +0200)]
Prepare app_inst_req for handling multiple app_ids at once
Application install and uninstall requests will enable support for
handling multiple app_ids from single package in one shot.
The app_inst_req structure is modified to include an array of application
parameters, i.e.:
- app_id
- privileges
- app defined privileges
To make use of this feature, a new API will be added in next commits.
For now the modified request data structure will serve the existing API,
holding only single element in array of app parameters.
Change-Id: If961ad3625f9397358487021982f07886cee1e28
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Rafal Krypa [Thu, 21 Sep 2017 13:19:23 +0000 (15:19 +0200)]
Fix coding style in security-manager-cmd.cpp
Change-Id: Iedfee86a382b45c50f8f3717a9e187da09413657
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Yunjin Lee [Thu, 28 Sep 2017 07:29:42 +0000 (16:29 +0900)]
Release 1.2.26
* Add core privilege: peripheralio
* Remove core privilege: d2d.datasharing
* Remove redundant file info from SM dlog logs
Change-Id: I0ba6e51ffa1d5080a8daf211b503bab5aaa36b00
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
Yunjin Lee [Thu, 28 Sep 2017 07:20:37 +0000 (16:20 +0900)]
Add core privilege: peripheralio
- privilege required to communicate with peripherals
Change-Id: If2f2e08fead8fad34525b56b06b3a6eca0e570d7
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
Yunjin Lee [Tue, 26 Sep 2017 10:20:32 +0000 (19:20 +0900)]
Remove core privilege: d2d.datasharing
Change-Id: I99815d92c5cef15ce012323e2f1e5c66b93e8b10
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
Pawel Kowalski [Wed, 13 Sep 2017 06:23:59 +0000 (08:23 +0200)]
Remove redundant file info from SM dlog logs
Security-manager uses code adapted from DPL for logging. Currently
a dlog backed is utilized. Both DPL and dlog include information
like file name, line and function from where the log was triggered.
It lead to redundant file info in logs.
In order to remove this redundant information, dlog macro SLOG was
replaced with the macro called print_system_log. The print_system_log
macro does not add its own set of information (it displays only
a message prepared by the developer). The print_system_log macro is
labeled as an 'internal' in dlog-internal.h header file but in this
case 'internal' means that macro should not be used by applications
but may be used by system/platform deamons.
Also the FormatMessage was modified in order to display a log message
in a dlog style.
Change-Id: I54b9ebe6240a407609512b4906257ec655d0d8a3
Zofia Abramowska [Fri, 15 Sep 2017 15:48:07 +0000 (17:48 +0200)]
Release 1.2.25
Fix SVACE defects:
* Redo C-style var args methods
* User dynamic cast for base-to-derived conversion
Change-Id: Ic852b4751387f1590d0103c20a5d2214fdfaf737
Zofia Abramowska [Fri, 15 Sep 2017 15:48:07 +0000 (17:48 +0200)]
Redo C-style var args methods
Change-Id: I28e6ca056a094739b60e17cdad54ef260475e3c3
Zofia Abramowska [Fri, 15 Sep 2017 15:42:06 +0000 (17:42 +0200)]
User dynamic cast for base-to-derived conversion
Change-Id: I4f3f9c4062197941cb23fa5c40c883c6d26d877f
keeho.yang [Wed, 9 Aug 2017 10:44:18 +0000 (19:44 +0900)]
Release: 1.2.24
*Fix license-manager rpm install/update/erase
*Enforce PIE through main CMakeLists
Change-Id: I5c8adad9bd4901b2647b3754733f0e81b6beada4
Igor Kotrasinski [Tue, 25 Jul 2017 07:37:36 +0000 (09:37 +0200)]
Enforce PIE through main CMakeLists
Fixes security-manager-cmd not building as PIE and removes hardcoded
-fPIE and -pie flags.
Change-Id: I6be0ef5864066b0be83e75671e8f3b124610b88b
Signed-off-by: Igor Kotrasinski <i.kotrasinsk@partner.samsung.com>
Dariusz Michaluk [Fri, 4 Aug 2017 14:23:40 +0000 (16:23 +0200)]
Fix license-manager rpm install/update/erase
Change-Id: I81358665747f71738e3a23f8a1d27f084ed3bf09
jin-gyu.kim [Mon, 7 Aug 2017 06:17:34 +0000 (15:17 +0900)]
Release 1.2.23
* Add core privilege: gesturegrab, gestureactivation
* Fix bugs reported by C++Test and SVACE
* Change coding style in socket-manager.cpp
* Fix database upgrading from v10 to v11
* Fix buffer overflow in exception.h
* Replace getgrent with getgrnam_r in security_manager_groups_get
* Fix race condition in reading credentials
Change-Id: I6e662155ae04b63b0cb3a6bfba3f3b1a03a666cb
Yunjin Lee [Fri, 28 Jul 2017 05:31:33 +0000 (14:31 +0900)]
Add core privilege: gesturegrab, gestureactivation
- gesturegrab privilege allows app to grab touch gesture
- gestureactivation privilege allows app to activate/deactivate the grabbing
Change-Id: Ic3897a26405962bc74ed6add54f3f0d33525e492
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
Bartlomiej Grzelewski [Thu, 20 Jul 2017 12:56:43 +0000 (14:56 +0200)]
Change coding style in socket-manager.cpp
Change-Id: I15803fd3548a19d328cef57426762a2052ca9b1f
Bartlomiej Grzelewski [Wed, 19 Jul 2017 12:16:09 +0000 (14:16 +0200)]
Fix bugs reported by C++Test and SVACE
Change-Id: Id8c2ee63159b6df768a9e818bcb929c4a70d57b0
Dariusz Michaluk [Wed, 2 Aug 2017 15:10:12 +0000 (17:10 +0200)]
Fix database upgrading from v10 to v11
Change-Id: I54778accfcc2479dd899285c66ba4c3a95329b10
Bartlomiej Grzelewski [Mon, 17 Jul 2017 17:04:36 +0000 (19:04 +0200)]
Fix buffer overflow in exception.h
Change-Id: Idaf6e6c8afa4936370e97c5870dfb5b7b5149e24
Krzysztof Jackiewicz [Wed, 2 Aug 2017 07:25:28 +0000 (09:25 +0200)]
Replace getgrent with getgrnam_r in security_manager_groups_get
Group2Gid constructor used getgrent which is not thread-safe. The class is used
in security-manager's server which is single threaded and in a nss plugin. The
nss plugin is called in the same context as initgroups() and as such can be
called from concurrent threads simultaneously although it makes no sense. Also
initgroups() manual does not mention anything about thread-safety.
It's impossible to get groups mapping thread-safely using getgrent_r if we are
not controlling all of the threads (which is the case in SM's client library).
Instead the getgrnam_r() was used.
Change-Id: I753f88ee0f85bb28c0907ae590e522a075873ffb
Bartlomiej Grzelewski [Mon, 24 Jul 2017 12:00:29 +0000 (14:00 +0200)]
Fix race condition in reading credentials
Race condition scenario:
1. Client connects to service and gets descriptor D.
2. Client sends request R.
3. Client closes connection.
4. Second client connects to service and gets descriptor D
5. Service thread starts to process request R and calls
getCredentialsFromSocket. Function returns credentials of
second client.
Change-Id: Id42d58b90147157df9772dd856d4769b8698434b
jin-gyu.kim [Thu, 20 Jul 2017 05:22:57 +0000 (14:22 +0900)]
Release 1.2.22
* Fix segfault in nss plugin
Change-Id: I49a37725b3297a4bbd62b944f071bcba9a681c90
Krzysztof Jackiewicz [Wed, 19 Jul 2017 09:34:17 +0000 (11:34 +0200)]
Fix segfault in nss plugin
- Initialize groups pointer to NULL
- Delay wrapping with unique_ptr until we are sure that function returning
groups succeeded
- Treat empty group list as a correct result
Change-Id: I9cf7493d819f3c1afdc2a378bc52f24d0f3f53b9
jin-gyu.kim [Tue, 11 Jul 2017 02:30:22 +0000 (11:30 +0900)]
Release 1.2.21
* Allow application to fetch its own policy
* Optimize group processing performance
* Add core privilege: blocknumber.read, blocknumber.write
Change-Id: I2320777e489a094eb23e87a1747e5a0b6f0200a6
Zofia Abramowska [Mon, 26 Jun 2017 11:42:35 +0000 (13:42 +0200)]
Allow application to fetch its own policy
Application requires checking its privacy privilege
status to decide wether invoking askuser popup is
required. This change allows apps to fetch its own
policy (for the same app_id and user) without any
additional privilege.
Change-Id: Ie351f002107e58ad90b71f44ec25026469e38cb5
Rafal Krypa [Fri, 7 Jul 2017 16:16:16 +0000 (18:16 +0200)]
Optimize group processing performance
- Map group names to gids during server startup.
- Return gids instead of group names to client.
- Modify API used by NSS plugin to return gids and update the plugin.
- Cache privilege->gid mapping and privilege related gids on server side.
Change-Id: I30480565495e9591d893279f2df622fa21b6e1b9
Yunjin Lee [Wed, 5 Jul 2017 08:45:31 +0000 (17:45 +0900)]
Add core privilege: blocknumber.read, blocknumber.write
Change-Id: Ibf991198a1a3a401a0b3e003a485e3ae9ee5dbdd
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
Piotr Sawicki [Fri, 30 Jun 2017 10:02:34 +0000 (12:02 +0200)]
Release 1.2.20
* Remove dependency to Nether
* Add missing else keyword
* Fix memory allocation loop
* Apply -fPIE and -pie flag to license-manager
* Verify if certificate CN entry is equal to pkgId.
* Refactor error handling on app_defined_privilege/client_license table
* Change license-manager-agent uid/gid to security_fw
* Accept null as appId during license extraction
* New schema of database
* Apply coding rules
* Implement certificate verification inside agent
* Improve implementation of appdefined privilege API
* Remove outdated 'CREATE INDEX + performance tests required' TODO
* security-manager-cmd: add new option manager-apps for app install/uninstall
* Support security_manager_app_uninstall calling in off-line mode
Change-Id: I7894668ea52634b226b5c0d699661a2be33f9707
jin-gyu.kim [Thu, 29 Jun 2017 04:47:44 +0000 (13:47 +0900)]
Remove dependency to Nether
Security-manager has the dependency to Nether to install it.
Nether can be installed independently. [TRE-1330]
Therefore, remove the dependency.
Change-Id: Ibb3b2f18aad6be934737238f9412189e59d23f01
Bartlomiej Grzelewski [Mon, 12 Jun 2017 10:34:53 +0000 (12:34 +0200)]
Add missing else keyword
Change-Id: I092cf2c807d6a1445de4d33b308717d8f8ee87e0
Bartlomiej Grzelewski [Mon, 12 Jun 2017 10:14:19 +0000 (12:14 +0200)]
Fix memory allocation loop
Old implementation always exit loop after buffer resize without
any try to input data once again.
Change-Id: I6307748a6744e3d7677be140943220d4f1974aa7
Dariusz Michaluk [Tue, 20 Jun 2017 10:50:30 +0000 (12:50 +0200)]
Apply -fPIE and -pie flag to license-manager
Change-Id: I7bf99eab5c89f2859ec62667842aa3a65482b8c2
Dariusz Michaluk [Fri, 16 Jun 2017 11:54:39 +0000 (13:54 +0200)]
Verify if certificate CN entry is equal to pkgId.
Change-Id: I2f5465f4fd57e72956ae0c75146402d3c3d2ebe6
Dariusz Michaluk [Mon, 12 Jun 2017 14:54:46 +0000 (16:54 +0200)]
Refactor error handling on app_defined_privilege/client_license table
Change-Id: I7fc95510376b0f5e6136fad4b5914ec14f5e884e
Dariusz Michaluk [Mon, 12 Jun 2017 12:36:04 +0000 (14:36 +0200)]
Change license-manager-agent uid/gid to security_fw
Change-Id: Ic833a5406f88baf37717732346a79b7559ca6d22
Bartlomiej Grzelewski [Thu, 1 Jun 2017 10:12:09 +0000 (12:12 +0200)]
Accept null as appId during license extraction
In non-hybrid application appId is not placed
inside smack label. Non-hybrid application could
not be idenitified. We can only retrieve its pkgId.
Change-Id: I52d35fab45dbf494dfc8a2de84c38d63d29b781d
Bartlomiej Grzelewski [Mon, 29 May 2017 15:43:36 +0000 (17:43 +0200)]
New schema of database
non-hybrid application are identified with pkgId only.
New schema will allow to identify privilege license by
using pkgId instead appId.
Changes are applied to:
* app_defined_privilege_view
* client_license_view
Change-Id: Iae343b7fabb32a5a49957c362935eacc915390eb
Bartlomiej Grzelewski [Mon, 5 Jun 2017 15:46:52 +0000 (17:46 +0200)]
Apply coding rules
Change-Id: Id8d0070851bd03ac94a86c8148bfe0dd35e87a58
Bartlomiej Grzelewski [Wed, 17 May 2017 16:23:17 +0000 (18:23 +0200)]
Implement certificate verification inside agent
* Read certificate in PEM and DER format
Change-Id: Iccfa3778a8e8c3d07a258622c4985fea67a6095a
Bartlomiej Grzelewski [Fri, 19 May 2017 13:22:32 +0000 (15:22 +0200)]
Improve implementation of appdefined privilege API
* Remove deprecated attribute from security-manager API. Depracated
attribute may cause build break in project compiled with -Werror flag.
* Add validation of license parameter in
security_manager_app_inst_req_add_client_privilege
security_manager_app_inst_req_add_app_defined_privilege
* Change function description in API
Change-Id: I03abb03a8d47a61d25cfe0ef91c14c0ddb9581dd
Dariusz Michaluk [Fri, 19 May 2017 11:53:19 +0000 (13:53 +0200)]
Remove outdated 'CREATE INDEX + performance tests required' TODO
Although indexes are intended to enhance a database's performance,
they should not be used on small tables.
The tests have shown that there is no speed up on tables with 3k rows.
Change-Id: Id6ac9e6b47ef8978dacbcd1c2b71e8e6b9be02e2
Rafal Krypa [Wed, 24 May 2017 09:01:33 +0000 (11:01 +0200)]
security-manager-cmd: add new option "manager-apps" for app install/uninstall
Cmd previously supported only app installation (--install), but not removal.
The new option --manage-apps, in line with already existing --manage-users
will support both app installation and removal.
Old --install is kept for now for backward compatibility.
Change-Id: I20e589e8ff40b1d49a6409ee71bd9351e6140b69
Rafal Krypa [Wed, 24 May 2017 09:58:28 +0000 (11:58 +0200)]
Support security_manager_app_uninstall calling in off-line mode
Change-Id: If3d2b9ee4d7e9dbfc0a5555743b542161a52d4ba
jin-gyu.kim [Fri, 19 May 2017 09:15:11 +0000 (18:15 +0900)]
Release 1.2.19
Merge remote-tracking branch 'origin/appdefined' into tizen
Add core privilege: tee.client
Add core privilege: zigbee, zigbee.admin
Change-Id: I67e6c89fe707ff2fa39d6f2525d88ea7d7c8e68e
Yunjin Lee [Fri, 19 May 2017 08:01:06 +0000 (17:01 +0900)]
Add core privilege: zigbee, zigbee.admin
Change-Id: I4dd5f172a5ca021a17949aa564877eb7c50883b0
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
Yunjin Lee [Fri, 19 May 2017 04:22:34 +0000 (13:22 +0900)]
Add core privilege: tee.client
Change-Id: Ib06e59ba9bc0c15d510820c18a171eb73b6a9972
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
Bartlomiej Grzelewski [Wed, 17 May 2017 09:46:32 +0000 (11:46 +0200)]
Merge remote-tracking branch 'origin/appdefined' into tizen
Change-Id: Ie9e886dd62ef73830cab714aa9fe32f35d2e018a
Dariusz Michaluk [Mon, 15 May 2017 12:50:18 +0000 (14:50 +0200)]
Prevent from collision with system privileges
Change-Id: If307f2b4609d5af45126cdd1aac2e577d8ad5cac
Bartlomiej Grzelewski [Fri, 12 May 2017 17:18:37 +0000 (19:18 +0200)]
Prevent from saving empty license
Change-Id: Ib89bf970c56d5f337a680334c432a1ec660e77bf
Bartlomiej Grzelewski [Fri, 12 May 2017 15:46:34 +0000 (17:46 +0200)]
Extend privilegeDb api
The function will not directly inform caller if row was found in
database. In previous implmentation functions may return empty
string if row was not found in database. It could be translated as row
contained empty string or no row was found.
Change-Id: Id44a5337e2ceb53b35be914962e442e4b5aeec0f
Bartlomiej Grzelewski [Fri, 12 May 2017 16:58:00 +0000 (18:58 +0200)]
Merge remote-tracking branch 'origin/tizen' into appdefined
Change-Id: I1d8894b37ebb11aecb9a040548bfcc754f25587d
Dariusz Michaluk [Wed, 10 May 2017 14:12:44 +0000 (16:12 +0200)]
Block the possibility of privilege redefinition
Change-Id: I897915c799ab03ad93d8f9f191ecbd96da885f60
Dariusz Michaluk [Wed, 10 May 2017 09:42:46 +0000 (11:42 +0200)]
Tests for client license in db
Change-Id: I8b19fa8d40fc7e34820ee6b758e46a546a964ebc
Bartlomiej Grzelewski [Thu, 11 May 2017 17:50:09 +0000 (19:50 +0200)]
Add serialization of tuple
Change-Id: I9f6f2855a6073b8493d531e381f880d70ab6c3cb
Bartlomiej Grzelewski [Wed, 26 Apr 2017 13:38:55 +0000 (15:38 +0200)]
Prepare database to store license
Security-manager does not use license directly. Licenses
will be used by license-manager. Security manager just store
information about it's location and information about
dependencies between licenses and app defined privileges.
In current api both provider and client may store license.
License stored by provider should be treated more as a key
that will be used to verify signature stored as client license.
Change-Id: If54724aa7daf49be727aab67ac614047f035a05a
Bartlomiej Grzelewski [Thu, 11 May 2017 14:26:03 +0000 (16:26 +0200)]
Prepare API to support licensed privileges
Change-Id: I870ff76dc9fc8e5a2e53070a9deeab9ecba416f4
Tomasz Swierczek [Thu, 27 Apr 2017 10:02:32 +0000 (12:02 +0200)]
Release 1.2.18
* Adjust UT case T520_add_application_two_tizen_versions_to_same_package
* Adjust tests to boost 1.62
* Fix issues detected by SVACE
* Revert of changes related to privacy popups
* Do not show toast fail launch popup for white list app.
* Handle HW key input case from askuser popup.
* Adapt requirement names for askuser-notification to new naming
* Migrate existing application policy to use new ask-user policies
* Implement security_manager_prepare_app_privacy
* Add new API for handling privacy privileges during application launch
* Replace usage of Ask User plugin with Privacy Deny Plugin
* Change labelPaths logic for FOTA
Change-Id: I1ebe131cd04d9d5327e4c39a76d2bf4f5fe3f219
Radoslaw Bartosiak [Tue, 28 Mar 2017 14:12:16 +0000 (16:12 +0200)]
Adjust UT case T520_add_application_two_tizen_versions_to_same_package
Adapt to a new change in security-manager that allows platform version
for an app to be changed during app upgrade, which was
introduced in commit:
942b8ffe8ddc07e4037abac2f69f3460ade8585d.
Change-Id: Ice783a7f5fa5e32df8fdcc3fcbabbab7717fc777
Signed-off-by: Radoslaw Bartosiak <r.bartosiak@samsung.com>
Zofia Abramowska [Mon, 24 Apr 2017 10:35:09 +0000 (12:35 +0200)]
Adjust tests to boost 1.62
* Fix missing file
* Fix missing virtual methods
* Fix missing semicolons after macros
* Support boost version before 1.59
* Fix custom types printing
* Still support boost before 1.59 version
Change-Id: I872dff727aef3f4253e4995e36654ad93d1b979d
Piotr Sawicki [Thu, 6 Apr 2017 06:38:18 +0000 (08:38 +0200)]
Fix issues detected by SVACE
- Catch boost exceptions thrown by boost's program options parser.
- Fix a potential memory leak in CynaraAdmin::fetchCynaraPolicyDescriptions().
- Add and handle an additional exception type - UnlockFailed.
Change-Id: I22616e9a24ebe83a20ce5c4237f7fa9fc060c30c
Bartlomiej Grzelewski [Mon, 24 Apr 2017 13:39:13 +0000 (15:39 +0200)]
Merge remote-tracking branch 'origin/tizen' into appdefined
Change-Id: I5b808b2fc5d0dfa3c8eb45af2cd38ce8deeb0bad
Radoslaw Bartosiak [Wed, 19 Apr 2017 07:54:02 +0000 (09:54 +0200)]
Revert of changes related to privacy popups
1. Revert "Replace usage of Ask User plugin with Privacy Deny Plugin"
This reverts commit
da9a01bddc86d7ff022e03865846ddf1a104859e.
2. Revert "Add new API for handling privacy privileges during application launch"
This reverts commit
a260bb3bd0450c460c897790f7e02d41a143f7d5.
3. Revert "Implement security_manager_prepare_app_privacy"
This reverts commit
1bf8c3adf21b50a6c24f7c0246884cf389941c93.
4. Revert "Migrate existing application policy to use new ask-user policies"
This reverts commit
d48e161b135a0efa523846376c0e58a3cd83903e.
5. Revert "Adapt requirement names for askuser-notification to new naming"
This reverts commit
8960cd5a6d83be490d3ff0a29ca385fe937cae25.
6. Revert "Handle HW key input case from askuser popup."
This reverts commit
1c21b22455b2bce914e88b248a62da6f6903f250.
7 .Revert "Do not show toast fail launch popup for white list app."
This reverts commit
e87aca1aa591c561a0dadd5038c5811e50aecde6.
Change-Id: I66149a6e4d5cdbabe4ec673b5c936cd1ed717e1f
Signed-off-by: Radoslaw Bartosiak <r.bartosiak@samsung.com>
jin-gyu.kim [Tue, 4 Apr 2017 13:53:52 +0000 (22:53 +0900)]
Do not show toast fail launch popup for white list app.
- Toast fail launch popup is only allowed to non-white list app.
Change-Id: I606da84f4b65cebb6afd1f896d0b548ceaa62b47
jin-gyu.kim [Tue, 4 Apr 2017 11:03:25 +0000 (20:03 +0900)]
Handle HW key input case from askuser popup.
In case of HW key input, app should not be launched always.
Also, updating policy as DENY only for non-white list app.
Change-Id: I2956bc3b982a2ec68d9514e766366621530cfa27
Rafal Krypa [Mon, 3 Apr 2017 20:03:54 +0000 (22:03 +0200)]
Adapt requirement names for askuser-notification to new naming
- privacy-denied-plugins => askuser-plugins
- askuser-notification-ipc => askuser-notification
Change-Id: Ic735c1aaed9d21889032513dac5cb1585997cb5e
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
Rafal Krypa [Fri, 31 Mar 2017 15:40:38 +0000 (17:40 +0200)]
Migrate existing application policy to use new ask-user policies
Migrate privacy manager policy:
- ask user => ASK_USER_LEGACY
- deny => PRIVACY_DENY
Change-Id: Icfeea3324c8d823d8a0065198b9a8c9329528be8
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>