Showing posts with label privacy. Show all posts
Showing posts with label privacy. Show all posts

20131112

Problem ID: 4120113249525612564
Entered by: Ben Simo

Healthcare.gov stores none of that data?

 

 I would tell you
we are storing the minimum amount of data,
because we think that's very important.
The hub is not a data collector.
It is actually using data centers
at the IRS,
at Homeland Security,
at Social Security
to verify information,
but it stores none of that data.

- HHS Secretary Kathleen Sebelius


Healthcare.gov does not only use data from other sources to verify information, it returns that information to the web browser. Here is some of the data returned to the web browser that I did not enter. This is data retrieved from other systems and returned to my web browser while I was filling out an insurance application on the Healthcare.gov Insurance Marketplace -- also known as "The Hub".

In the below example, I have replaced my personal information with: REDACTED.


{
"csrf" : null,
"identifier" : "REDACTED",
"datetime" : "2013-11-08TREDACTED",
"memberEligibility" : null,
"memberVerification" : {
"csrf" : null,
"requestSentDate" : null,
"resultReceivedDate" : null,
"reasonText" : null,
"resultText" : null,
"indicator" : null,
"sourceName" : null,
"memberVerificationType" : "Income",
"incomeVerification" : null,
"ssaNameControlText" : null,
"timer" : null,
"adjudicator" : null,
"verificationActiveIndicator" : false,
"memberVerificationTypeName" : null,
"memberIncarcerationVerification" : null,
"dataSourceType" : {
"csrf" : null,
"dataSourceTypeCode" : "EDS",
"dataSourceTypeName" : "EDS",
"dataSourceExternalIndicator" : true
},
"dataFoundIndicator" : true,
"verificationDeterminationDateTime" : "2013-11-08TREDACTED",
"memberResidencyVerification" : null,
"addressServicedIndicator" : false,
"medicaidStateIndicator" : false,
"memberImmigrationStatusVerification" : null,
"ssnVerified" : false,
"citizenshipVerified" : false,
"edsResponseExpected" : false,
"dhsResponseCode" : null,
"requestIdentifier" : null,
"dataExpectedIndicator" : true,
"reportedHubErrorTypeCode" : null,
"reportedHubErrorTypeName" : null,
"requestedApplicationMemberNonESIMecVerification" : [],
"mecOtherPublicNonEsiInconsistencyCount" : null,
"memberCurrentIncomeVerification" : {
"csrf" : null,
"preliminaryMedicaidMAGIIndicator" : null,
"preliminaryAPTCIndicator" : null,
"currentIncomeInconsistantExplanationText" : null,
"requestedCurrentIncomeSourceVerification" : [{
"csrf" : null,
"reportedIncomeFrequencyTypeCode" : "REDACTED",
"reportedIncomeFrequencyTypeName" : null,
"classifyingIncomeSourceTypeCode" : "REDACTED",
"classifyingIncomeSourceTypeName" : null,
"currentIncomeVerificationSourceAmount" : REDACTED (my current monthly income),
"currentIncomeVerificationStatusReceivedDateTime" : null,
"currentIncomeVerificationRequestIdentifier" : null,
"currentIncomeVerificationStatusReasonText" : null,
"currentIncomeVerificationStatusIndicator" : "Y",
"currentIncomeVerificationDataFoundIndicator" : false,
"currentIncomeVerificationDataExpectedIndicator" : true,
"currentIncomeVerificationDeterminationDateTime" : "REDACTED",
"reportedMemberCurrentIncomeSourceSystemError" : [],
"periodCycleTypeCode" : null,
"periodCycleTypeName" : null,
"percentThreshholdCurrentIncome" : null,
"percentThreshholdLimit" : null,
"definingVerificationStatusReasonTypeCode" : null,
"providingIncomeOrganization" : {
"csrf" : null,
"officeSymbolText" : null,
"businessStatusDate" : null,
"organizationStructureType" : null,
"externalOrganizationIdentifier" : [{
"csrf" : null,
"text" : "REDACTED (my employer's tax ID)",
"effectiveDate" : null,
"organizationIdentifierType" : {
"csrf" : null,
"identiferTypeName" : null,
"identifierTypeCode" : null
}
}
],
"issuerOrganization" : null,
"organizationNomenclature" : [{
"csrf" : null,
"effectiveDate" : null,
"text" : "REDACTED (my employer's name)",
"nomenclatureType" : null
}
],
"issuerUser" : [],
"organizationType" : null,
"organizationAddress" : [{
"csrf" : null,
"organizationAddressEndDate" : null,
"addressPlace" : {
"csrf" : null,
"zipPlus4Code" : "REDACTED",
"streetName1" : "REDACTED (my employer's address)",
"streetName2" : null,
"cityName" : "REDACTED",
"stateCode" : "REDACTED",
"countryCode" : null,
"concurrencyHash" : null,
"countyName" : null,
"countyFipsCode" : null
},
"organizationAddressCategoryCode" : null,
"organizationAddressStartDate" : null
}
],
"organizationIdentifier" : null,
"organizationEmail" : [],
"organizationTelephone" : [],
"companyEmailDomainName" : null,
"organizationBusinessStatus" : null,
"organizationURL" : [],
"employerOrganization" : null
},
"calculatedMonthlyIncomeEquivalentIndicator" : false,
"mostRecentHireDate" : "REDACTED (the date I was hired)",
"payPeriodEndDate" : "REDACTED (the date of my last paycheck)",
"employmentTerminationDate" : null,
"payRate" : REDACTED (the amount of my last paycheck),
"payRateFrequencyCode" : REDACTED,
"workHourQuantity" : REDACTED,
"ongoingMonthlyBenefitCreditedAmount" : null,
"personDisabledIndicator" : false
}
],
"currentIncomeInconsistantExplanationIndicator" : null,
"pendingMedicaidReasonText" : null
},
"reportedSourceSystemError" : [],
"taxHouseholdSizeDifference" : null,
"useAnnualIncome" : null,
"supportingPhysicalDocument" : [],
"applicantPregnancyCategoryIndicator" : null,
"applicantChildCategoryIndicator" : null,
"priorNumbersMatch" : false,
"notToBeCheckedStatus" : false,
"priorSSNCitizenshipDataMatch" : false,
"finalizingDataSourceType" : {
"csrf" : null,
"dataSourceTypeCode" : null,
"dataSourceTypeName" : null,
"dataSourceExternalIndicator" : false
},
"statusExpired" : null,
"chipOrMAGIEligibleStatus" : null,
"memberTitleIIWorkQuarterVerification" : null,
"priorUSCitizenIndicator" : null,
"householdSize" : null,
"incomeEligibleUnderRPCIndicator" : null,
"requestedApplicationMemberESCMecVerification" : [],
"relatedApplicationMemberVerificationTask" : null
},
"memberCalculation" : null,
"memberEventType" : "Verification",
"id" : null
}


