The “security.txt” proposal reached last step in the IETF process
mailarchive.ietf.org
mailarchive.ietf.org
Original HN thread: https://news.ycombinator.com/item?id=15416198
Edit: Found it, https://news.ycombinator.com/item?id=19152145
"Binding Operational Directive 20-01 Develop and Publish a Vulnerability Disclosure Policy" https://cyber.dhs.gov/bod/20-01/
> Create a security.txt15 file at the “/.well-known/” path16 of the agency’s primary .gov domain. This file must include the Policy and Contact fields, as specified in the Internet-Draft.17
But I don't really get it. Why is this a good idea?
As 'DyslexicAtheist related, if you put this page on your site, people will crawl for it and find you, and then kick off horrible automated scanners that generate bogus bugs on every site they check, and then submit bounty requests for them.
Meanwhile: what serious tester would be impeded by not having this page to refer to, if you have a /security page on your main site, which you have to have anyways for this to work? Recall that most of the fields in security.txt are themselves just URL pointers.
I also think the RFC itself is kind of funny. Do not rely on security.txt as authorization to test a site! it says, as if an RFC really had the authority to establish that, rather than an expensive court case in which both sides of the argument will have competing claims about whether testing was allowed or (the US default) not.
I suspect that if this is useful at all, it's not for serious testers but rather for people who stumble across issues by accident. There are times when I've had to phone a number in whois to report a problem, because all of the contacts on a company's website went to customer support or marketing -- and there was one occasion when I didn't report something I noticed, because the whois was anonymized.
> Will adding an email address expose me to spam bots? > > The email value is an optional field. If you are worried about spam, you can set a URI as the value and link to your security policy.
As an additional though that just occured to me, we haven't seen how authorization to probe systems (bug bounty system) would interact with GDPR, e.g a breach happens due to a "ethical" hacker, have we?
It is just like spam - cheap to send, expensive to read - except you cannot throw it out right away because it may contain actual vulnerability.
I honestly think most of the effort that goes into bug bounties and things like security.txt is just busy work for security charlatans who don’t know any better way to be spending their time.
And yet we had some interaction on the main mailing list with a journalist covering security fluff (there wasn't much substance) just recently claiming that they "didn't find the contact address" (see https://mail.coreboot.org/hyperkitty/list/coreboot@coreboot....)
So yes, one could say that the journalist should have been more diligent in their search and yet, security is one of the issues where I'd rather hear about things too often than miss something.
If that standard gains traction, I'd expect even a half-competent person in the field to know to look for the two URL patterns (or to use a tool that does it for them) which eliminates the question of "were we clear enough on how to reach out?"
My experience has been that you get the decent reports regardless of whether you even have a /security URL, but if you open a formal bounty program you instantly and permanently ratchet up the noise, because this is a way for people in lower-income countries to make money in their bedrooms with a laptop and without much thought. You shitcan the bullshit CAA record reports, but other companies without people who are good at triage on staff don't; they'll shell out a couple bucks for them, even though they're garbage.
https://www.iana.org/assignments/well-known-uris/well-known-...
Wikipedia knows some less official ones too:
https://en.wikipedia.org/wiki/List_of_/.well-known/_services...
There is also this site which lets you create create a security.txt file by filling out some fields: https://securitytxt.org/
I also think there should be a similar file for the regular expression that expresses a site’s allowable passwords.
Having a site-wide definition seems like it would require a lot of mechanics to target specifc pages or properties that may have different rules (e.g. consumer Vs. corporate logins).
I still hope companies start following NIST guidelines and stop having password rules entirely.
Website wide obviously being over-ruled by local over-rides.
Web browsers are already running random expressions from the internet, but their regex implementations have proven the rule by being fodder from exploit writers. In any event, requiring a password manager to pull the engine from Firefox or Chrome wouldn't be cool. They're more likely to use libpcre or re2, but see above.
The NAPTR DNS record type uses regular expressions for domain rewriting: https://en.wikipedia.org/wiki/NAPTR_record Not many DNS libraries support that record type as it adds alot of problematic bloat.
Evaluation is linear, but you're just evaluating your own password. In this scenario, it may make sense to just use a simple backtracking implementation, though as you alluded to early there aren't many simple ones around.
I totally agree with your concerns about scope creep increasing the attack surface.
To save (potentially rate limited) requests, the ripper software could compare the regex against a candidate password and skip it altogether.
It's like expressing in machine-readable form how many/which characters they can skip.
Plus, there's always the fact that an adversary can just, you know, go find the password requirements on the website and generate a matching regex themselves.
Of course, if the regex is something like `^password$`...
For a more complex regex, you could resort to a simplified version (eg, with larger search space). But the space of all random strings is way too huge to just generate random bitstrings and hope they match the regex.
If knowing the rules for acceptable passwords makes it significantly easier to brute force passwords, that sounds like more of an argument to not have those rules in the first place since it wouldn't take an attacker long to figure them out himself even if they aren't published. Hiding the password policy is a very weak form of security through obscurity.
I guess it would make it easier to programmatically determine which websites have insecure passoword policies (like an alphanumeric passsword no more than 8 characters long), but the problem here is the password policy, not publishing the rules.
Even the NIST recommends that sites stop requiring these arbitrary password rules as they don't actually improve password security: https://www.alvaka.net/new-password-guidelines-us-federal-go...
Maybe passwords should always just be auto-generated and people should be told to write them down in a... actually, nevermind that. Passwords should be a thing that's integrated in your browser/computer experience... this is something that can and should be handled by computers. You should only ever have to log into your computer and be secure from then on.
This whole insanity of point-to-point invention of secrets needs to die.
I had this crazy idea, whereby computers could themselves come up with very long, random sequences of bits.
They would then use these openers (couldn't think of a better word) to authenticate to each other, secured by mathematical operations, in place of passwords.
Sadly, I've never seen it used on websites, so it must not be a good idea. /s
However: The UX on the browser side is shitty as hell. Certificates display weird nagscreens, without being able to specify proper defaults like "use this cert for that site and don't bother me again". Certificate enrollment has been broken (not that the form element was ever great) by all major browsers, to be replaced by "do something in Javascript maybe, if we get around to implementing a new API some time". Oh, and no logout...
Kerberos needs a parameter at browser start or an about:config setting, is incompatible with using multiple TGTs let alone automatically selecting the right one or gasp getting a new TGT for the user from the proper KDC. The only thing that kinda works mostly is using the standard company login TGT. Oh, and logging out doesn't work...
Oh, and of course most mobile systems are broken or just unsupported.
The sorry state of browser auth is 100% on browser vendors dragging their feet on those problems that have been known for around 20 years or so. And no, webauth won't save us, it'll just be another shitshow most likely.
I always felt like one of the UX blockers for key exchange was the assumption that people couldn't be expected to learn the basics, because it's too complicated.
And every attempt to ignore or hide it has just made the entire thing more complicated or confusing.
You can shoot yourself in the foot with a gun or crash your car into a wall, and yet most people manage not to do so on a daily basis.
Sometimes simplicity is a false virtue.
Not in my experience. If I can choose anything I'll write a decent-length phrase. If I'm forced to use numbers and symbols I'll make the shortest thing I can.
Certainly there's no reason to reject a 20+ letter all-lowercase password. Apply your capital/number/symbol rules to passwords shorter than 16 characters if you must.
You are not a typical computer user. The typical computer user is Karen from accounting, and Bob from HR.
In practice, this shouldn't make things easier for password crackers, because trying to crack a password by enumerating the password space is not a normal approach. (Except for rainbow tables.)
What you'd expect a password cracker to do is construct passwords according to a model of what kinds of passwords humans actually create (regardless of the formal password requirements), and guess those. You're not trying to make sure you've covered everything -- you're just trying to make high-probability guesses before you start making low-probability guesses.
in any case, the only reasonable rules for passwords are probably a length requirement and possibly requiring numbers and/or symbols. knowing that a password must be at least 8 chars and include at least one number and a symbol does not reduce the search space by much.
It's a lot like telling someone the exact length of your password. Okay, by knowing that it's 11 characters they can skip testing 1-10... but that only lets them skip 2% of the calculations.
Hopefully the Top-1000 page would include an intro why the list should be empty.
I disagree. Password "complexity" requirements need to die and instead every site's password regex should be `.{12,64}` and then verify it's not in the dictionary or a list of leaked passwords.
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/in...
List info: https://www.ietf.org/mailman/listinfo/last-call
Guidance on the last call process: https://ietf.org/about/groups/iesg/statements/last-call-guid...
Archive of comments so far: https://mailarchive.ietf.org/arch/msg/last-call/aDZq1M-m4du-...
Once that happens, they could put up a malicious security.txt file and get free security reports sent to an email of their choice.
The /.well-known/ paths were reserved by RFC specifically because this doesn't really happen. You could _make_ a site with the defect you imagine on purpose and perhaps somewhere in the vast galaxy of sites there's already one that can be abused to do this, but they're vanishingly rare. To the point where I don't know of one even though I went looking.
One reason this prefix would be expected to be especially rare is that dot directories are both illegal in Windows (though the NT kernel has no problem with them) and special in Unix systems (they're legal but they're treated differently because it was convenient) and so any developer or administrator working with file paths for their web server is likely to disable names starting with dot at about the same time they disable names starting with slash and other shenanigans which blow stuff up.
Now of course a URL doesn't have to reflect a path on disk, but as soon as it doesn't we're talking about a slightly more clued in developer, maybe someone who has heard about security and thinks it might be a good idea.
In every Unix folder there are two special files, named '.' and '..' - the first is a link to the current folder, the second to the parent.
It was annoying to see these two files listed every time you wanted to see what was in a folder (using ls) so `ls` learnt to not show these files by default. The way that was coded was (erroneously) to not show any file whose name started with a '.'
People eventually realised that this had the unintended side effect of hiding files that start with '.' and found it useful, so the bug became a feature.
No they're not. They're mildly annoying at most. Explorer wouldn't let you directly name a file or folder ".foo", but you have always been able to type ".foo." and it would save the name as ".foo". You could also use the command prompt, or any non-explorer interface.
And they removed that annoyance entirely in Windows 10 version 1903.
In that section they got /security.txt and /keybase.txt and explained why validating based off a file in the root directory is a terrible idea.
Also, the issue was not on those sites. The issue was with keybase's logic.
Technically, the problem this specification solves is making it easier to find security related metadata for projects that typically have this information already but just not an easy to find place. So, the next logical step would be making this machine readable so IDEs, project hosting websites, and other tools, can do the right things instead of having to parse files intended for humans with no consistently used syntax.
I really don't see the issue. robots.txt works just fine, and this is simply following in its highly successful footsteps. What you suggest is change for change's sake.
In a lot of companies, any generic name email address probably goes to the trash, some group like customer service, an auto-responder that says "Sorry no" and sometimes to marketing. None of these help you. On rare occasion webmaster@ might get to someone who is useful and technical, but it might also be in a folder with thousands of other junk messages.
A better guess would be security@ . But still, wouldn't it just be easier to have a standard place to lookup who or where to go to contact someone for security issues? oh yea... security.txt
From the draft's [1] intro, which provides motivation for the proposal:
> When security vulnerabilities are discovered by independent security researchers, they often lack the channels to report them properly [...]
Occam's Razor: they lack the channel to report those vulnerabilities because the company doesn't give a damn about security, not because of some hitherto unsolved technical difficulty.
Companies that give a damn about security already have either a "catch-all" contact for security related things displayed on their contacts page, or have dedicated pages detailing what the hell you are supposed to do to report a vulnerability. Companies that don't give a damn will continue to not give a damn and will ignore your document, and will continue to suck at security until someone starts punishing them - monetarily - for such appalling behavior.
But let's leave that aside for a moment. Researchers spot vulnerabilities. Need a way to report them. So what's the solution?
Apparently, a text file with only one mandatory field...
> 3.5.3. Contact
> This directive indicates an address that researchers should use for reporting security vulnerabilities. The value MAY be an email address, a phone number and/or a web page with contact information.
...which contains... er... a catch-all contact for security related things and or a link to a contacts page detailing exactly what the hell you are supposed to do to report a vulnerability? sigh...
But the real kicker is that that the standard doesn't even require that the contact information is up to date or valid:
> 6.2. Incorrect or Stale Information
> [...] Organizations SHOULD ensure that information in this file and any referenced resources such as web pages, email addresses and telephone numbers are kept current, are accessible, controlled by the organization, and are kept secure.
In case the meaning of "SHOULD" is in question see RFC 2119 [2], but basically, they "strongly recommend" that you keep your contact information up to day - instead of, I dunno, REQUIRING it, since having a channel to properly report security vulnerabilities is the ENTIRE POINT of this exercise?
/facepalm
Are we really supposed to take this seriously? This is simply security theater.