Conversation
Co-authored-by: Codex <[email protected]>
|
If you end up doing a bunch of deduplication changes on this or recommendation edits on their bits, I can definitely extend repo write access too, to streamline collab these next weeks at a minimum. The geoblocking from known adversarial countries makes a ton of sense. Never even thought to do that in the portal because of the additional auth methods. |
|
Not sure if I submitted my pull request in the right area, but here it is: #43 (commits) |
|
Additionally, see below for a possible starting point of an audit-readiness gap analysis. The idea would be to compare BlockTransfer’s current security posture against the controls likely needed for SOC 1 Type II readiness, with SOC 2 Type II and Reg S-P as supporting considerations. Recommended Audit Path for BlockTransferFor BlockTransfer, the first audit objective should be: SOC 1 Type II first — then SOC 2 Type IIBlockTransfer appears to operate as transfer-agent infrastructure for securities transfer, recordkeeping, compliance automation, issuer and investor workflows, and digital stock certificate management. Because of that, the best first audit is SOC 1 Type II, not ISO 27001 and not SOC 2. Why SOC 1 Type II FirstTransfer agents are responsible for maintaining issuer securityholder records, recording ownership changes, issuing and canceling certificates, and supporting core securities administration workflows. For BlockTransfer, the most important trust question is:
That is a SOC 1 Type II question. A SOC 1 report is designed for controls at a service organization that may affect a customer’s internal control over financial reporting. For a transfer agent, that maps directly to controls around:
Why Not SOC 2 First?SOC 2 Type II is still important, especially because BlockTransfer handles sensitive investor data and digital infrastructure. SOC 2 focuses on controls related to:
However, for a transfer agent, the first issue is not only whether the platform is secure. The first issue is whether the company’s recordkeeping and transfer-processing controls can be relied on by issuers and their auditors. That makes SOC 1 Type II the better first audit artifact. Why Not ISO 27001 First?ISO 27001 is useful as a broad information-security management certification, especially for enterprise credibility and international trust. However, ISO 27001 is less directly tied to transfer-agent recordkeeping, issuer financial reporting, and auditor reliance. It does not answer the core transfer-agent control question as directly as SOC 1 Type II. ISO 27001 is better as a later-stage certification after the security program is mature. Reg S-P ReadinessSeparately from audit certifications, BlockTransfer should prepare for SEC Regulation S-P obligations. Reg S-P readiness should influence the SOC 1 and SOC 2 control environment, especially around:
Reg S-P is not a certification, but it is highly relevant to the control environment BlockTransfer will need to demonstrate. Recommended SequenceFirst: SOC 1 Type IIScope the SOC 1 Type II around transfer-agent operations and digital certificate/shareholder-record controls, including:
Second: SOC 2 Type IIScope the SOC 2 Type II around platform security and data protection, including:
Later: ISO 27001Pursue ISO 27001 once the security program is mature enough that certification will be efficient and sustainable. ISO 27001 can help demonstrate a formal information-security management system, but it should come after the audit artifacts that most directly support issuer, auditor, and financial-institution due diligence. Bottom LineBlockTransfer should pursue SOC 1 Type II first. SOC 1 Type II best aligns with BlockTransfer’s role as a transfer agent responsible for shareholder records, digital stock certificate controls, transfer processing, and issuer-facing financial-record reliability. After that, BlockTransfer should pursue SOC 2 Type II for security and data-protection assurance, followed by ISO 27001 if broader enterprise or international certification becomes useful. |
|
Building on the audit-readiness recommendation above, the next practical step is to turn that recommendation into a gap analysis. The goal would be to compare BlockTransfer’s current security and operational controls against the controls likely needed for SOC 1 Type II readiness, while also identifying where the same work supports SOC 2 Type II and Reg S-P readiness. This is not intended to be a final audit scope, but a starting structure for identifying gaps, owners, evidence, and remediation priorities. BlockTransfer Audit Readiness Gap Analysis1. Governance and ScopeAssess whether BlockTransfer has clearly defined:
Example gap questions:
2. Shareholder Recordkeeping ControlsAssess whether controls exist for the accuracy, completeness, and integrity of shareholder records. Review:
Example gap questions:
3. Transfer Authorization ControlsAssess whether transfers are properly authorized before execution. Review:
Example gap questions:
4. Reconciliation ControlsAssess whether BlockTransfer can reconcile digital certificate records, blockchain records, and official shareholder records. Review:
Example gap questions:
5. Access ControlsAssess whether access to transfer-agent systems is restricted, approved, reviewed, and removed when no longer needed. Review:
Example gap questions:
6. Credential and Key ManagementAssess whether credentials and keys are inventoried, protected, rotated, and monitored. Review:
Example gap questions:
7. Change ManagementAssess whether changes to transfer-agent systems are authorized, tested, approved, and traceable. Review:
Example gap questions:
8. Logging and MonitoringAssess whether BlockTransfer can detect misuse, unauthorized changes, and suspicious access. Review:
Example gap questions:
9. Incident ResponseAssess whether incident response procedures address transfer-agent-specific compromise scenarios. Review:
Example gap questions:
10. Backup, Recovery, and Business ContinuityAssess whether BlockTransfer can recover critical transfer-agent records and operations. Review:
Example gap questions:
11. Privacy and Reg S-P ReadinessAssess whether investor information is protected and whether breach response workflows are documented. Review:
Example gap questions:
12. Vendor and Third-Party RiskAssess whether vendors supporting transfer-agent operations are identified, reviewed, and monitored. Review:
Example gap questions:
Gap Analysis OutputFor each control area, document:
Example Gap Entry
Recommended First StepStart with a SOC 1 Type II readiness gap analysis focused on:
Then map overlapping controls to SOC 2 Type II and Reg S-P so the same remediation work can support future audits and compliance readiness. |
No need for repo write access right now, pull requests are easy enough. Will let you know if that changes. As for geoblocking: not only can it reduce intrusion attempts, but it can also reduce unnecessary logging noise (and potentially logging costs!) :) |
|
Thanks so much for really fleshing these remarks out here, James! 🎉 I'm going through the full lists and processes as I move as much as possible directly onto GitHub in #44 for #20. The SOC ideas are interesting because they're actually not required by the regulation as written. I always saw the process as overly centralized and symptomatic of too much intermediary trust. Namely, for the SOC 1 Type II ideas, I'm pretty far along in moving most of our financials on-chain, which should make things a lot more transparent. I'd say progress is about in step and pace with the DUNA wallet setup. That said, and notwithstanding, I am all for more help making sure our accounts are right, as was suggested by Bob in the AGM. The only thing I'd ask right now is whether the cost of audit help is worth the payoff at the moment. For "shareholder recordkeeping and transfer-processing controls" which are largely open-source, we have the good fortune of SEC Examiners who review our securityholder records, ownership issuance, and "core securities administration workflows" on the U.S. taxpayer's dime. They particularly found some deviance with "reconciliation between on-chain and off-chain records" in the exam last year, so I agree completely that these are things we should inspect. Whether or not it needs to be an explicit outside report v. community looking around and asking questions is the only bit I deviate on. Lastly, I agree that we need to do a lot of work on audit trails, which I'm starting in the So maybe set that up, and then we'd be in a better place for some outside consult. I'd also like to have a more mature Stellar multisig setup for "access controls over the official shareholder register" which is all on-chain. |
* 📝 Add team page Co-authored-by: Codex <[email protected]> * 🖼️ Add logo assets * 📝 Add values page Co-authored-by: Codex <[email protected]> * 🔗 Add values heading anchors Co-authored-by: Codex <[email protected]> * 📝 Add quote attribution em dash Co-authored-by: Codex <[email protected]> * Update team.md with table format reminder Add a note to convert team member list into a table format. * 📝 Add team onboarding agreement Co-authored-by: Codex <[email protected]> * 📝 Scope section incidents section headings (#37) * 🗂️ Add incident sections file Co-authored-by: Codex <[email protected]> * 📄 Expand incident document requests * 📄 Update incident section notes * 📚 Set incident compliance manual category Co-authored-by: Codex <[email protected]> * 📚 Add root category notes * init * nwap cuteromer for natural-persono inventoor * prep fo trhreat soap exec * set icr * contractors.. * conf test * relaign swithch * twith sot * no place eh * mmeta --------- Co-authored-by: Codex <[email protected]> * 🛡️ Add attack surface incident map Co-authored-by: Codex <[email protected]> * Patch 1 (#43) * 📝 Document cloud access review checklist Co-authored-by: Codex <[email protected]> * Consolidate cloud access review checklist for IR readiness. --------- Co-authored-by: john.xlm <[email protected]> Co-authored-by: Codex <[email protected]> * small notes while discussn sutup --------- Co-authored-by: Codex <[email protected]> Co-authored-by: James <[email protected]>
|
For the gap analysis, this might not be the right format. But I mean the questions here asked, and I'd like to make things clear. Maybe by spelling some of this out, it'll be easier to write the upcoming policy docs. 1. Governance and ScopeFor most of the highlighted bullet points, I'd say the logic and explanations actually lie in the TAD3-docs repo, aside from vendors and audits, since everything is native Stellar. I am not entirely sure what a boundary or scope would be for operations, except that we define the explicit issuer agreements for service based on the TAD3-protocol repo drafting. There aren't a ton of issuer-facing responsibilities I can think of aside from onboarding and letting their investors know who their agent is. There is the separate item of issuer insider management, but that falls under the issuer disclosure docs and authentication. For the questions around a control matrix and owners, I have started scoping out what hopefully will be a visually appealing risk register. But I functionally disagree with the control framing and owner model, since that implies directive work and goes against what I see as the open-source ethos of anyone being able to work on anything. 2. Shareholder Recordkeeping ControlsThis is the one section I'd defer most to the Commission as an examining body, since they are really the only auditor I'd trust for certainty on accounting numbers. The biggest slips that need oversight come from onboarding migration from the legacy shareholder registry, since that should be the only time when a BT team member has to work with data. Right now there is a clear audit trail of who in the company assisted with what migration. That's built into the Dynamo workflows from the py-TAD3-horizon repo, but I would rather, looking forward, that it be more tightly integrated into issuers.info so that the company can self-migrate and define their own preexisting custom restrictions. As for the bullets on the register and ownership changes, those are all on-chain with noncustodial wallets once the users and assets are onboarded, so I wouldn't have much qualm there. It only gets interesting when you start monitoring trading. Certificates are a big, icky problem I've been grappling with for a long time, and I don't have a perfect answer for that at the moment. I will need to formalize the process for that in the next two weeks as I make the final call on at least the secretarial design, which will manifest in the TAD protocol item. The exception handling routes through nonroutine item processing, which is a really heavily regulated function. We haven't had any of those yet, so the workflows around them are admittedly pretty immature. Not to sound like a dead horse, but again that would ideally work through a tighter issuers.info integration. I discussed it with staff last year, and they echoed that design direction to minimize manual human involvement. For change logs, all the code will sync from GitHub, the PII databases have recurrent backups set based on the exam, and actual transactions like shareholder records are all on Stellar for maximum traceability. The only thing on the top of my mind is we don't have a reliable way to update your investor information yet, and the associated logging of signatures for that, since it has been by email in the Incumbent beta period without an actual investor app. There are no certificate issuance processes right now, but the cancellation workflows will be documented in #15. I have the tooling in place for it virtually and physically, but it doesn't scale perfectly yet since the paper gets complicated. And for the last point, ideally there are no manual changes. I had to make some for Layerlo, and I'd rather something like that outside the Lambda functions from syndicate-api generate an alert of abnormal modification as an incident notice. 3. Transfer Authorization ControlsIdentity verification is a whole WIP repo right now as we open-source the KYC. I suspect we'd develop some more advanced investor authentication workflows as that plugin improves for the app. Right now there are not hard issuer approval requirements, as I've discussed a few times in the DRS community. I've used my judgment to allow use by companies that are not obvious scams, and if we want something more nuanced than that, then I would recommend a draft in TAD3-protocol, which would lead to a more nuanced discussion of company governance. For restricted securities, aside from the manual offline arrangements discussed, the stack mostly relies on Rule 144. I haven't gotten around to writing in 144A or the QIB exemptions because I don't really respect those forms of asset allocation. 144 is a cornerstone of the protocol, which is thoroughly discussed in the exam and TAD3 docs as really the only specific citation right now. It's pretty straightforward based on time held and affiliation, which is built deeply into the issuers.info API for the company classification branch imported to the Python interface. I am not sure what segregation of duties would refer to, but there are existing website user terms covering failed transfers under the signature guarantee policy. Basically the logic is that a failed blockchain transaction will be known immediately to the user, and they can remedy whatever caused their transfer to fail or know immediately why if there is a hold data value in their investor profile for something like an affiliation. Most of the transfer questions are easily answered by evidence of signatures and processing on Stellar, with the exception of the distributor processing when you move from a certificate or Cede position. That uses a pretty centralized internal function as a team member manages the position migration from the omnibus bulk account to the user wallet. For the latter challenge, I am getting to a good position of having the CCP use their own wallet like other corporate investors. Interestingly, they aren't directly covered as a trustee by the letter of the natural-person protections in S-P. If you can offload the wallet signing with external approvals from the issuer for legacy DRS, DTC, or a paper guarantor, then there's much less trust implicit in our corporate operations. Because right now there is one user (me) who both approves and executes a migration transfer, with nobody to review that aside from the SEC. 4. Reconciliation ControlsMost of the blockchain reconciliation is done under the Py caching functions or will be done in the CRON jobs. There are two caching Dynamos right now, but I think we'll need to refactor that system with the deprecation of Horizon support. Legacy-wise, we will likely need to start running our own nodes since the Stellar RPC doesn't nicely display order and offer IDs. I plan to write a no-action letter for that through the DUNA, with a backup option through the community service validator providers. So, the exception reports are part of the nonroutine item processing or would have some kind of substantial issuer documentation accompanying them, as exemplified and implemented by referencing the hashes of their decisions in transaction meta during the beta. I would like to make these ports into AWS so we have a single secure repository, and backup processes with the records custodian, that links directly to the issuer disclosure submissions and migrations, which are largely through Lambda for onboarding. Then all that can be retained and cited as part of the Ad-6 recordkeeping requirements. As for reconciliation, the blockchain records are the official books and records. 5. Access ControlsThe workflows here are pretty immature as well since I have been the only one handling access to production data. I'm working on open-sourcing the IAMs as we speak so that it can be easier to see what's happening, but I know there's a lot more to think about when it comes to adding new team members without directing their edit actions.1 Accordingly, there's not much worth discussing in terms of team access policies at the moment, save for the independent subaccounts, which isolate tokenized PII that is especially sensitive. That is being documented in blocktransfer/CRON-jobs#7 In my mind, issuers have no access to any of these systems. There's just the mTLS connection. All of my access points use MFA, and I have it enabled for the GitHub teams. I'd like to make this much more clear with the logging work to be done here so that a public review stream can emerge from a clear endpoint. Terminated users are not removed since the statutory retention period goes on for many years. I was thinking about how to add longstanding TTLs to all their data, but that's a larger question which affects 6. Credential and Key ManagementRight now the API keys are remitted by IAM to SSO identities. They are exported manually in the SSO AWS console with up to about an 8-hour TTL. Aside from that are longstanding member credentials for the likes of GitHub or even our communication platforms like Discord. There's nothing for external service providers aside from the legacy Persona instance on the deprecated Zoho beta site, which is far out of production. Access keys, aside from the cloud service providers, are important in view of the blockchain signing keys. This is the most tangible, viewable aspect of security, which is scoped out in the #41 note. Right now we use the default AWS KMS encryption keys, which rely on the IAM access credential to get into their managed environment. S-P carves out a safeguard for encryption at rest, but I haven't expanded into managing our own content keys at this time. I have minimal to no credential rotation in place for ease and also to force reliance on 2FA, which I think should be the only point of reliance anyway. Automated Stellar key rotation, which is possible in Secrets Manager routines, also relies on long-term keys for the sake of not having high-threshold signing pairs in the client, which you'd need to update the keys. Perhaps these docs can inventory all the credentials in a central place rather than just my head, which would make it easier to check when they were last updated. For the wallets, like I said, I'd rather have account IDs of team members resolve to their wallets and then act as a signing participant with low individual weight. 7. Change ManagementChanges to TAD3 will be bureaucratic to implement. It should be clear exactly how database or infrastructure changes happen on GitHub. I do not have any procedures in place for emergency changes other than freezing all the asset holders for a stock. After that you can also use clawbacks to roll back any illicit changes. I still need to configure the IAM CRONs and link Lambda to GitHub, but in principle all deployment approvals would come from PR reviews. Once branches merge into main, they sync into AWS, so it needs the same protections of write-access team members as with the stellar.toml file we discussed with the Commission. Our repos don't have many test cases right now. So, to help this point, different projects should eventually implement unit testing. 8. Logging and MonitoringDefinitely need logging for the team. The IssuerLink design considers it for users. I put a lot of faith in the public keys as signing authenticators that obviate much of this. The user can only access their account with an initial seed phrase, which puts opsec far above most presuming paper key storage. 9. Incident ResponseUnauthorized shareholder-record change will definitely be a big one to consider in the logging. I will also need to frame out the certificate processing so that it's more digital and thus easier to track and oversee. There should never be a reconciliation failure between on- and off-chain records. That is to be guaranteed by blocktransfer/syndicate-api#3 Interestingly, the statute only requires notice to investors, and broadly that would include insiders at the issuer. I can't imagine the breach would be limited to only one class of security holders, since all PII coalesces into the database so that you can hold any TAD security. And then there is no defined escalation path to tell regulators about breaches. And legal remediation would largely depend on state laws, which don't have much you can do to preempt other than build good policy here. The questions reference record integrity, but that should really be an operational / TAD3 compliance oversight question for the team. The only breach surface I can think of would be editing your balance in the legacy shareholding database, which should be detected by the API change and is worth further logging work. 10. Backup, Recovery, and Business ContinuityThere are more substantial internal continuity and recovery processes referenced in #35. That's one of, if not the only, bits of policy work I'm yet to open-source because it deals with the physical security and logistics of the master signing keys. Once we have the multisig set up, then it should be a lot easier to make this more community-centered. We will get to start that implementation with the DUNA treasury soon. Right now we have PITR recoveries made manually in Dynamo. The upcoming CRONs will automate that to daily backups, which can then be checked into data histories for issuer review. As for the share ledger, the blockchain itself is the ultimate history for ownership recovery once onboarded. I have open-source tools for ledger reconstruction at a specific timestamp if you can't find a snapshot. I haven't needed to test the backups yet. From my visual examination of their duplicated contents, it should be a simple drop-in on the Console UI should we need them. The official register is a combination of PII and blockchain queries. The former is through AWS, who I haven't included in continuity planning since that's the role of #19, though I am reaching out to them as an alternate #22 recordkeeper. 11. Privacy and Reg S-P ReadinessWe collect shareholder names, addresses, birthdates, and more spelled out here. There actually is a defined federal scope of investor information, so it's mostly interpretive of what will serve issuers and account recovery. Issuers can access a subset of this information when they generate shareholders lists, view aggregate investor info, and other pending functions in IssuerLink. And again it uses the default AWS encryption keys (symmetric). 12. Vendor and Third-Party RiskI'm working on this in #12. There are no entities right now that provide blockchain infrastructure or identity workflows in prod. There are basic banking systems for the minimal centralized treasury, but they are inadequate for TA operations and not a vendor in my view. I wanted Bury to step up and handle some of this back in 2024 on, but now things are steering closer to a stablecoin servicer who will need to get vetted. There aren't any independent logging tools right now, and I'm trying to deprecate the old Zoho support tooling. It is still up in the air how much internal support team members we'll need as we build out the support portal wireframes. AWS has plenty of SOC and audit reports in Artifact that demonstrate cloud responsibility and compliance with industry standards. And for the blockchain systems, you can look at their total value securely stored as a proxy for hack integrity. I'm very selective with vendors because of my high quality standards. After June 3 they will all need to go through the more complete performance needs. These include periodically monitoring vendors as in the policy doc. They need to provide notice within 3 days of incidents, which are then escalated into the incident response program via issues. Footnotes
|
They use this word "binder" a lot in the mock examinations staff principle discussions from #7. I don't see it in the actual Reg, but I think the principles behind it are sound and familiar. @JamesAlfonse was kind enough to share general notes/topics which could be covered and make sense to look over.
I will go through the judgment work in this PR of figuring out what can and shouldn't be made available. I'd like to lean towards disclosure, and it looks like a lot of these items will already be covered by the likes of #9, #11, and #14. Specifically, I think these issues already lay out a strong basis for publishing the data mappings for open-source hardening.
Data Map Hardening Ideation
Builds the definitions and data map for transfer-agent customer information and sensitive customer information under 17 CFR § 248.30(d). The work should define which natural-person securityholders, records, systems, vendors, files, exports, backups, and workflows are in scope for Regulation S-P safeguards, incident response, customer notice, service-provider oversight, disposal, and recordkeeping.
Recordkeeping implementation is out of scope for this PR and should be handled separately under the transfer-agent recordkeeping issue.
Regulatory basis
Subsection (d)(3): covered institution
Subsection (d)(4): customer
Subsection (d)(5)(ii): transfer-agent customer information
Subsection (d)(6): customer information systems
Subsection (d)(9): sensitive customer information
Subsection (d)(10): service provider
Subsection (d)(11): transfer agent
Subsection (a)(3)(i): incident assessment dependency
Changes to be made