The system also appears to return Title II Social Security income and incarceration history. As neither of these apply to me, the values are mostly null or false. The above example is the result of one of many verification events I see in the JSON object returned to my web browser. I suspect there may be even more personal data retrieved from the back end systems for people in situations that differ from mine.

I understand that this data may be needed to process an insurance application, but I can think of no good reason to return all this data to the web browser. Returning such data retrieved from back end systems to the web browser increases the damage than can be done (and the value to identity thieves) in cases that accounts are compromised. And, if one has already obtained another's Name, date of birth, and Social Security Number, I suspect that Healthcare.gov could be easily used to gather more information.

Healthcare.gov may have created a web portal into government systems that were previously secured from unauthorized access. This is reckless web design.

  Edit

20131101

Problem ID: 8014066264639015270
Entered by: Ben Simo

Healthcare.gov stores the minimum amount of data?



I would tell you we are storing the minimum amount of data, because we think that's very important. The hub is not a data collector. It is actually using data centers at the IRS, at Homeland Security, at Social Security to verify information, but it stores none of that data, so we don't want to be... -- HHS Secretary Kathleen Sebelius


I have heard some say that Healthcare.gov doesn't contain much personal information. Let's take a look.

The list below contains some of the data items that Healthcare.gov returns to the browser each time a user logs into the system and views their application.

As I haven't yet successfully completed an application due to other issues with the system, I don't know if all of these get populated. The items I have been able to successfully enter into a form and submit do get returned the next time I login.

While a user must login to access this data, this list does give us a hint as to what kind of data might be available to someone who manages to access another's account without authorization.



  • absentParentAgreementIndicator
  • absentParentIndicator
  • absentParentName
  • action
  • addressPlace
  • ageLeftFosterCareCode
  • allocatedAPTCAmount
  • amountIRSAnnualIncome
  • amountSocialSecurityBenefitsIncome
  • amountStateQuarterlyIncome
  • amountStateUnemploymentIncome
  • answerText
  • applBirthDate
  • applCityName
  • applEmailAddress
  • applFirstName
  • applFullNumberCode
  • applicantAge
  • applicantPersonInfo
  • applicationFamilyGroupTypeCode
  • applicationFamilyGroupTypeName
  • applicationMember
  • applicationMemberAnnualTaxIncome
  • applicationMemberAssociation
  • applicationMemberAssociationDate
  • applicationMemberAssociationEndDate
  • applicationMemberAssociationReasonTypeCode
  • applicationMemberAssociationReasonTypeName
  • applicationMemberAssociationStartDate
  • applicationMemberCurrentYearTaxFiler
  • applicationMemberCurrentYearTaxFilerTypeCode
  • applicationMemberCurrentYearTaxFilerTypeName
  • applicationMemberEmployeeTypeCode
  • applicationMemberEmployeeTypeName
  • applicationMemberEmployerIdentifier
  • applicationMemberFamilyTypeCode
  • applicationMemberFamilyTypeName
  • applicationMemberIdentifier
  • applicationMemberIndianStatusDate
  • applicationMemberSubscriberTypeCode
  • applicationMemberSubscriberTypeName
  • applicationMemberTaxFiler
  • applicationMemberTaxFilerTypeCode
  • applicationMemberTaxFilerTypeName
  • applicationSignature
  • applLastName
  • applMiddleName
  • applPersonIdentifier
  • applSsnNumber
  • applStateCode
  • applStreetName1
  • applStreetName2
  • applSuffix
  • applZipPlus4Code
  • aptcAttestationIndicator
  • aptcAttestationSignatureText
  • aptcReferralIndicator
  • areaNumber
  • assistorOrganizationIdentifier
  • attestedAnnualIncome
  • attestedApplicationMemberEstimatedIncome
  • attestedApplyingForCoverageIndicator
  • attestedCaretakerID
  • attestedCaretakerIndicator
  • attestedChildOfCaretakerIndicator
  • attestedImmigrationStatusIndicator
  • attestedIRSAnnualIncome
  • attestedIRSAnnualIncomeIndicator
  • attestedMonthlyIncome
  • attestedSocialSecurityBenefitsIncome
  • attestedStateQuarterlyIncomeIndicator
  • attestedStateUnemploymentIncome
  • authorizedRep
  • authorizedRepAllIndicator
  • authorizedRepReceiveNoticeIndicator
  • authorizedRepresentativeIndicator
  • authorizedRepresentativePrivilegeTypeName
  • authorizedRepSignatureIndicator
  • avgHoursPerWeek
  • babyDueQuantity
  • babyOrAdoptedInHouseholdIndicator
  • birthDate
  • blindDisabledIndicator
  • blindnessIndicator
  • calculatedAnnualIncomeVerificationIndicator
  • cardName
  • caretakerRelativeIndicator
  • changeFilingStatusPrompt
  • changeInformationAgreementIndicator
  • childApplicationMember
  • childLivesWithBothParents
  • childOfCaretakerRelativeIsEnrolledIndicator
  • childOfVeteranIndicator
  • citizenshipDocumentAlternateName
  • citizenshipStatusIndicator
  • cityName
  • claimingTaxFilerCategoryTypeCode
  • claimingTaxFilerCategoryTypeName
  • claimingTaxFilerNotApplicationMemberAssociationReasonCode
  • claimingTaxFilerNotApplicationMemberIndicator
  • claimsDependentsIndicator
  • completeImmigrationInformation
  • concurrencyHash
  • contactIndicator
  • countryCode
  • countyFipsCode
  • countyName
  • coverageEndDate
  • coverageEndedIndicator
  • coverageInDifferentStateIndicator
  • coverageStartDate
  • coverageYearAnnualIncomeExpectedToChangeIndicator
  • coverageYearDependentIndicator
  • coverageYearNumber
  • coverageYearTaxHousehold
  • coveringInsuranceProductTypeAttestation
  • creatingExchangeUser
  • creationDatetime
  • csrf
  • currentDate
  • currentYearTaxHouseholdIdentifier
  • custodialClaimingTaxFilerIndicator
  • custodialParentClaimingTaxFilerIndicator
  • dateGainedEligibleImmigrationStatus
  • dateLostCoverage
  • dateMarried
  • dateMoved
  • dateOfAdoption
  • dateProspectiveLostCoverage
  • dateReleasedFromIncarceration
  • deceasedIndicator
  • definedPersonEthnicity
  • definingApplicationMemberContactMethod
  • definingCircumstanceChangeAttestation
  • definingContactMethodTypeCode
  • definingContactMethodTypeName
  • definingInsuranceApplicationOriginTypeCode
  • definingInsuranceApplicationOriginTypeName
  • definingMemberMaritalStatusTypeCode
  • definingMemberMaritalStatusTypeName
  • definingMemberMedicaidAnchorTypeCode
  • definingMemberMedicaidAnchorTypeName
  • dependentFilerStateMatch
  • dependentIndicator
  • deprivedChildIndicator
  • dhsNextStep
  • discrepantMonthlyIncomeIndicator
  • doNotKnowIncomeIndicator
  • durationOfMembershipHSM
  • edsCalled
  • eeAcountUsername
  • effectiveDate
  • electronicNoticeIndicator
  • elephoneCountryName
  • eligibilityResultsNoticeUrl
  • eligibleESIRetirementCobraParentIndicator
  • eligibleImmigrationStatusIndicator
  • eligibleITUIndicator
  • eligibleNewPlansIndicator
  • emailAddressFullText
  • emailAddressIdentifier
  • emailAddressName
  • employerInsurance
  • employmentAuthorizationCategoryIdentifier
  • enrolledCoverageIndicator
  • enrollmentGroups
  • enrollmentPeriodReason
  • ethnicityTypeCode
  • exchangeState
  • exchangeUserIdentifier
  • exitExpeditedIncomeIndicator
  • expectedDeliveryDate
  • extensionNumber
  • fatherAvgHoursWeek
  • federalIndianStatusCode
  • federalIndianStatusName
  • financialAssistanceIndicator
  • firstName
  • fixedAddressIndicator
  • forwardingPhysicalDocument
  • fosterCareEndedBecauseOfAge
  • fosterCareIndicator
  • fosterCareStateCode
  • fromBatch
  • ftiUsedIndicator
  • fullTelephoneNumberCode
  • futureDependents
  • genderTypeCode
  • goodCauseExemptionIndicator
  • goodCauseExemptionText
  • greaterThanFPLIndicator
  • hadMedicaidDuringFosterCareIndicator
  • hash
  • hasSpouseIndicator
  • hasTaxFilingRequirementIndicator
  • healthcareSharingMinistryActiveEndDate
  • healthcareSharingMinistryActiveStartDate
  • healthcareSharingMinistryCity
  • healthcareSharingMinistryCongregation
  • healthcareSharingMinistryCounty
  • healthcareSharingMinistryDistrict
  • healthcareSharingMinistryExistIndicator
  • healthcareSharingMinistryName
  • healthcareSharingMinistryState
  • healthcareSharingMinistryZip
  • helpingApplicationAssisterTypeCode
  • helpingApplicationAssisterTypeName
  • helpingApplicationAssistor
  • hispanicOriginIndicator
  • hubResponded
  • hubTransferAckRequestID
  • hubTransferAckStatusCode
  • hubTransferTimeStamp
  • id
  • identifier
  • idProofed
  • idsCalledCounter
  • immigrationVerificationComplete
  • impactingMedicaidCHIPIncomeMemberIdentifier
  • incarcerationEndDate
  • incarcerationStartDate
  • incarcerationStatusIndicator
  • incarcerationType
  • incomeSubjectToFederalRestrictions
  • indianStatusEvidenceDocument
  • institutionalizedIndicator
  • insuranceApplicationTypeCode
  • insuranceProductTypeCode
  • insuranceProductTypeName
  • insuredIndicator
  • isDentalPlanPreferred
  • isEnrolled
  • isIncarcerated
  • isMarriedIndicator
  • isMultiTaxHouseholdIndicator
  • issuingCountryCode
  • issuingCountryName
  • knownPersonWorkType
  • largeAssetIndicator
  • lastModifiedBy
  • lastName
  • lastRecordIndicator
  • lawfulPresenceEndDate
  • lawfulPresenceStartDate
  • lawfulPresenceStatusIndicator
  • lineNumber
  • livedInUS5YearIndicator
  • liveOutsideStateTemporarilyIndicator
  • livesWithAdultTaxClaimerIndicator
  • livesWithCustodialParentNotApplicationMemberIndicator
  • livesWithIndcator
  • livesWithMinorAgeDependentIndicator
  • livesWithOtherParentNotClaimerIndicator
  • longTermCareIndicator
  • losingCurrentPlanIndicator
  • marriedFilingJointlyIndicator
  • maxProposedCoverageEffectiveDate
  • medicaidCorrectExchange
  • medicaidDeterminationIndicator
  • medicaidEligibilityDeterminationDate
  • medicaidEligibilityReasonText
  • medicaidHousehold
  • medicaidHouseholdAnchor
  • medicaidRequirementAgreementIndicator
  • medicaidStudentResidencyRulesApplies
  • medicaidTaxRoleTypeCode
  • medicaidUndeterminedFamilyNotProvidedIndicator
  • member
  • memberAssociationRoleTypeCode
  • memberAssociationRoleTypeName
  • memberEmployer
  • memberEmploymentStatus
  • memberEvent
  • memberExemptions
  • memberIndianStatus
  • memberRoleType
  • memberSchoolStatus
  • memberSignatureText
  • memberStatusType
  • memberType
  • messagePlace
  • middleName
  • monthlyIncomeGreaterThanFPLIndicator
  • motherAvgHoursWeek
  • movedFromCountyCode
  • movedFromZipCode
  • nationalProducerNumber
  • needsSeparateApplicationIndicator
  • noAPTCTaxFilerNotProvidedIndicator
  • noFixedAddressIndicator
  • nonCustodialClaimerBothMFSParentsApplyingIndicator
  • noncustodialClaimerNonCustodialApplyingIndicator
  • nonCustodialParentClaimingTaxFilerIndicator
  • nonCustodialParentIndicator
  • nonCustodialParentName
  • nonEmployerSponsoredCoverageIndicator
  • nonESInsurance
  • nonParentProvidesPrimaryCare
  • notChosenPlanIndicator
  • noticeDate
  • number
  • objectIdentifier
  • onlyApplicantIndicator
  • optionStudentResidency
  • organization
  • organizationNomenclatureText
  • otherCoverageWithin6MonthsIndicator
  • otherEthnicityText
  • otherHealthInsuranceIndicator
  • otherRaceText
  • parentApplicationMember
  • parentCaretakerIndicator
  • parentOfStudentLivingInStateIndicator
  • parentWorkQuartersIndicator
  • penaltyOfPerjuryAgreementIndicator
  • peopleTakenCareOf
  • performVerificationIndicator
  • personAddress
  • personAddressCategoryCode
  • personAddressEndDate
  • personAddressRelationshipRoleCode
  • personAddressStartDate
  • personAmericanIndianAlaskanNativeIndicator
  • personCitizenshipStatus
  • personEmail
  • personEmailEndDate
  • personEmailStartDate
  • personEmailVerifiedDateTime
  • personEmailVerifiedIndicator
  • personForWorkQuarterExcludedIndicator
  • personIdentification
  • personIdentificationEffectiveDate
  • personIdentificationEndDate
  • personIdentificationOtherTypeText
  • personIdentificationType
  • personIdentificationTypeCode
  • personIdentificationTypeName
  • personIdentificationUpdateQuantity
  • personIdentificationValueText
  • personIdentifier
  • personIdentityProofingEventSourceTypeCode
  • personIDProofingEvents
  • personIDProofingEventTask
  • personName
  • personRace
  • personRecognizedTribeIndicator
  • personSSN
  • personTelephone
  • personTelephoneCategoryCode
  • personTelephoneEndDate
  • personTelephoneRelationshipRoleCode
  • personTelephoneStartDate
  • personTrackingNumber
  • personTypeCode
  • phoneNumber
  • physicalDocumentTypeCode
  • physicalDocumentTypeName
  • placeRelationshipRoleCode
  • planSelectButtonStatus
  • postalStateCode
  • potentialSeasonalWorkerIndicator
  • pregnancyIndicator
  • preliminaryChildOfCaretakerRelative
  • preliminaryParentCaretakerRelative
  • priorInsuranceEndDate
  • priorTo1956Indicator
  • privacyPolicyAgreementIndicator
  • promptParentAddressCount
  • promptSpouseAddressCount
  • proofingEsdEngagedIndicator
  • proofingEventBarcodeIdentifier
  • proofingEventDate
  • proofingEventRidpSessionIdentifier
  • proofingEventSuccessIndicator
  • proposedCoverageStartDate
  • proposedSEPCoverageEffectiveDate
  • provideAbsentParentInfoIndicator
  • providedInsuranceApplicationSecurityQuestionAnswer
  • provideOtherSSNAgreementIndicator
  • qhpCorrectExchange
  • qualifyPlanSelectIndicator
  • questionAnswerAssignedDateTime
  • receivedCurrentIncomeSourceAttestation
  • receivedIndianHealthServicesIndicator
  • receiveITUIndicator
  • receiveNotificationIndicator
  • recentlyUnemployedIndicator
  • recentlyUnemployedStartDate
  • registerToVoteIndicator
  • relationshipNameText
  • relationshipToTaxFilerTypeCode
  • requestingCoverageIndicator
  • requestingCoverageMemberQuantity
  • requestingDentalCoverageIndicator
  • requestingFinancialAssistanceIndicator
  • residencyEndDate
  • residencyStartDate
  • residencyState
  • residencyStateList
  • residencyStatusIndicator
  • resideTogetherIndicator
  • resideWithCustodialParentExcludedIndicator
  • returnToValidateAnnualIncome
  • reuseTaxDataPermissionIndicator
  • salutationName
  • sameNameIndicator
  • sameSexSpouse
  • saveVerifiableStatus
  • seasonalWorkerIndicator
  • selectedInsuranceApplicationSecurityQuestionTypeCode
  • selectedInsuranceApplicationSecurityQuestionTypeName
  • serviceAreaChangeIndicator
  • sevisIDIndicator
  • signatureDate
  • signatureEmployeeTypeName
  • signatureName
  • signatureTypeCode
  • skipIncomeInfoIndicator
  • soleIncomeApplicationIndicator
  • specialRuleForTaxHouseholdApplies
  • spokenLanguage
  • spouseHouseholdMemberIndicator
  • spouseInHouseholdIndicator
  • spouseOfVeteranIndicator
  • spouseWorkQuartersIndicator
  • ssnAlternateName
  • ssnIDSConfirmed
  • stateCode
  • stateEmployeeChildIndicator
  • stateHealthBenefitAvaliableIndicator
  • stateHealthBenefitOfferedIndicator
  • statusIDSConfirmed
  • streetName1
  • streetName2
  • studentIndicator
  • studentParentInStateIndicator
  • studentResidencyAgeThreshold
  • submissionDatetime
  • subordinateMember
  • subscribedInsuranceProductTypeAttestation
  • suffix
  • suffixName
  • superordinateMember
  • supportingPhysicalDocument
  • switchNumber
  • systemUserIdentifier
  • systemUserLoginName
  • systemUserName
  • taxFilerIndicator
  • taxFilingStatusChangeIndicator
  • taxFilingStatusTypeCode
  • taxHouseholdEscMecVerification
  • taxReturnFilingStatusTypeCode
  • taxReturnFilingStatusTypeName
  • taxYear
  • telephoneCountry
  • telephoneCountryCode
  • telephonePlace
  • tobaccoLastUsed
  • tribalAmount
  • tribeCode
  • tribeName
  • tribeStateCode
  • unpaidBillIndicator
  • userLastModifiedDateTime
  • usMailIndicator
  • validatingAddressStatusType
  • veteranIndicator
  • withdrawApplicationIndicator
  • writtenLanguage
  • zipPlus4Code


