-
Notifications
You must be signed in to change notification settings - Fork 44
Missing files don't result in a manifest being considered invalid #38
Comments
To offer an example: In manifest
If an attacker withholds all but
and the validator does not consider If the manifest (which references a missing
But until we have more information about other attack vectors, I recommend that a manifest as a whole is considered invalid, when it references a non-existing or wrongly checksummed file. The onus is on the CA publication points to publish correct valid RPKI data, the validator's can't be expected to compensate for CA operator errors (or MITM attacks) |
An additional check is needed: if one of the .roa files a manifest references is corrupt (the MITM didn't delete strategically file, but filled some .roa files with garbage), the fix no longer works:
corrupting that one .roa file results in an incomplete (operationally problematic) set of VRPs:
In the above eaxmple there should be ~ 19 VRPs in total, In summary: If a manifests references a non-existing file, or if there is a checksum mismatch between the hash described in the manifest and the hash as derived from the .roa file, the RP MUST consider the whole manifest invalid and not produce VRPs with the remaining .roa files. |
In the case of a non-existing file in the manifest: What about race conditions caused by |
What I describe here is about the set of files that goes into the RP's validation process. This is after potential re-tries a RP fetcher thread may attempt to overcome connectivity issues. Example: connection didn't work on IPv4, retry on IPv6. That's fine. The onus is on on the CA operator to publish a coherent valid manifest for a given set of files. From the way the RPKI data is structured CA software will first generate the The use of
If the answer to any of the above questions is 'no', I think the leaf of the tree at hand should be considered invalid to prevent tainting the RFC 6811 validation procedure with incomplete data. |
Just an update: per discussion: as it was now . Idea from rpki-client: make sure only the files validated are present in the "folder" (delete from rsync). |
* Related issue: #38 * When files of a Manifest are missing, extend code to invalidate the parent CA
This was fixed through f34f046 |
@job - Thank you very much for updating http://sobornost.net/~job/manifest_handling_issue.txt to reflect this. @lspgn - Do you need to EOL the 1.x.x releases on https://github.com/cloudflare/cfrpki/releases ? |
In a MITM scenario where an attacker intercepts and manipulates the rsync channel (for example strategically withholding certain .roa files from the view of the validator being attacked), the resulting set of VRPs will be incomplete and can cause severe operational issues. (Note that a MITM can trivially downgrade RPKI fetches from RRDP to rsync)
When a manifest is valid (manifest is parsable, CRL exists is valid (also not expired), and manifest is signed with keys not revoked by the CRL), and references files which do not exist in the repository at hand, the publication point should be considered compromised.
So in the case of APNIC where an End User (self-hosted) RPKI publication point misses a few .roa files, the validator can proceed to consider all data from all RPs it could reach eligeble for further validation, except any data from the publication point where files were missing.
In other words: if one or a few files are missing from the repository, the repository should be considered 'down', and no attempt should be made to start guessing what can be salvaged and what not.
The text was updated successfully, but these errors were encountered: