* [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers @ 2015-03-05 14:49 Patrick Schleizer 2015-03-05 15:30 ` Rick "Zero_Chaos" Farina 2015-03-06 15:43 ` Patrick Schleizer 0 siblings, 2 replies; 17+ messages in thread From: Patrick Schleizer @ 2015-03-05 14:49 UTC (permalink / raw To: gentoo-portage-dev Hi, I am currently working on a comparison of package managers in which Portage is part of. https://www.whonix.org/wiki/Comparison_Of_Package_Managers Would you be interested to check if the current assessments are correct and/or to fill the remaining gaps? Where the comparison table is hosted or licensing (as long as it's Libre Software) doesn't matter much to me. Edits can be made by both anonymous and registered users. Those need to be verified by admins before they go visible by default for everyone. If you like to have an account without that limitation, that is also possible. Cheers, Patrick ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-05 14:49 [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers Patrick Schleizer @ 2015-03-05 15:30 ` Rick "Zero_Chaos" Farina 2015-03-05 19:14 ` Patrick Schleizer 2015-03-06 15:43 ` Patrick Schleizer 1 sibling, 1 reply; 17+ messages in thread From: Rick "Zero_Chaos" Farina @ 2015-03-05 15:30 UTC (permalink / raw To: gentoo-portage-dev [-- Attachment #1: Type: text/plain, Size: 1696 bytes --] On 03/05/15 09:49, Patrick Schleizer wrote: > Hi, > > I am currently working on a comparison of package managers in which > Portage is part of. > > https://www.whonix.org/wiki/Comparison_Of_Package_Managers > > Would you be interested to check if the current assessments are correct > and/or to fill the remaining gaps? > > Where the comparison table is hosted or licensing (as long as it's Libre > Software) doesn't matter much to me. Edits can be made by both anonymous > and registered users. Those need to be verified by admins before they go > visible by default for everyone. If you like to have an account without > that limitation, that is also possible. > > Cheers, > Patrick > > Looking at the table, it appears to be unaware of using FEATURES=webrsync-gpg instead of standard rsync. We offer a full copy of the repo which is compressed and gpg signed which would seem to mitigate a lot of the attacks in your table. Not that I nessesarily agree that some of them even qualify as attacks, but webrsync-gpg would appear to mitigate attacks 3, 11, and 12. Attack 7 is possible, but the user would know since emerge tells you every time it is run how long it has been since a successful update based on a timestamp in the portage tree which for webrsync-gpg the attacker cannot modify. Attack 14 is not possible in gentoo as emerge will jump from mirror to mirror until it successfully gets the desired file. One would have to own all the mirrors (or at least hijack dns) to stop the user from getting a file, but at that point it's no longer a malicious mirror attack. I used the footnote numbers to reference the attacks. -Zero [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-05 15:30 ` Rick "Zero_Chaos" Farina @ 2015-03-05 19:14 ` Patrick Schleizer 2015-03-06 0:56 ` Rick "Zero_Chaos" Farina 0 siblings, 1 reply; 17+ messages in thread From: Patrick Schleizer @ 2015-03-05 19:14 UTC (permalink / raw To: gentoo-portage-dev > I used the footnote numbers to reference the attacks. I am afraid, this might cause some confusion. The numbers you have used won't stay stable. Those were autogenerated numbers of footnotes. As footnotes change, these numbers change. To keep your post understandable, I created a snapshot before modifying footnotes: http://www.webcitation.org/6Wo9Cb2ox However, numbers (1), (2), (3), etc. that won't be automatically changed, have just been added now. Rick "Zero_Chaos" Farina: > webrsync-gpg would > appear to mitigate Actually, I was aware of it. The issue is, signing is not everything. Signatures need a validity range. Otherwise mirrors can also show half a year etc. old signatures that are valid. See also: http://blog.ganneff.de/blog/2008/09/23/valid-until-field-in-release-f.html > attacks 3, 11, and 12. There was no attack 3. Now, before we talk past each other, would you mind to repost by referencing attack by name or by their new, "real" numbers? Cheers, Patrick ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-05 19:14 ` Patrick Schleizer @ 2015-03-06 0:56 ` Rick "Zero_Chaos" Farina 2015-03-06 13:53 ` Mark Kubacki 0 siblings, 1 reply; 17+ messages in thread From: Rick "Zero_Chaos" Farina @ 2015-03-06 0:56 UTC (permalink / raw To: gentoo-portage-dev [-- Attachment #1: Type: text/plain, Size: 2884 bytes --] On 03/05/15 14:14, Patrick Schleizer wrote: >> I used the footnote numbers to reference the attacks. > > I am afraid, this might cause some confusion. The numbers you have used > won't stay stable. Those were autogenerated numbers of footnotes. As > footnotes change, these numbers change. To keep your post > understandable, I created a snapshot before modifying footnotes: > http://www.webcitation.org/6Wo9Cb2ox > > However, numbers (1), (2), (3), etc. that won't be automatically > changed, have just been added now. HA, my fault, sorry about that. > > Actually, I was aware of it. The issue is, signing is not everything. > Signatures need a validity range. Otherwise mirrors can also show half a > year etc. old signatures that are valid. See also: > http://blog.ganneff.de/blog/2008/09/23/valid-until-field-in-release-f.html > >> attacks 3, 11, and 12. > > There was no attack 3. Now, before we talk past each other, would you > mind to repost by referencing attack by name or by their new, "real" > numbers? Well now there is an attack 3 :-) webrsync-gpg would ALERT the user in the case of attack 3. Portage checks the timestamp file from inside the gpg signed snapshot and alerts the user if the last sync was too long ago. In the case of a freeze attack, it should alert the user that the sync is old. Not that it fixes the attack, but it won't go unnoticed for long. Likewise, webrsync-gpg would also completely prevent 7 and 8. The snapshot is the entire tree, so it is not possible to "mix and match" without modifying the signed tarball. Nor would it be possible to provide the user with the wrong package since the checksums from inside the signed portage tarball wouldn't match if the source package was traded for a different one. Attack 8 shouldn't work either, as the checksums for everything are protected in the gpg signed portage tarball it should not be possible to trade out a source tarball for a different one. While gentoo doesn't typically use binary packages, it does have the support for it. Nothing in the binary package installation is protected by signatures, so I would expect this kind of attack to be possible when installing a binary package. Might be non-trivial to do, but certainly possible. Attack 9 won't work either, assuming the user can avoid the freeze attack (3) the user will have an up to date knowledge of what it expects on the mirrors and will simply ask other mirrors for the right file in case of 404 or bad checksum. tl;dr webrsync-gpg is a built in feature of the package manager which OPTIONALLY adds a significant amount of security against the attacks described on your website. This is not currently the default setting, however, it is described in many hardening guides for gentoo and widely used among the security conscious. -Zero_Chaos [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-06 0:56 ` Rick "Zero_Chaos" Farina @ 2015-03-06 13:53 ` Mark Kubacki 2015-03-06 15:20 ` Rick "Zero_Chaos" Farina 0 siblings, 1 reply; 17+ messages in thread From: Mark Kubacki @ 2015-03-06 13:53 UTC (permalink / raw To: gentoo-portage-dev 2015-03-06 1:56 GMT+01:00 Rick "Zero_Chaos" Farina <zerochaos@gentoo.org>: > > tl;dr webrsync-gpg is a built in feature of the package manager which > OPTIONALLY adds a significant amount of security against the attacks > described on your website. This is not currently the default setting, > however, it is described in many hardening guides for gentoo and widely > used among the security conscious. Without numbers backing that up this is speculation. Given the default settings (without webrsync-gpg)…: > (8) Wrong software installation. Observe the DNS requests for the rsync- or webrsync mirror. They're not encrypted and give you a nice heads-up. A. (data in transit) It's almost never HTTPS and/or without authentication, so you can easily proceed to hijacking the connection. - Primed that way (DNS) insert a new rule into a router (or nameserver) along the path or within the DC to redirect the transaction. (See "quantum insert".) B. (data at rest) Bribe or coerce the owner of the (portage tree) mirror. Manifests and ebuilds are not centrally signed and there is no authoritative "signing transparency"/record (see "certificate transparency"). -- Mark ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-06 13:53 ` Mark Kubacki @ 2015-03-06 15:20 ` Rick "Zero_Chaos" Farina 2015-03-06 16:13 ` Brian Dolbec 2015-03-06 17:50 ` Mark Kubacki 0 siblings, 2 replies; 17+ messages in thread From: Rick "Zero_Chaos" Farina @ 2015-03-06 15:20 UTC (permalink / raw To: gentoo-portage-dev [-- Attachment #1: Type: text/plain, Size: 2879 bytes --] On 03/06/15 08:53, Mark Kubacki wrote: > 2015-03-06 1:56 GMT+01:00 Rick "Zero_Chaos" Farina <zerochaos@gentoo.org>: >> >> tl;dr webrsync-gpg is a built in feature of the package manager which >> OPTIONALLY adds a significant amount of security against the attacks >> described on your website. This is not currently the default setting, >> however, it is described in many hardening guides for gentoo and widely >> used among the security conscious. > > Without numbers backing that up this is speculation. 5,7,16,38,42. There are some numbers to back up what I'm saying. I have been doing security work for over 15 years and I'm a professional pen-tester. If you want to read the portage code to verify what I said that's fine, but I'm reasonably confident I distilled what portage does into english. > > Given the default settings (without webrsync-gpg)…: > >> (8) Wrong software installation. > > Observe the DNS requests for the rsync- or webrsync mirror. They're > not encrypted and give you a nice heads-up. Yup, dns is basically never encrypted, this is not new information or a new attack. > > A. (data in transit) It's almost never HTTPS and/or without > authentication, so you can easily proceed to hijacking the connection. > - Primed that way (DNS) insert a new rule into a router (or > nameserver) along the path or within the DC to redirect the > transaction. (See "quantum insert".) Yup, this was discussed, however, it doesn't matter, and I'll explain why. The portage tree itself is a tarball with a signature attached, that means that short of coercion, the information in the portage tree should be correct (in the case of webrsync-gpg). The Manifest file for each package contains a sha256, sha512, and whirlpool hash for each file (including the source tarballs which would be downloaded to install) and ALL of them must match. Good luck modifying the file and getting all three hashs to match, I would suggest that is statistically impossible. Yes, an attacker could easily pass any file they like, but portage would fail to validate it and refuse to continue. > > B. (data at rest) Bribe or coerce the owner of the (portage tree) > mirror. Manifests and ebuilds are not centrally signed and there is no > authoritative "signing transparency"/record (see "certificate > transparency"). > Only the portage tree is centrally signed, and currently the manifest signatures aren't even verified automatically at this point. Yes, I completely agree that a gentoo dev could be coerced or bribed to add malicious code to the repository which would then get signed and shipped with the secure tarball. This avenue of attack is very difficult to stop. If would be cool to have some kind of automated check for malicious codes, however, I doubt it would be all that effective. -Zero [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-06 15:20 ` Rick "Zero_Chaos" Farina @ 2015-03-06 16:13 ` Brian Dolbec 2015-03-06 17:50 ` Mark Kubacki 1 sibling, 0 replies; 17+ messages in thread From: Brian Dolbec @ 2015-03-06 16:13 UTC (permalink / raw To: gentoo-portage-dev [-- Attachment #1: Type: text/plain, Size: 4151 bytes --] On Fri, 06 Mar 2015 10:20:27 -0500 "Rick \"Zero_Chaos\" Farina" <zerochaos@gentoo.org> wrote: > On 03/06/15 08:53, Mark Kubacki wrote: > > 2015-03-06 1:56 GMT+01:00 Rick "Zero_Chaos" Farina > > <zerochaos@gentoo.org>: > >> > >> tl;dr webrsync-gpg is a built in feature of the package manager > >> which OPTIONALLY adds a significant amount of security against the > >> attacks described on your website. This is not currently the > >> default setting, however, it is described in many hardening guides > >> for gentoo and widely used among the security conscious. > > > > Without numbers backing that up this is speculation. > > 5,7,16,38,42. There are some numbers to back up what I'm saying. I > have been doing security work for over 15 years and I'm a professional > pen-tester. If you want to read the portage code to verify what I > said that's fine, but I'm reasonably confident I distilled what > portage does into english. > > > > Given the default settings (without webrsync-gpg)…: > > > >> (8) Wrong software installation. > > > > Observe the DNS requests for the rsync- or webrsync mirror. They're > > not encrypted and give you a nice heads-up. > > Yup, dns is basically never encrypted, this is not new information or > a new attack. > > > > A. (data in transit) It's almost never HTTPS and/or without > > authentication, so you can easily proceed to hijacking the > > connection. > > - Primed that way (DNS) insert a new rule into a router (or > > nameserver) along the path or within the DC to redirect the > > transaction. (See "quantum insert".) > > Yup, this was discussed, however, it doesn't matter, and I'll explain > why. The portage tree itself is a tarball with a signature attached, > that means that short of coercion, the information in the portage tree > should be correct (in the case of webrsync-gpg). The Manifest file > for each package contains a sha256, sha512, and whirlpool hash for > each file (including the source tarballs which would be downloaded to > install) and ALL of them must match. Good luck modifying the file > and getting all three hashs to match, I would suggest that is > statistically impossible. Yes, an attacker could easily pass any file > they like, but portage would fail to validate it and refuse to > continue. > > > > B. (data at rest) Bribe or coerce the owner of the (portage tree) > > mirror. Manifests and ebuilds are not centrally signed and there is > > no authoritative "signing transparency"/record (see "certificate > > transparency"). > > > Only the portage tree is centrally signed, and currently the manifest > signatures aren't even verified automatically at this point. Yes, I > completely agree that a gentoo dev could be coerced or bribed to add > malicious code to the repository which would then get signed and > shipped with the secure tarball. This avenue of attack is very > difficult to stop. If would be cool to have some kind of automated > check for malicious codes, however, I doubt it would be all that > effective. > > -Zero > I have refrained from replying till now because I don't consider myself qualified to answer security issues like these. But, for the few holes there are currently in portage's security methods, there are already efforts underway to plug them. Using a new project called gentoo-keys (a gpg-key management app) portage will be able to independently able to verify the gpg signed Manifest files provided with each package. So, even if the user does not use the gpg signed emerge-webrsync method. There will still be an alternate authentication method on the package level. There are other steps being taken as well in other areas of the tree handling and building as well, but portage verifying the Manifest file is the next step being taken with gentoo-keys. What Zero did not mention was that a user can independently verify the gpg signature of each Manifest file now. The developer gpg keys are listed and available. The gentoo-keys project is just automating the whole process. -- Brian Dolbec <dolsen> [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 951 bytes --] ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-06 15:20 ` Rick "Zero_Chaos" Farina 2015-03-06 16:13 ` Brian Dolbec @ 2015-03-06 17:50 ` Mark Kubacki 2015-03-07 23:26 ` Zac Medico 1 sibling, 1 reply; 17+ messages in thread From: Mark Kubacki @ 2015-03-06 17:50 UTC (permalink / raw To: gentoo-portage-dev 2015-03-06 1:56 GMT+01:00 Rick "Zero_Chaos" Farina <zerochaos@gentoo.org>: > > tl;dr webrsync-gpg is a built in feature of the package manager which > OPTIONALLY adds a significant amount of security against the attacks > described on your website. This is not currently the default setting, > however, it is described in many hardening guides for gentoo and widely > used among the security conscious. On 03/06/15 08:53, Mark Kubacki wrote: > > Without numbers backing that up this is speculation. 2015-03-06 16:20 GMT+01:00 Rick "Zero_Chaos" Farina <zerochaos@gentoo.org>: > > 5,7,16,38,42. There are some numbers to back up what I'm saying. I > have been doing security work for over 15 years and I'm a professional > pen-tester. If you want to read the portage code to verify what I said > that's fine, but I'm reasonably confident I distilled what portage does > into english. We're on the same side here. Do we have numbers showing the ratio "portage used with defaults" vs. where "[webrsync-gpg] is described in many hardening guides for gentoo and widely used among the security conscious" applies? DNS not being encrypted is just painting the whole picture. Point is, the default is that "emerge --sync" results in a transfer using RSYNC (or http). And by default you cannot compare the result with any authoritative source. -- Mark ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-06 17:50 ` Mark Kubacki @ 2015-03-07 23:26 ` Zac Medico 2015-03-08 1:24 ` Brian Dolbec ` (2 more replies) 0 siblings, 3 replies; 17+ messages in thread From: Zac Medico @ 2015-03-07 23:26 UTC (permalink / raw To: gentoo-portage-dev On 03/06/2015 09:50 AM, Mark Kubacki wrote: > We're on the same side here. > > Do we have numbers showing the ratio "portage used with defaults" vs. > where "[webrsync-gpg] is described in many hardening guides for gentoo > and widely used among the security conscious" applies? > > DNS not being encrypted is just painting the whole picture. Point is, > the default is that "emerge --sync" results in a transfer using RSYNC > (or http). > > And by default you cannot compare the result with any authoritative source. > Ideally, we can rely on security mechanisms built into git [1], possibly involving signed commits. [1] https://github.com/gentoo/gentoo-portage-rsync-mirror -- Thanks, Zac ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-07 23:26 ` Zac Medico @ 2015-03-08 1:24 ` Brian Dolbec 2015-03-08 2:31 ` Zac Medico 2015-03-08 14:59 ` Patrick Schleizer 2015-03-08 15:02 ` Mark Kubacki 2 siblings, 1 reply; 17+ messages in thread From: Brian Dolbec @ 2015-03-08 1:24 UTC (permalink / raw To: gentoo-portage-dev On Sat, 07 Mar 2015 15:26:26 -0800 Zac Medico <zmedico@gentoo.org> wrote: > On 03/06/2015 09:50 AM, Mark Kubacki wrote: > > We're on the same side here. > > > > Do we have numbers showing the ratio "portage used with defaults" > > vs. where "[webrsync-gpg] is described in many hardening guides for > > gentoo and widely used among the security conscious" applies? > > > > DNS not being encrypted is just painting the whole picture. Point > > is, the default is that "emerge --sync" results in a transfer using > > RSYNC (or http). > > > > And by default you cannot compare the result with any authoritative > > source. > > > > Ideally, we can rely on security mechanisms built into git [1], > possibly involving signed commits. > > [1] https://github.com/gentoo/gentoo-portage-rsync-mirror Actually, git makes it nearly impossible to get the correct info required to re-process the git commit signature. It is all embedded into the commit itself, but not in a way for gpg to be able to re-verify it. Git relies on the issuer's gpg verification status which it records in it's data before the push. So, without some major hacking on git data, it is not viable for routine verification purposes. When we move from cvs to git, newer git makes it possible to git push --sign. That info is available on the recieving server and the receiving server also runs gpg to verifiy the incoming data. Only problem there is git does not store that data. There is however a hook that gathers the info and saves it in git's metadata for that repo. That makes it possible to run a verification on the repo at any other time. Not just during the recieve operation. When we do move to a git tree. My information is that pushes will not contain a signed manifest like they are now for cvs. Instead the Manifest files will be generated for the rsync distribution tree and signed with gentoo gpg key. Replicating the existing tree structure. I will likely have a patch for portage very soon which uses gkeys libs to verify the Manifests. gkeys-9999 is able to verify the Manifest files now if the gentoo-devs keys are installed. Main questions for now is. Do we want to have a post sync hook that checks the tree for invalid Manifest sigs? Or do we just have it verify the manifest for the pkg at build/merge time? Or both? -- Brian Dolbec <dolsen> ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-08 1:24 ` Brian Dolbec @ 2015-03-08 2:31 ` Zac Medico 2015-03-08 5:44 ` Brian Dolbec 0 siblings, 1 reply; 17+ messages in thread From: Zac Medico @ 2015-03-08 2:31 UTC (permalink / raw To: gentoo-portage-dev On 03/07/2015 05:24 PM, Brian Dolbec wrote: > On Sat, 07 Mar 2015 15:26:26 -0800 > Zac Medico <zmedico@gentoo.org> wrote: > >> On 03/06/2015 09:50 AM, Mark Kubacki wrote: >>> We're on the same side here. >>> >>> Do we have numbers showing the ratio "portage used with defaults" >>> vs. where "[webrsync-gpg] is described in many hardening guides for >>> gentoo and widely used among the security conscious" applies? >>> >>> DNS not being encrypted is just painting the whole picture. Point >>> is, the default is that "emerge --sync" results in a transfer using >>> RSYNC (or http). >>> >>> And by default you cannot compare the result with any authoritative >>> source. >>> >> >> Ideally, we can rely on security mechanisms built into git [1], >> possibly involving signed commits. >> >> [1] https://github.com/gentoo/gentoo-portage-rsync-mirror > > > Actually, git makes it nearly impossible to get the correct info > required to re-process the git commit signature. It is all embedded > into the commit itself, but not in a way for gpg to be able to > re-verify it. Git relies on the issuer's gpg verification status which > it records in it's data before the push. So, without some major > hacking on git data, it is not viable for routine verification purposes. Maybe we can use the relatively recently added git verify-commit command [1]. If we run that command with --verbose, then we can use that to verify that that a commit was signed with a trusted key. Shouldn't verification of the HEAD commit be enough to vouch for the integrity of the entire tree? [1] https://github.com/git/git/commit/d07b00b7f31d0cb6675b4bdba269ce7f087ddd24 -- Thanks, Zac ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-08 2:31 ` Zac Medico @ 2015-03-08 5:44 ` Brian Dolbec 0 siblings, 0 replies; 17+ messages in thread From: Brian Dolbec @ 2015-03-08 5:44 UTC (permalink / raw To: gentoo-portage-dev On Sat, 07 Mar 2015 18:31:44 -0800 Zac Medico <zmedico@gentoo.org> wrote: > On 03/07/2015 05:24 PM, Brian Dolbec wrote: > > On Sat, 07 Mar 2015 15:26:26 -0800 > > Zac Medico <zmedico@gentoo.org> wrote: > > > >> On 03/06/2015 09:50 AM, Mark Kubacki wrote: > >>> We're on the same side here. > >>> > >>> Do we have numbers showing the ratio "portage used with defaults" > >>> vs. where "[webrsync-gpg] is described in many hardening guides > >>> for gentoo and widely used among the security conscious" applies? > >>> > >>> DNS not being encrypted is just painting the whole picture. Point > >>> is, the default is that "emerge --sync" results in a transfer > >>> using RSYNC (or http). > >>> > >>> And by default you cannot compare the result with any > >>> authoritative source. > >>> > >> > >> Ideally, we can rely on security mechanisms built into git [1], > >> possibly involving signed commits. > >> > >> [1] https://github.com/gentoo/gentoo-portage-rsync-mirror > > > > > > Actually, git makes it nearly impossible to get the correct info > > required to re-process the git commit signature. It is all embedded > > into the commit itself, but not in a way for gpg to be able to > > re-verify it. Git relies on the issuer's gpg verification status > > which it records in it's data before the push. So, without some > > major hacking on git data, it is not viable for routine > > verification purposes. > > Maybe we can use the relatively recently added git verify-commit > command [1]. If we run that command with --verbose, then we can use > that to verify that that a commit was signed with a trusted key. > Shouldn't verification of the HEAD commit be enough to vouch for the > integrity of the entire tree? > > [1] > https://github.com/git/git/commit/d07b00b7f31d0cb6675b4bdba269ce7f087ddd24 GREAT! So, same as for push --sign, we just need to configure a replacement gpg command for git that uses gkeys instead of gpg directly. That will simplify things over the previous. A replacement gpg command is needed because of the way gkeys stores the developer keys in separate keyrings. gkeys determines which keyring to use and runs gpg with the correct settings. It is also capable of searching is db for the correct keyring to verify against as well. -- Brian Dolbec <dolsen> ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-07 23:26 ` Zac Medico 2015-03-08 1:24 ` Brian Dolbec @ 2015-03-08 14:59 ` Patrick Schleizer 2015-03-08 20:10 ` Zac Medico 2015-03-08 15:02 ` Mark Kubacki 2 siblings, 1 reply; 17+ messages in thread From: Patrick Schleizer @ 2015-03-08 14:59 UTC (permalink / raw To: gentoo-portage-dev Zac Medico: > On 03/06/2015 09:50 AM, Mark Kubacki wrote: >> We're on the same side here. >> >> Do we have numbers showing the ratio "portage used with defaults" vs. >> where "[webrsync-gpg] is described in many hardening guides for gentoo >> and widely used among the security conscious" applies? >> >> DNS not being encrypted is just painting the whole picture. Point is, >> the default is that "emerge --sync" results in a transfer using RSYNC >> (or http). >> >> And by default you cannot compare the result with any authoritative source. >> > > Ideally, we can rely on security mechanisms built into git [1], possibly > involving signed commits. > > [1] https://github.com/gentoo/gentoo-portage-rsync-mirror Then the question is, how secure are signatures when used wit hgit? A while ago I wrote a blog post asking that question, referencing a lot related information, started a discussion and also posted this on the git mailing list. "How safe are signed git tags? Only as safe as SHA-1 or somehow safer?" [1] [2] Cheers, Patrick [1] https://www.whonix.org/blog/how-safe-are-signed-git-tags-only-as-safe-as-sha-1-or-somehow-safer [2] http://www.mail-archive.com/git@vger.kernel.org/msg61087.html ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-08 14:59 ` Patrick Schleizer @ 2015-03-08 20:10 ` Zac Medico 0 siblings, 0 replies; 17+ messages in thread From: Zac Medico @ 2015-03-08 20:10 UTC (permalink / raw To: gentoo-portage-dev On 03/08/2015 07:59 AM, Patrick Schleizer wrote: > Zac Medico: >> On 03/06/2015 09:50 AM, Mark Kubacki wrote: >>> We're on the same side here. >>> >>> Do we have numbers showing the ratio "portage used with defaults" vs. >>> where "[webrsync-gpg] is described in many hardening guides for gentoo >>> and widely used among the security conscious" applies? >>> >>> DNS not being encrypted is just painting the whole picture. Point is, >>> the default is that "emerge --sync" results in a transfer using RSYNC >>> (or http). >>> >>> And by default you cannot compare the result with any authoritative source. >>> >> >> Ideally, we can rely on security mechanisms built into git [1], possibly >> involving signed commits. >> >> [1] https://github.com/gentoo/gentoo-portage-rsync-mirror > > Then the question is, how secure are signatures when used wit hgit? And once we answer that question, the question is, is git secure enough for our needs? > A while ago I wrote a blog post asking that question, referencing a lot > related information, started a discussion and also posted this on the > git mailing list. > > "How safe are signed git tags? Only as safe as SHA-1 or somehow safer?" > [1] [2] > > Cheers, > Patrick > > [1] > https://www.whonix.org/blog/how-safe-are-signed-git-tags-only-as-safe-as-sha-1-or-somehow-safer > [2] http://www.mail-archive.com/git@vger.kernel.org/msg61087.html For the time being, I think that git is secure enough for our needs, and I trust that git will implement stronger security soon enough. -- Thanks, Zac ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-07 23:26 ` Zac Medico 2015-03-08 1:24 ` Brian Dolbec 2015-03-08 14:59 ` Patrick Schleizer @ 2015-03-08 15:02 ` Mark Kubacki 2015-03-08 21:02 ` Zac Medico 2 siblings, 1 reply; 17+ messages in thread From: Mark Kubacki @ 2015-03-08 15:02 UTC (permalink / raw To: gentoo-portage-dev On 03/06/2015 09:50 AM, Mark Kubacki wrote: > > And by default you cannot compare the result with any authoritative source. 2015-03-08 0:26 GMT+01:00 Zac Medico <zmedico@gentoo.org>: > > Ideally, we can rely on security mechanisms built into git [1], possibly > involving signed commits. Some brownfield thinking here, without GIT and not replacing GIT: 1. Find and compile all directories two levels deep in a file "category.idx" and sign it. 2. Sign every Manifest. 3. Distribute that as usual. Will need N+1 checks (N × Manifest + 1 × category present/missing) and doesn't break anything already deployed. Contributors (individuals, teams) need to provide a public key before submitting, and the "mirror source" (authority) just checks against the author's signature and signs (1) and (2) with its own key ("official portage tree root key X"). That way, in the end, it's enough to announce only one signing key for every tree. (It's easier with binhosts, because all you need to sign is "Packages{,gz}".) There are many interoperable implementations of OpenBSD's "signify" [2] (sha256 + ed25519). Implementations are simple and small enough [3] to be included into Portage to not require GPG. -- Mark [2] http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/signify.1?query=signify&arch=i386 [3] http://ed25519.cr.yp.to/python/ed25519.py — needs reading the key and hashing the file to be checked ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-08 15:02 ` Mark Kubacki @ 2015-03-08 21:02 ` Zac Medico 0 siblings, 0 replies; 17+ messages in thread From: Zac Medico @ 2015-03-08 21:02 UTC (permalink / raw To: gentoo-portage-dev On 03/08/2015 08:02 AM, Mark Kubacki wrote: > On 03/06/2015 09:50 AM, Mark Kubacki wrote: >> >> And by default you cannot compare the result with any authoritative source. > > 2015-03-08 0:26 GMT+01:00 Zac Medico <zmedico@gentoo.org>: >> >> Ideally, we can rely on security mechanisms built into git [1], possibly >> involving signed commits. > > Some brownfield thinking here, without GIT and not replacing GIT: > > 1. Find and compile all directories two levels deep in a file > "category.idx" and sign it. > 2. Sign every Manifest. > 3. Distribute that as usual. > > Will need N+1 checks (N × Manifest + 1 × category present/missing) and > doesn't break anything already deployed. I think it's an unnecessary expenditure of effort to implement our own Merkle tree, considering that git's Merkle tree is good enough for the time being, and will likely implement stronger security soon enough. > Contributors (individuals, teams) need to provide a public key before > submitting, and the "mirror source" (authority) just checks against > the author's signature Ideally, this signature check would be implemented as a server-side git hook, so that a push would be automatically rejected if any of the pushed commits lacked a good signature. > and signs (1) and (2) with its own key > ("official portage tree root key X"). That way, in the end, it's > enough to announce only one signing key for every tree. Or just rely on signed commits in git. We can automatically generate an empty signed commit with the root key every 30 minutes or something like that. > (It's easier with binhosts, because all you need to sign is "Packages{,gz}".) Yes, much easier. We might also want to embed signatures directly in each binary package, so that they can be independently verified without needing a copy of the original Packages file. -- Thanks, Zac ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers 2015-03-05 14:49 [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers Patrick Schleizer 2015-03-05 15:30 ` Rick "Zero_Chaos" Farina @ 2015-03-06 15:43 ` Patrick Schleizer 1 sibling, 0 replies; 17+ messages in thread From: Patrick Schleizer @ 2015-03-06 15:43 UTC (permalink / raw To: gentoo-portage-dev Hi, it was naive of me to attempt to create such a comparison table. Takes much more time than I have available for this. It was to be expected that there are disagreements and I cannot resolve them without checking the code myself and perhaps without coming up with proof of concept exploitation code to settle it. To prevent spreading false information, I took that wiki page offline. If someone else wants to maintain such a wiki comparison page, I could still help with hosting, mediawiki markup and such stuff. Sorry for the noise! Your answered were appreciated and helpful! We had somewhat a bad timing. I am sure Vlad in the "Portage and Updater Security" thread is much more knowledgeable, realistic and dedicated. (I am not part of the TUF team, just interested in their work.) Cheers, Patrick ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2015-03-08 21:03 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-03-05 14:49 [gentoo-portage-dev] Security and Comparison of Portage with other Package Managers Patrick Schleizer 2015-03-05 15:30 ` Rick "Zero_Chaos" Farina 2015-03-05 19:14 ` Patrick Schleizer 2015-03-06 0:56 ` Rick "Zero_Chaos" Farina 2015-03-06 13:53 ` Mark Kubacki 2015-03-06 15:20 ` Rick "Zero_Chaos" Farina 2015-03-06 16:13 ` Brian Dolbec 2015-03-06 17:50 ` Mark Kubacki 2015-03-07 23:26 ` Zac Medico 2015-03-08 1:24 ` Brian Dolbec 2015-03-08 2:31 ` Zac Medico 2015-03-08 5:44 ` Brian Dolbec 2015-03-08 14:59 ` Patrick Schleizer 2015-03-08 20:10 ` Zac Medico 2015-03-08 15:02 ` Mark Kubacki 2015-03-08 21:02 ` Zac Medico 2015-03-06 15:43 ` Patrick Schleizer
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox