mirror of
https://gitlab.com/apparmor/apparmor
synced 2025-08-22 10:07:12 +00:00
Add curl profile
This commit is contained in:
parent
7a8a28d47a
commit
37a4b6cb81
44
profiles/apparmor.d/curl
Normal file
44
profiles/apparmor.d/curl
Normal file
@ -0,0 +1,44 @@
|
||||
#------------------------------------------------------------------
|
||||
# Copyright (C) 2025 Canonical Ltd.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of version 2 of the GNU General Public
|
||||
# License published by the Free Software Foundation.
|
||||
#------------------------------------------------------------------
|
||||
# vim: ft=apparmor
|
||||
|
||||
abi <abi/4.0>,
|
||||
|
||||
include <tunables/global>
|
||||
|
||||
profile curl /usr/bin/curl {
|
||||
include <abstractions/base>
|
||||
include <abstractions/nameservice>
|
||||
include <abstractions/private-files-strict>
|
||||
include <abstractions/ssl_certs>
|
||||
|
||||
@{exec_path} mr,
|
||||
|
||||
# allow reading configuration files from $HOME
|
||||
priority=1 file r @{HOME}/.curlrc,
|
||||
priority=1 file r @{HOME}/.config/curlrc,
|
||||
|
||||
# allow reading other configuration files/certs from $HOME
|
||||
# (see --config, --cacert options)
|
||||
file r @{HOME}/**,
|
||||
|
||||
# allow writing output to $HOME, /tmp (see -o option)
|
||||
file w @{HOME}/**,
|
||||
file w /tmp/**,
|
||||
|
||||
# allows UDP (for DNS), TCP (for http, https, etc), abstract Unix sockets, IPv4, IPv6
|
||||
network unix stream,
|
||||
network unix dgram,
|
||||
network inet stream,
|
||||
network inet dgram,
|
||||
network inet6 stream,
|
||||
network inet6 dgram,
|
||||
|
||||
# Site-specific additions and overrides. See local/README for details.
|
||||
include if exists <local/curl>
|
||||
}
|
14
tests/profiles/curl/task.yaml
Normal file
14
tests/profiles/curl/task.yaml
Normal file
@ -0,0 +1,14 @@
|
||||
summary: smoke test for the curl profile
|
||||
execute: |
|
||||
# set up fake HTTP server
|
||||
echo -ne "HTTP/1.0 200 OK\nContent-type: text/html; charset=utf-8\nContent-Length: 12\n\nhello, world" > res
|
||||
nc -lvp 8080 < res &
|
||||
|
||||
# HTTP GET to server, save result
|
||||
curl http://localhost:8080/ -o /tmp/res
|
||||
|
||||
# assert result is correct
|
||||
test "$(cat /tmp/res)" = "hello, world"
|
||||
|
||||
# The profile is attached based on the program path.
|
||||
"$SPREAD_PATH"/tests/bin/actual-profile-of curl | MATCH 'curl \(enforce\)'
|
Loading…
x
Reference in New Issue
Block a user