Fix Broken Links
Signed-off-by: Tommy <contact@tommytran.io>
@ -32,6 +32,7 @@ params:
|
||||
favicon16x16: "/favicon-16x16.png"
|
||||
favicon32x32: "/favicon-32x32.png"
|
||||
apple_touch_icon: "/apple-touch-icon.png"
|
||||
safari_pinned_tab: "/safari-pinned-tab.png"
|
||||
|
||||
label:
|
||||
text: "PrivSec.dev"
|
||||
|
@ -159,7 +159,7 @@ I readily concede to several points in favor of source availability from a secur
|
||||
|
||||
- Source code can make analysis _easier_ by _supplementing_ source-independent approaches. The lines between the steps I mentioned in the [four-step vulnerability-fixing process](#how-security-fixes-work) are blurry.
|
||||
|
||||
- Patching vulnerabilities is important. Source availability makes it possible for the community, package maintainers, or reporters of a vulnerability to patch software. Package maintainers often blur the line between "packager" and "contributor" by helping projects migrate away from abandoned/insecure dependencies. One example that comes to mind is the Python 2 to Python 3 transition for projects like Calibre.[^12] Being able to fix issues independent of upstream support is an important mitigation against [user domestication](../../../../2021/01/27/whatsapp-and-the-domestication-of-users/).
|
||||
- Patching vulnerabilities is important. Source availability makes it possible for the community, package maintainers, or reporters of a vulnerability to patch software. Package maintainers often blur the line between "packager" and "contributor" by helping projects migrate away from abandoned/insecure dependencies. One example that comes to mind is the Python 2 to Python 3 transition for projects like Calibre.[^12] Being able to fix issues independent of upstream support is an important mitigation against [user domestication](https://seirdy.one/posts/2021/01/27/whatsapp-and-the-domestication-of-users/).
|
||||
|
||||
- Some developers/vendors don't distribute binaries that make use of modern toolchain-level exploit mitigations (e.g. <abbr title="Position-Independent Executables">PIE</abbr>, <abbr title="ReLocation Read-Only">RELRO</abbr>, stack canaries, automatic variable initialization, [<abbr title="Control-Flow Integrity">CFI</abbr>](https://clang.llvm.org/docs/ControlFlowIntegrity.html), etc.[^13]). In these cases, building software yourself with these mitigations (or delegating it to a distro that enforces them) requires source code availability (or at least some sort of intermediate representation).
|
||||
|
||||
@ -217,7 +217,7 @@ Releasing source code is just one thing vendors can do to improve audits; other
|
||||
|
||||
[^11]: As an aside: your security isn't necessarily improved by "disabling" it, since it still runs during the initial boot sequence and does provide some hardening measures of its own (e.g., a <abbr title="Trusted Platform Module">TPM</abbr>).
|
||||
|
||||
[^12]: In 2017, Calibre's author actually wanted to stay with Python 2 after its EOL date, and [maintain Python 2 himself](https://bugs.launchpad.net/calibre/+bug/1714107). Users and package maintainers were quite unhappy with this, as Python 2 would no longer be receiving security fixes after 2020. While official releases of Calibre use a bundled Python interpreter, distro packages typically use the system Python package; Calibre's popularity and insistence on using Python 2 made it a roadblock to getting rid of the Python 2 package in most distros. What eventually happened was that community members (especially [Eli Schwartz]("https://github.com/eli-schwartz") and [Flaviu Tamas](https://flaviutamas.com/) submitted patches to migrate Calibre away from Python 2. Calibre migrated to Python 3 by [version 5.0](https://calibre-ebook.com/new-in/fourteen).
|
||||
[^12]: In 2017, Calibre's author actually wanted to stay with Python 2 after its EOL date, and [maintain Python 2 himself](https://bugs.launchpad.net/calibre/+bug/1714107). Users and package maintainers were quite unhappy with this, as Python 2 would no longer be receiving security fixes after 2020. While official releases of Calibre use a bundled Python interpreter, distro packages typically use the system Python package; Calibre's popularity and insistence on using Python 2 made it a roadblock to getting rid of the Python 2 package in most distros. What eventually happened was that community members (especially [Eli Schwartz](https://github.com/eli-schwartz) and [Flaviu Tamas](https://flaviutamas.com/) submitted patches to migrate Calibre away from Python 2. Calibre migrated to Python 3 by [version 5.0](https://calibre-ebook.com/new-in/fourteen).
|
||||
|
||||
[^13]: Linux distributions' CFI+<abbr title="Adress-Space Layout Randomization">ASLR</abbr> implementations rely executables compiled with CFI+PIE support, and ideally with stack-smashing protectors and no-execute bits. These implementations are flawed (see [On the Effectiveness of Full-ASLR on 64-bit Linux](https://web.archive.org/web/20211021222659/http://cybersecurity.upv.es/attacks/offset2lib/offset2lib-paper.pdf) and [Brad Spengler's presentation comparing these with PaX's own implementation](https://grsecurity.net/PaX-presentation.pdf)).
|
||||
|
||||
|
@ -31,7 +31,7 @@ The time-limited code is then derived from the shared secret and the current tim
|
||||
|
||||
If you have a [Yubikey](https://www.yubico.com/), you should store the "shared secrets" on the key itself using the [Yubico Authenticator](https://www.yubico.com/products/yubico-authenticator/) app. After the initial setup, the Yubico Authenticator will only expose the 6 digit code to the machine it is running on, but not the shared secret. Additional security can be set up by requiring touch confirmation, protecting digit codes not in used from a compromised operating system.
|
||||
|
||||
Unlike [WebAuthn](#fido-fast-identity-online), TOTP offers no protection against [phishing](https://en.wikipedia.org/wiki/Phishing) or reuse attacks. If an adversary obtains a valid code from you, they may use it as many times as they like until it expires (generally 60 seconds + grace period).
|
||||
Unlike [WebAuthn](#fido2-fast-identity-online), TOTP offers no protection against [phishing](https://en.wikipedia.org/wiki/Phishing) or reuse attacks. If an adversary obtains a valid code from you, they may use it as many times as they like until it expires (generally 60 seconds + grace period).
|
||||
|
||||
Despite its short comings, we consider TOTP better and safer than Push Confirmations.
|
||||
|
||||
|
@ -6,7 +6,7 @@ tags: ['Operating Systems', 'Android', 'Privacy', 'Security']
|
||||
author: Tommy
|
||||
---
|
||||
|
||||
Android is a secure operating system that has strong [app sandboxing](https://source.android.com/security/app-sandbox), [Verified Boot](https://source.android.com/security/verifiedboot) (AVB), and a robust [permission](permission) control system.
|
||||
Android is a secure operating system that has strong [app sandboxing](https://source.android.com/security/app-sandbox), [Verified Boot](https://source.android.com/security/verifiedboot) (AVB), and a robust [permission](https://developer.android.com/guide/topics/permissions/overview) control system.
|
||||
|
||||
When you buy an Android phone, the device's default operating system often comes with invasive integration with apps and services that are not part of the [Android Open-Source Project](https://source.android.com/). An example of such is Google Play Services, which has irrevocable privileges to access your files, contacts storage, call logs, SMS messages, location, camera, microphone, hardware identifiers, and so on. These apps and services increase the attack surface of your device and are the source of various privacy concerns with Android.
|
||||
|
||||
@ -107,7 +107,7 @@ It comes with substantial hardening over AOSP. DivestOS has automated kernel vul
|
||||
- Kernel patches from GrapheneOS and enables all available kernel security features via [defconfig hardening](https://github.com/Divested-Mobile/DivestOS-Build/blob/master/Scripts/Common/Functions.sh#L758). All kernels newer than version 3.4 include full page [sanitization](https://lwn.net/Articles/334747/) and all ~22 Clang-compiled kernels have [`-ftrivial-auto-var-init=zero`](https://reviews.llvm.org/D54604?id=174471) enabled.
|
||||
- GrapheneOS's [`INTERNET`](https://developer.android.com/training/basics/network-ops/connecting) and SENSORS permission toggle.
|
||||
- [Hardened memory allocator](https://github.com/GrapheneOS/hardened_malloc)
|
||||
- [Secure Exec-Spawning](android/grapheneos-vs-calyxos.md#additional-hardening)
|
||||
- [Secure Exec-Spawning](https://grapheneos.org/usage#exec-spawning)
|
||||
- Partial [bionic](https://en.wikipedia.org/wiki/Bionic_(software)) hardening patchsets from GrapheneOS
|
||||
- GrapheneOS's per-network full [MAC randomization](https://en.wikipedia.org/wiki/MAC_address#Randomization) option on version 17.1 and higher
|
||||
- Automatic reboot/Wi-Fi/Bluetooth [timeout options](https://grapheneos.org/features)
|
||||
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 594 B After Width: | Height: | Size: 454 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 718 B |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 7.2 KiB |
33
static/safari-pinned-tab.svg
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="400.000000pt" height="400.000000pt" viewBox="0 0 400.000000 400.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.14, written by Peter Selinger 2001-2017
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,400.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M0 2000 l0 -2000 2000 0 2000 0 0 2000 0 2000 -2000 0 -2000 0 0
|
||||
-2000z m1784 782 c9 -11 45 -99 80 -198 35 -98 99 -273 141 -389 43 -115 99
|
||||
-271 125 -345 26 -74 82 -228 124 -343 42 -114 76 -216 76 -226 0 -22 -44 -61
|
||||
-70 -61 -26 0 -45 28 -75 105 -15 39 -31 77 -35 85 -4 8 -15 40 -23 71 -9 31
|
||||
-24 69 -32 85 -8 16 -15 36 -15 44 0 9 -4 20 -9 25 -5 6 -14 26 -20 45 -14 47
|
||||
-56 169 -69 200 -6 14 -29 75 -51 135 -22 61 -78 214 -125 341 -131 356 -138
|
||||
378 -125 408 18 38 75 48 103 18z m-392 -179 c10 -9 18 -29 18 -44 0 -34 -24
|
||||
-53 -165 -134 -55 -31 -140 -81 -190 -110 -85 -50 -273 -157 -360 -205 -81
|
||||
-45 -106 -63 -98 -70 4 -5 85 -52 178 -105 94 -54 206 -119 250 -145 44 -25
|
||||
141 -82 215 -125 74 -43 143 -85 153 -93 32 -28 17 -89 -27 -105 -18 -7 -83
|
||||
19 -136 54 -14 9 -61 37 -105 61 -44 25 -134 77 -200 115 -294 171 -385 223
|
||||
-390 223 -3 0 -35 18 -70 41 -72 45 -87 74 -62 113 9 13 85 63 169 111 84 48
|
||||
200 116 258 150 140 82 372 216 440 254 62 34 95 38 122 14z m1446 -74 c86
|
||||
-51 182 -105 212 -122 30 -16 67 -38 82 -48 14 -11 29 -19 32 -19 4 0 66 -35
|
||||
139 -77 72 -42 165 -96 204 -119 100 -57 105 -61 101 -103 -2 -29 -11 -40 -43
|
||||
-62 -50 -33 -285 -169 -293 -169 -3 0 -13 -6 -21 -14 -9 -8 -43 -28 -76 -46
|
||||
-33 -17 -73 -39 -90 -49 -16 -10 -48 -28 -70 -41 -160 -90 -206 -117 -259
|
||||
-150 -87 -53 -111 -57 -141 -24 -47 51 -35 69 100 148 133 79 510 297 607 353
|
||||
43 24 80 48 83 53 3 5 -27 28 -67 51 -40 23 -120 70 -178 104 -58 34 -168 97
|
||||
-245 140 -289 161 -324 186 -325 228 0 25 36 57 66 57 14 0 95 -41 182 -91z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.0 KiB |