Given the sheer volume of personal information to which Healthcare.gov at least has access, security should be made a top priority.

  Edit

20131027

Problem ID: 9106694475953006780
Entered by: Ben Simo

Does Healthcare.gov violate their own privacy policy?

I have read some reports that we need not be overly concerned about Healthcare.gov security because the site doesn't keep much personal information. While we can't look into the site from outside to see what they do internally with the personal information they collect, we can view their published privacy policies and the data returned to the browser.

So let's take a look at a couple of things that concern me...


Use of 3rd Party Web Analytics Tools

The Privacy Policy says:

HealthCare.gov uses a variety of Web measurement software tools. We use them to collect the information listed in the “Types of information collected” section above. The tools collect information automatically and continuously. No personally identifiable information is collected by these tools.
However, the system sends some personal information to 3rd party analytics and advertising companies. For example, the following two images show my username and password reset codes being sent to a couple of 3rd parties:





Not only does this violate Healthcare.gov's stated privacy policy, it likely also violates the privacy policies of these 3rd parties. Even if the 3rd parties receiving the data can be trusted to not abuse the data, they may not protect it as personally identifiable information should be protected -- especially if they are not expecting to receive personal information.


UPDATE 10/31: It appears that the sending of usernames and password reset codes to 3rd parties has been fixed. I hope that there was an overall review and correction of cases in which this occurred rather than just patching the specific instances I have identified.

UPDATE 11/02: I now see another case in which Healthcare.gov is sending a 3rd party account activation codes (this is also the password reset code). This is occurring when I follow the account activation link I received when I created my account -- even with the site currently being down for maintenance.



It seems that they may have corrected the two specific examples I previously reported without taking the effort to seek out other cases in which they are unintentionally sending personal information to 3rd parties. Perhaps more remain.

UPDATE 11/16: The above issue appears to have been fixed. I no longer see account activation or password reset codes being sent to 3rd parties.

The FTC has previously fined MySpace, Facebook, and others for doing just this: sending private information to 3rd parties that they promised to not share. For example:


The F.T.C. asserted that from January 2009 through June 2010, and again from October 2010 through October 2011, Myspace, a social media Web site, transmitted information, including internal identification numbers of users, and their ages and genders, to outside ad networks that served ads to Myspace.

Using that information, the F.T.C. said, third parties could obtain the user’s name and other personal information and use a file placed on the user’s computer to view a history of Web sites the user had visited.




Returning Previously-Provided Information Back to the Browser

 The published Privacy Policy says:
If you choose to provide us with personally identifiable information through an email message, request for information, paper or electronic form, questionnaire, survey, etc., we will maintain the information you provide only as long as needed to respond to your question or to fulfill the stated purpose of the communication.

If in order to contact you we store your personal information in a record system designed to retrieve information about you by personal identifier (name, personal email address, home mailing address, personal or mobile phone number, etc.), we will safeguard the information you provide in accordance with the Privacy Act of 1974, as amended (5 U.S.C. Section 552a).

The privacy policy says that information will be retained only as needed to fulfill a request. While it doesn't explicitly say this, I believe this also implies they won't respond with previously-provided information that's not needed to fulfill the current request. They do this in parts of the site. For example, you can change your security question answers but not see them.

However, when I log into the system, it returns a whole bunch of information I previously provided that is not needed for the purpose of logging into the system. This information is sent encrypted, but it does create unnecessary opportunity for the information to be compromised should an account or a user's computer become compromised.

For example, here's one data structure containing my information (none of it from the actual insurance application) sent to by browser when I login to my account: (with my personal information removed)

{
"csrf":null,
"systemUser":{
"csrf":null,
"firstName":"FIRST NAME",
"lastName":"LAST NAME",
"middleName":null,
"suffix":null,
"emailAddress":"CURRENT EMAIL ADDRESS",
"systemUserLoginName":"USERNAME",
"dateOfBirth":"BIRTHDATE",
"addressLine1":"ADDRESS",
"addressLine2":"",
"city":"CITY",
"state":"STATE",
"zipCode":"ZIPCODE",
"phoneNumber":"PHONE",
"phoneNumberExt":null,
"ssn":null,
"language":null,
"userLevel":null,
"systemUserIdentifier":"A USER ID",
"registeredStateCode":"STATE",
"personIdentifier":"SOME OTHER USER ID",
"userEmailConfirmationUuId":null,
"userTrackingNumber":"A THIRD USER ID",
"exchangeUserInsuranceApp":[
{
"csrf":null,
"exchangeUserId":"A FOURTH USER ID",
"insuranceAppId":"AN INSURANCE APPLICATION ID",
"insuranceAppStatus":"STARTED",
"state":"STATE"
},{
"csrf":null,
"exchangeUserId":"A FIFTH USER ID",
"insuranceAppId":null,
"insuranceAppStatus":null,
"state":"STATE"
}
],
"termsAccepted":true,
"emailConfirmationId":"THE UNCHANGING CODE USED TO ACTIVATE AN ACCOUNT AND RESET PASSWORDS",
"isAuthorizedRep":null,
"receiveEmailNotificationIndicator":true,
"receiveTelephoneNotificationIndicator":true,
"receiveMarketingMessageIndicator":true,
"personIDProofingEvent":[
{
"csrf":null,
"proofingEventDate":"THE DATE I VERIFIED MY IDENTITY VIA EXPERIAN",
"personIdentityProofingEventSourceTypeCode":"2",
"proofingEventSuccessIndicator":true,
"proofingEsdEngagedIndicator":false,
"proofingEventRidpSessionIdentifier":"SOME KIND OF SESSION ID",
"personIdentifier":null,
"systemUserIdentifier":null,
"systemUserLoginName":null,
"proofingEventBarcodeIdentifier":null,
"personIDProofingEventTask":[],
"applicantPersonInfo":{
"csrf":null,
"applFirstName":"FIRSTNAME",
"applMiddleName":"",
"applLastName":"LASTNAME",
"applSuffix":"",
"applBirthDate":"DATE OF BIRTH",
"applEmailAddress":"EMAIL ADDRESS AT TIME OF IDENTIY VERIFICATION",
"applFullNumberCode":"PHONE",
"applStreetName1":"ADDRESS",
"applStreetName2":"",
"applCityName":"CITY",
"applStateCode":"STATE",
"applZipPlus4Code":"ZIPCODE",
"applSsnNumber":"",
"applPersonIdentifier":null
},
"forwardingPhysicalDocument":[]
}
]
},
"generatedPersonExchangeSystemIdentification":"AND A 6TH USER ID"
}

See any personal information in there? This doesn't include my social security number, but I never gave that to the system when it asked. I suspect that if I had provided it, it would have been returned with the other information. (UPDATE 11/01: I have confirmed that if a social security number is provided to verify one's identity, it is returned to the browser with each login -- even after the identity verification has been completed.)

Once my identity has been verified, I see no purpose for hanging onto the details I provided to identify my identity. That data is also stored elsewhere.

I expect a secure system -- especially one containing so much personal information -- to only return data to the browser when it is needed, and only as much as is needed.


UPDATE 11/16: I no longer see ID proofing information returned in accounts created weeks ago. However, the same information exists in the completed insurance applications and is being returned to the browser in a data object that contains all the data entered into the application and some data retrieved from other sources.

  Edit

20131013

Problem ID: 6249509623296017713
Entered by: Ben Simo

Healthcare.gov form requires answering of optional questions

The Healthcare.gov insurance application asks the usual optional questions about race and ethnicity. Although the system says these are optional, radio buttons are used to make the selections. Therefore, if one clicks a button (accidentally or intentionally), there is no option remove the selection. This then puts the applicant in a position that they are forced to answer an optional question.








Furthermore, as I clicked around in an attempt to truthfully not answer the question I was being forced to answer, I got the form into a state that it would not let me continue even when I answered the required optional questions.





  Edit
Problem ID: 54205674288555338
Entered by: Ben Simo

Healthcare.gov processed an application I did not submit

I started an insurance application at Healthcare.gov in search of options for a family member who is not covered by my employer's plan.

I abandoned the application. The status screen shows that my application is "In progress".



However, I got a notification that my application had been processed and my eligibility results are available.

How is it that my application was processed when I did not submit the application?

Additionally, I had explicitly selected the option at the end of the application stating that I do not agree to the terms for submitting the application.  However, it appears that the system ignored my telling it that I do not want them to pull the necessary info to process the application and processed my application anyway.




Not only did they process an application I did not submit, the letter says they referred my application to a state agency -- a state agency with which I did not authorize them to share any information. (BTW, this particular state agency outsources application processing and claims that state and federal privacy laws don't apply to them.)





Furthermore, the decision letter I received says that I have 10 days to appeal any decisions or I will be ineligible for coverage in the future. Now, they've put me in a position that I have to get Healthcare.gov and a state agency to collaborate to withdraw the application I never submitted.

I now have zero trust in Healthcare.gov.




UPDATE 10/27: 

To clarify: "processed an application" refers to the first step -- determining eligibility to purchase insurance via the Marketplace. I've seen much speculation that assigns malice to a variety of parties as to why and how this occurred. I doubt that this is intentional. My application got into a bad state in the software systems. In the two weeks since the application was processed (and I wrote this blog post), I have not yet received a call from the state agency the letter said would be contacting me. It is likely that the application never for forwarded as the letter states.

My distrust of the software systems is based on the apparent lack of sufficient testing of the individual components and the full Healthcare.gov system; not malice on the part of any individual or group. 

HHS Secretary Kathleen Sebelius testified "We didn't have enough testing, specifically for high volumes, for a very complicated project. We had two years and almost no testing." Regardless of the political influence, building a complex system like Healthcare.gov without testing and adjusting design as you go is a recipe for failure. This is especially evident in the security issues that I've observed -- especially, those noted in my Appalled! post.



UPDATE 11/03:

I've found something interesting in the data for the application for which I got an eligibility determination without submission. I see many memberEvent entries when appears to mostly be referencing eligibility checks. The datetime values listed for these appear to be spread out over the time during which I was attempting to fill out the application. This suggests that Healthcare.gov might be doing eligibility processing before the form is submitted. I'm guessing, so I might be wrong. I do find it interesting that so much history data is being collected behind the scenes as applications are being completed.




  Edit

20110907

Problem ID: 6090941966524022008
Entered by: Ben Simo

Never share your computer with your girlfriend


I found this old bug report in the Mozilla bug database. Is exposing liars a bug or a feature? ;)

Bug 330884 - When different users on one system choose to save or not save passwords for sites, any other user can see sites they not only saved passwords for but can also see what other users have been saving/never saving passwords for.
naomirocks 2006-03-17 15:48:21 PST

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1

This privacy flaw has caused my fiancé and I to break-up after having dated for 5 years.

Basically, we share one computer but under separate Windows XP user accounts. We both use Mozilla Firefox -- well, he used to use it more than I do but now we don't really use it. The privacy flaw is this: when he went to log-in under his dating sites (jdate.com, swinglifestyle.com, adultfriendfinder.com, etc.), Mozilla promptly asks whether or not he'd like Firefox to save the passwords for him. He chose never, obviously. However, when he logged off his user account, and I logged onto my Windows XP account X amount of days later, I decided to use Firefox because hey -- it loaded everything much more efficiently, was better to work on with website designs and is a lot more stable than IE7beta2.

Firefox prompted whether or not I'd like it to save my password for logging into my website. I chose never and changed my mind. I went into the Password Manager to change the saved password option from Never to Always and that's when I saw all these other sites that had been selected as "Never Save Password." Of course, those were sites I had never visited or could ever dream of visiting.

Then I realized who, how and what... and sh*t hit the fan. Your browser does not efficiently respect the privacy of different users for one system.

Reproducible: Always

  Edit

20100119

Problem ID: 7036879601597889799
Entered by: Ben Simo

Privacy Options



While viewing my account information on the DirecTV website, I notice a section just below my credit card information labeled Privacy Options. Not knowing what this is, I click the Update link next to the privacy header. The dialog above is displayed.

It shows the Anonymous option applies to my account. I don't remember authorizing anyone to collect information about TV viewing habits. Perhaps it was buried in one of the long legal contract or terms documents I signed or electronically accepted when I signed up for service.

Then, as I get to the part explaining that data are used to provide a "more personalized browsing experience", I'm not sure if these options apply to my use of the DirecTV web site or my using their DVR to watch TV. Are they asking to track my web browsing or what I watch on TV, or maybe even every button press on the DVR remote?

In my opinion, asking users to opt in or out of being monitored without explaining the context of that monitoring is wrong.

Regardless of what they are tracking, I choose to Opt-Out.


  Edit