13

I just upgraded to 18.04 and wanted to try out livepatch. After reading the Livepatch Terms of Service web page (https://www.ubuntu.com/legal/terms-and-policies/livepatch-terms-of-service) I wondered a bit about these two paragraphs in the personal data section:

We may also collect certain non-personally-identifiable information, which is located on your computer. The information collected may include statistics relating to how often data is transferred, and performance metrics in relation to software and configuration. You agree this information may be retained and used by Canonical.

Canonical may disclose any or all personal data and content you have sent, posted or published if required to comply with applicable law or the order or requirement of a court, administrative agency or other governmental body. All other use of your personal data is subject to the Privacy Policy.

I understand that, in order to do the live patching, Canonical needs to know some things about my system, like the kernel version. Also, through my SSO account and the token they know my email address and name.

So far so good. But I wonder what else Canonical needs to know about my system. The above text is vague about this. "Statistics" and "performance metrics" do not sound like they are necessary for the live patch service per se. Also, if those data are really "non-personally-identifiable", why Canonical is asking one paragraph later to agree that they may disclose them to administrative agencies or governmental bodies on request?

What are the data transmitted to Canonical, once and regularly? How can I investigate what is transmitted? How can I be sure it will not change suddenly to transmit more than I want?

This is a technical question. I do not want to discuss Canonical's TOS or legal issues. I really want a technical way to find what is transmitted before I sign up.

2
  • I think livepatch works via snapd, and this is the same ToS/Privacy Policy as Canonical has for all of SSO, Launchpad, Snap store, etc… I think snapd transmits some things like hardware info, or such.
    – dobey
    May 11, 2018 at 19:57
  • I guess the only way to know for sure is to put a monitor on your internet uploads, run the app, then check the monitor logs. Of course if they are encrypting your data they upload you'll only see binary garbaly-gook. May 17, 2018 at 1:18

2 Answers 2

14
+50

Given that the livepatch client is proprietary, I don't have a complete answer.

That said, the client (/snap/canonical-livepatch/*/canonical-livepatchd) is written in Go. Debugging with Delve, here's some information to start with:

(dlv) bt
0  0x00000000006ad140 in main.(*client).check
   at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/client.go:212
1  0x00000000006acfeb in main.(*client).Check
   at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/client.go:200
2  0x00000000006b8415 in main.refresh
   at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/refresh.go:60
3  0x00000000006bf957 in main.newDaemon.func1
   at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/daemon.go:76
4  0x00000000006b86a3 in main.(*refreshLoop).loop
   at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/refresh.go:120
5  0x00000000006c0bfd in main.(*service).Start.func1
   at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/service.go:151
6  0x0000000000457b31 in runtime.goexit
   at /home/c/.gobrew/versions/1.10/src/runtime/asm_amd64.s:2361
(dlv) locals
rendered.cap = 0
rendered.len = 0
rendered.ptr = *uint8 nil
status = main.ClientStatus {ClientVersion: "8.0.1", MachineId: "bfcf169468f641528ac653c41ff1797d", MachineToken: "",...+7 more}
(dlv) print status
main.ClientStatus {
    ClientVersion: "8.0.1",
    MachineId: "bfcf169468f641528ac653c41ff1797d",
    MachineToken: "",
    Architecture: "x86_64",
    CpuModel: "Intel(R) Core(TM) i7-6920HQ CPU @ 2.90GHz",
    LastCheck: time.Time {
        wall: 0,
        ext: 0,
        loc: *time.Location nil,},
    BootTime: time.Time {
        wall: 0,
        ext: 63662149770,
        loc: *(*time.Location)(0x963f60),},
    ApplyTime: time.Time {
        wall: 0,
        ext: 0,
        loc: *time.Location nil,},
    Uptime: 3472,
    Kernels: []main.KernelStatus len: 1, cap: 1, [
        (*main.KernelStatus)(0xc4201883c0),
    ],}

The fields in the status variable are:

  • Client Version
  • Machine ID (the value from /etc/machine-id)
  • Machine Token (Ubuntu One token?)
  • CPU Model and (OS?) Architecture
  • Last check time
  • Boot time (time taken to boot?)
  • Apply Time (?? - possibly, when the last update was applied?)
  • Uptime
  • List of Kernels

Boot time and Uptime could be considered to be included in statistics and performance metrics.

Again, this is a starting point. Make of it what you will, and hopefully somebody else can provide more definite information.

How can I be sure it will not change suddenly to transmit more than I want?

You can't. The source code isn't available, and snaps are automatically refreshed, IIRC.

6
  • Interesting that it says in your link "This ID uniquely identifies the host. It should be considered "confidential", and must not be exposed in untrusted environments, in particular on the network." I wonder if livepatch would keep working if I change the machine id regularly. May 18, 2018 at 5:51
  • @SebastianStark since livepatch is free for upto three systems for the community, I'd guess it should work for at least three changes. Not sure what will happen after that.
    – muru
    May 18, 2018 at 5:54
  • I think I'll never know, I don't think my employer would ever let me sign this agreement anyway. May 18, 2018 at 6:05
  • You probably shouldn't have awarded the bounty so soon. Somebody else would have probably done better in digging through the internals.
    – muru
    May 18, 2018 at 6:09
  • You're probably right. Although I hope people here would not only do this for the (small) bounty. I think this question is quite important. May 18, 2018 at 12:29
6

I asked Canonical sales team what data the live patch service transmits. They got back to me with this:

This is the information we send about the client:

  • Machine ID from /etc/machine-id
  • Machine Token from livepatch server
  • Architecture of machine
  • CPU model of machine
  • When was the client last updated
  • When was the system booted
  • When was livepatch last applied?
  • Current system uptime
  • Kernel version

Also they mentioned that they also transmit some snap statistics, which might change with the GDPR requirements.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .