/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to TODO

  • Committer: teddy at recompile
  • Date: 2020-12-03 20:30:45 UTC
  • Revision ID: teddy@recompile.se-20201203203045-iqd6nq9y5nwalh1x
Minor fix of a test function

In dracut-module/password-agent, the test function
test_send_password_to_socket_EMSGSIZE() (which tests that the
send_password_to_socket() task function aborts properly when getting
EMSGSIZE when writing to the password socket), part of the test code
is supposed to find a message size which definitely does trigger
EMSGSIZE when send()ing to a socket.  Without a "break" in the proper
place, however, the size given is always exactly 1024 bytes too large.

This is very probably not a problem, since a too large message will
still be too large if it is increased by 1024 bytes, and send(2) in
practice checks the size before reading the buffer.  The biggest issue
would be if some version of send(2) would try to look at the last 1024
bytes of the message buffer before checking the message size; this
would then lead to a buffer over-read when running this test function.
(But even then there would be no security implications since the tests
are not run in the normal operation of the program.)

* dracut-module/password-agent.c
  (test_send_password_to_socket_EMSGSIZE): Break out early when ssret
  < 0 and errno == EMSGSIZE; don't allow loop to increase message_size
  again.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
-*- org -*-
2
2
 
3
 
* [[http://www.undeadly.org/cgi?action=article&sid=20110530221728][OpenBSD]]
4
 
 
5
3
* Testing
6
4
** python-nemu
7
5
 
8
6
* mandos-applet
9
7
 
10
8
* mandos-client
11
 
** TODO [#B] Use capabilities instead of seteuid().
12
 
** TODO [#B] Use struct sockaddr_storage instead of a union
13
 
** TODO [#B] Use getaddrinfo(hints=AI_NUMERICHOST) instead of inet_pton()
14
 
** TODO [#B] Use getnameinfo(serv=NULL, NI_NUMERICHOST) instead of inet_ntop()
15
 
** TODO [#B] Prefer /run/tmp over /tmp, if it exists
16
 
** TODO [#C] Make start_mandos_communication() take "struct server".
 
9
** TODO A ~--server~ option which only adds to the server list.
 
10
   (Unlike ~--connect~, which implicitly disables ZeroConf.)
 
11
** TODO [#B] Use [[man:capabilities][capabilities]] instead of [[info:libc#Setting%20User%20ID][seteuid()]].
 
12
   [[https://forums.grsecurity.net/viewtopic.php?f=7&t=2522]]
 
13
** TODO [#B] Use ~getaddrinfo(hints=AI_NUMERICHOST)~ instead of ~inet_pton()~
 
14
** TODO [#C] Make ~start_mandos_communication()~ take ~struct server~.
 
15
** TODO [#C] ~--interfaces=regex,eth*,noregex~ [[man:bridge-utils-interfaces][bridge-utils-interfaces(5)]]
 
16
** TODO [#A] Detect partial writes to stdout and exit with ~EX_TEMPFAIL~
17
17
 
18
18
* splashy
19
 
** TODO [#B] use scandir(3) instead of readdir(3)
 
19
** TODO [#B] use [[info:libc#Scanning%20Directory%20Content][scandir(3)]] instead of [[info:libc#Reading/Closing%20Directory][readdir(3)]]
 
20
** TODO [#A] Detect partial writes to stdout and exit with ~EX_TEMPFAIL~
20
21
 
21
22
* usplash (Deprecated)
22
 
** TODO [#A] Make it work again
23
 
** TODO [#B] use scandir(3) instead of readdir(3)
 
23
** TODO [#B] Make it work again
 
24
** TODO [#B] use [[info:libc#Scanning%20Directory%20Content][scandir(3)]] instead of [[info:libc#Reading/Closing%20Directory][readdir(3)]]
 
25
** TODO [#A] Detect partial writes to stdout and exit with ~EX_TEMPFAIL~
24
26
 
25
27
* askpass-fifo
26
 
** TODO [#B] Drop privileges after opening FIFO.
 
28
** TODO [#A] Detect partial writes to stdout and exit with ~EX_TEMPFAIL~
27
29
 
28
30
* password-prompt
29
 
** TODO [#B] lock stdin (with flock()?)
 
31
** TODO [#B] lock stdin (with [[info:libc#File%20Locks][flock()]]?)
 
32
** TODO [#A] Detect partial writes to stdout and exit with ~EX_TEMPFAIL~
30
33
 
31
34
* plymouth
 
35
** TODO [#A] Detect partial writes to stdout and exit with ~EX_TEMPFAIL~
32
36
 
33
37
* TODO [#B] passdev
34
38
 
35
39
* plugin-runner
36
40
** TODO handle printing for errors for plugins
37
41
*** Hook up stderr of plugins, buffer them, and prepend "Mandos Plugin [plugin name]"
38
 
** TODO [#B] use scandir(3) instead of readdir(3)
39
 
** TODO [#C] use same file name rules as run-parts(8)
 
42
** TODO [#C] use same file name rules as [[man:run-parts][run-parts(8)]]
40
43
** kernel command line option for debug info
41
 
** TODO [#B] Use openat()
 
44
** TODO [#A] Restart plugins which exit with ~EX_TEMPFAIL~
42
45
 
43
46
* mandos (server)
 
47
** TODO [#B] ~--notify-command~
 
48
   This would allow the mandos.service to use
 
49
   ~--notify-command="systemd-notify --pid --ready"~
 
50
** TODO [#B] python-systemd
 
51
*** import systemd.daemon; systemd.daemon.notify()
44
52
** TODO [#B] Log level                                                    :BUGS:
45
53
*** TODO /etc/mandos/clients.d/*.conf
46
54
    Watch this directory and add/remove/update clients?
51
59
** TODO [#B] Global enable/disable flag
52
60
** TODO [#B] By-client countdown on number of secrets given
53
61
** D-Bus Client method NeedsPassword(50) - Timeout, default disapprove
54
 
    + SetPass(u"gazonk", True) -> Approval, persistent
 
62
    + SetPass("gazonk", True) -> Approval, persistent
55
63
    + Approve(False) -> Close client connection immediately
56
64
** TODO [#C] python-parsedatetime
57
 
** TODO [#C] systemd/launchd
58
 
   http://0pointer.de/blog/projects/systemd.html
59
 
   http://wiki.debian.org/systemd
60
65
** TODO Separate logging logic to own object
61
 
** TODO [#A] Limit approval_delay to max gnutls/tls timeout value
62
 
** TODO [#B] break the wait on approval_delay if connection dies
63
 
** TODO Generate Client.runtime_expansions from client options + extra
 
66
** TODO [#B] Limit ~approval_delay~ to max GnuTLS/TLS timeout value
 
67
** TODO [#B] break the wait on ~approval_delay~ if connection dies
 
68
** TODO Generate ~Client.runtime_expansions~ from client options + extra
64
69
** TODO Allow %%(checker)s as a runtime expansion
65
 
** TODO Use python-tlslite?
66
70
** TODO D-Bus AddClient() method on server object
67
71
** TODO Use org.freedesktop.DBus.Method.NoReply annotation on async methods. :2:
68
 
** TODO Emit [[http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties][org.freedesktop.DBus.Properties.PropertiesChanged]] signal         :2:
69
 
   TODO Deprecate se.recompile.Mandos.Client.PropertyChanged - annotate!
70
 
   TODO Can use "invalidates" annotation to also emit on changed secret.
71
 
** TODO Support [[http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager][org.freedesktop.DBus.ObjectManager]] interface on server object :2:
72
 
   Deprecate methods GetAllClients(), GetAllClientsWithProperties()
73
 
   and signals ClientAdded and ClientRemoved.
74
72
** TODO Save state periodically to recover better from hard shutdowns
75
73
** TODO CheckerCompleted method, deprecate CheckedOK
76
 
** TODO Secret Service API?
77
 
   http://standards.freedesktop.org/secret-service/
 
74
** TODO [[https://standards.freedesktop.org/secret-service/][Secret Service]] API?
78
75
** TODO Remove D-Bus interfaces with old domain name                      :2:
79
 
** TODO Remove old string_to_delta format                                 :2:
80
 
** TODO --no-zeroconf (only valid if port or socket is set)
81
 
 
82
 
* mandos.xml
83
 
** Add mandos contact info in manual pages
 
76
** TODO Remove old ~string_to_delta~ format                               :2:
 
77
** TODO http://0pointer.de/blog/projects/stateless.html
 
78
*** File in /usr/lib/sysusers.d to create user+group "~_mandos~"
 
79
** TODO Error handling on error parsing config files
 
80
** TODO init.d script error handling
 
81
** TODO D-Bus server properties; address, port, interface, etc.           :2:
84
82
 
85
83
* mandos-ctl
86
 
*** Handle "no D-Bus server" and/or "no Mandos server found" better
87
 
*** [#B] --dump option
88
84
** TODO Remove old string_to_delta format                                 :2:
89
85
 
90
86
* TODO mandos-dispatch
92
88
  arguments.
93
89
 
94
90
* mandos-monitor
 
91
** TODO ~--servicename~                                                :BUGS:
95
92
** TODO help should be toggleable
96
93
** Urwid client data displayer
97
94
   Better view of client data in the listing
98
95
*** Properties popup
99
96
** Print a nice "We are sorry" message, save stack trace to log.
100
 
** Rename module "gobject" to "GObject".
101
97
 
102
98
* mandos-keygen
103
 
** TODO "--secfile" option
 
99
** TODO "~--secfile~" option
104
100
   Using the "secfile" option instead of "secret"
105
 
** TODO [#B] "--test" option
 
101
** TODO [#B] "~--test~" option
106
102
   For testing decryption before rebooting.
107
103
 
108
 
* Makefile
109
 
** TODO [#C] Implement DEB_BUILD_OPTIONS
110
 
   http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options
111
 
 
112
104
* Package
113
105
** /usr/share/initramfs-tools/hooks/mandos
114
 
*** TODO [#C] use same file name rules as run-parts(8)
 
106
*** TODO [#C] use same file name rules as [[man:run-parts][run-parts(8)]]
115
107
*** TODO [#C] Do not install in initrd.img if configured not to.
116
108
    Use "/etc/initramfs-tools/hooksconf.d/mandos"?
117
 
** TODO [#C] /etc/bash_completion.d/mandos
 
109
** TODO [#C] ~$(pkg-config --variable=completionsdir bash-completion)~
118
110
   From XML sources directly?
119
111
 
120
112
* Side Stuff
121
113
** TODO Locate which package moves the other bin/sh when busybox is deactivated
122
114
** TODO contact owner of package, and ask them to have that shell static in position regardless of busybox
123
115
 
 
116
* [[http://www.undeadly.org/cgi?action=article&sid=20110530221728][OpenBSD]]
 
117
 
124
118
 
125
119
#+STARTUP: showall
 
120
#+FILETAGS: :mandos: