Select Page

Plaintext passwords – 2023 edition – Issaquah School District

Well – I thought the bad practice of not hashing passwords was behind us, but no, today another example popped up.

If you want a primer on password hashing – take a read of this from Troy Hunt (of Have I been pwned fame).

Short version – hashing is a one-way mathematical function that for an input, always produces the same output. It’s best practice to store passwords for websites as a hashed value (or hash+salt to be honest) – so in the event that the site database is compromised, there’s a list of usernames or emails, but no passwords. It also means that you can’t get back to your old password – so you should never see a “mail me my password” or get emails saying “here is your username and password”.

So, back to the school district. Their jobs page has a “create account” link, which lets you do the email address and password thing.

imageimage

So far, so good. At login – there is the usual credentials page. But what’s that? A “Send Password” button.

image

And, as you’ve guessed, it sends back a cleartext password, to the email account used to sign up.

image

Behind all of this are job applications, and also PII including resume, certification information, disclosures, address and phone numbers.

image

So what now?

The diligent thing is to contact someone, a Data Registrar, a Web Master – anyone really.

That’s going to be in the next blog post.

Azure tagging. Revisiting case sensitivity.

As we keep seeing – Azure tag names are not case-sensitive, until they are.

Per the documentation https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/tag-resources

Tag names are case-insensitive for operations. A tag with a tag name, regardless of the casing, is updated or retrieved. However, the resource provider might keep the casing you provide for the tag name. You’ll see that casing in cost reports.

Tag values are case-sensitive.

Per the now four year old bug, Azure Resource Manager itself should respect this (i.e. case insensitive and case preserving) https://github.com/Azure/azure-powershell/issues/9271

Then we get issues with:

CostCenter, Costcenter, costcenter – all being different depending on the tooling in use.

SLES 15 SP5

Released back in May, this looks to be stable.

Update is (again) super clean:

zypper migration

select the migration target (i.e. SLES 15 SP5), approve the EULA, wait a while.

I’ve been flagging the ease of upgrade for several years. SUSE have this nailed.

Update: except Redis got a tad confused. Needed to get it re-setup to start correctly.

Update again: openSUSE build server saves the day again: Install package openSUSE:Backports:SLE-15-SP5 / php8-redis along with https://citizix.com/how-to-install-configure-redis-6-on-opensuse-leap-15-3

More kusto – reading all Azure VNETs and their associated network space

Another one, again demonstrating the use of extend and mv-expand to pull out the multi-valued array.

resources

| join kind=leftouter (ResourceContainers | where type==’microsoft.resources/subscriptions’ | project SubName=name, subscriptionId) on subscriptionId

| where type == “microsoft.network/virtualnetworks”

| extend vnetCount =array_length(properties.addressSpace.addressPrefixes)

| mv-expand vnet = properties.addressSpace.addressPrefixes

| project SubName, resourceGroup, name, vnetCount, vnet

| order by tostring(vnet) asc

More kusto – Reading email recipients for Azure Action Groups

Lots of hygiene work, including cleaning up Azure Action Groups that send to individual emails. That’s a red flag and anti pattern.

Here’s the KQL to read the Action Groups, their subscriptions, and expand out the recipients.

It’s easy work to continue to audit this, and clean up the dead wood.

resources

| join kind=leftouter (ResourceContainers | where type==’microsoft.resources/subscriptions’ | project SubName=name, subscriptionId) on subscriptionId

| where type == “microsoft.insights/actiongroups”

| extend emailRecsCount =array_length(properties.emailReceivers)

| mv-expand emailRecs = properties.emailReceivers

| project SubName, resourceGroup, name, emailRecsCount, emailRecs.name, emailRecs.status, emailRecs.emailAddress

| order by [‘name’] asc