[pkg-cryptsetup-devel] Bug#495509: cryptsetup: non-working timeout option can render remote systems unbootable

Eddy Petrișor eddy.petrisor at gmail.com
Sat Nov 8 12:26:53 UTC 2008


Subject: cryptsetup: non-working timeout option can render remote
systems unbootable
Followup-For: Bug #495509
Package: cryptsetup
Version: 2:1.0.6-6
severity 495509 important # system unbootable when restarted remotely
thanks

On a remote server where one relies on the timeout feature to skip over
the passphrase prompt when the system is started remotely, this pauses
the entire boot process, requiring manual intervention.


Note that for me the timeout feature of cryptsetup works, but the boot
sequence doesn't work.


bounty:/etc# time cryptsetup -t 1 luksOpen /dev/sda7 sda7_crytpo
Enter LUKS passphrase: Command failed: Error reading passphrase

real	0m1.003s
user	0m0.000s
sys	0m0.008s


The problem seems to originate from this code (cryptdisks.functions:316)


	elif [ -z "$key" ]; then
		# no keyscript, no key => password
		keyscriptarg="Enter passphrase to unlock the disk $src ($dst): "
		key="-"
		KEYSCRIPT="/lib/cryptsetup/askpass"
[..]
		if [ -n "$KEYSCRIPT" ]; then
			if "$KEYSCRIPT" "$keyscriptarg" | cryptsetup $PARAMS luksOpen
"$src" "$dst"; then
				break
			fi


In the case of the boot process, $KEYSCRIPT is /lib/cryptsetup/askpass,
and although the cryptsetup process timeouts, the askpass process isn't
killed nor doesn't have a timeout.

One workaround would be to have the code written as:

	elif [ -z "$key" ]; then
		# no keyscript, no key => password
		keyscriptarg="Unlocking the disk $src ($dst): "
		key="-"
		KEYSCRIPT="INTERACTIVE"
[..]
		if [ -n "$KEYSCRIPT" ]; then
			if [ "$KEYSCRIPT" = "INTERACTIVE" ] ; then
				echo "$keyscriptarg"
				if cryptsetup $PARAMS luksOpen "$src" "$dst"; then
					break
				fi
			elif "$KEYSCRIPT" "$keyscriptarg" | cryptsetup $PARAMS luksOpen
"$src" "$dst"; then
				break
			fi



Another (cleaner) option would be for cryptsetup to accept a -p|--prompt
argument that would print that sctring instead of the default prompt.


-- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (900, 'testing'), (500, 'stable'), (10, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.26-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=ro_RO.UTF-8, LC_CTYPE=ro_RO.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages cryptsetup depends on:
ii  dmsetup                      2:1.02.27-4 The Linux Kernel Device Mapper use
ii  libc6                        2.7-15      GNU C Library: Shared libraries
ii  libdevmapper1.02.1           2:1.02.27-4 The Linux Kernel Device Mapper use
ii  libpopt0                     1.14-4      lib for parsing cmdline parameters
ii  libuuid1                     1.41.2-1    universally unique id library

cryptsetup recommends no packages.

Versions of packages cryptsetup suggests:
ii  dosfstools                    2.11-6     utilities for making and checking
ii  initramfs-tools [linux-initra 0.92j      tools for generating an initramfs
ii  udev                          0.125-7    /dev/ and hotplug management daemo

-- no debconf information





More information about the pkg-cryptsetup-devel mailing list